Classement

Résolu/Fermé
David987 Messages postés 120 Date d'inscription samedi 19 décembre 2015 Statut Membre Dernière intervention 16 octobre 2022 - Modifié le 30 nov. 2018 à 14:49
jordane45 Messages postés 38364 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 décembre 2024 - 30 nov. 2018 à 20:03
Bonjour,

J'ai un petit souci, j'aimerais faire un podium et donc les personnes sont classé normalement et ça se passe bien.
La ou j'ai un problème c'est pour les lots automatique par exemple le 1er gagne un truc le 2nd un autre truc et le 3eme un autre truc.

Voici mon code :

<?php
$attribuer_lot = $bdd->query("SELECT * FROM concours_peche WHERE numero_concours ='".$select_concours_ouvert['ID']."' ORDER BY points DESC LIMIT 1 OFFSET 0")->fetch();
$id_1er = $attribuer_lot['id'];
$attribuer_lot2 = $bdd->query("SELECT * FROM concours_peche WHERE numero_concours ='".$select_concours_ouvert['ID']."' ORDER BY points DESC LIMIT 1 OFFSET 1")->fetch();
$id_2nd = $attribuer_lot2['id'];
$attribuer_lot3 = $bdd->query("SELECT * FROM concours_peche WHERE numero_concours ='".$select_concours_ouvert['ID']."' ORDER BY points DESC LIMIT 1 OFFSET 2")->fetch();
$id_3tr = $attribuer_lot3['id'];

if ($id_1er = $don['id_membre']) {
 echo 'vous êtes premier';
}
elseif ($id_2nd = $don['id_membre']) {
 echo 'vous êtes deuxième';
}
elseif($id_3tr = $don['id_membre']){
 echo 'vous êtes troisième';
}
else
{
 
echo 'Vous n\'êtes pas sur le podium';
}
?>


Le souci c'est que l'echo "vous êtes premier" s'affiche pour les 3 premiers Hors, moi je voudrais que la phrase change en fonction de la place que le membre tien sur le podium.

Pouvez-vous m'aider please.

2 réponses

jordane45 Messages postés 38364 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 décembre 2024 4 720
30 nov. 2018 à 16:33
Bonjour,

Déjà.. une comparaison dans un IF se fait avec == ou ===
un seul "=" sert à assigner une valeur.. pas à comparer.

Ensuite... faire 3 requêtes est inutile...
Ne peux tu pas faire un seule requête récupérant les 3 premiers... puis faire une boucle sur chaque pour les traiter ?

0
David987 Messages postés 120 Date d'inscription samedi 19 décembre 2015 Statut Membre Dernière intervention 16 octobre 2022 1
30 nov. 2018 à 19:39
c'est déjà fait la boucle sauf que ça fonctionne oui, mais moi j'aimerais que le lot se fasse automatiquement à 21H chaque soir et pour ça je doit savoir distinctement le 1er, le 2eme et le 3eme
0
David987 Messages postés 120 Date d'inscription samedi 19 décembre 2015 Statut Membre Dernière intervention 16 octobre 2022 1
30 nov. 2018 à 19:52
st bon, j'ai trouvé la solution et cela fonctionne.
0
jordane45 Messages postés 38364 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 décembre 2024 4 720
Modifié le 30 nov. 2018 à 20:04

c'est déjà fait la boucle

Ben pas dans le code que tu nous montres...

ça fonctionne oui, mais moi j'aimerais que le lot se fasse automatiquement à 21H chaque soir

Et en quoi ça gêne ??


et pour ça je doit savoir distinctement le 1er, le 2eme et le 3eme

Même question que pour la précédente....:<< Et en quoi ça gêne ? >>

A ton avis... que donne cette requête ?
SELECT * 
FROM concours_peche 
WHERE numero_concours ='".$select_concours_ouvert['ID']."' 
ORDER BY points DESC LIMIT 3 

Puis un code php du genre :
$id_membre = !empty($don['id_membre']) ? $don['id_membre'] : NULL;
if($id_membre){
  $stmt = $bdd->query($sql);
  $i=0;
  $class = array('premier','second','troisième');
  $attribuer_lot = array();
  while ($row = $stmt->fetch()) {
     $attribuer_lot[$row['id']] = "Vous êtes " . $class[$i];
     $i++;
  }

  if(!empty($attribuer_lot[$id_membre])){
    echo $attribuer_lot[$id_membre]:
  }else{
    echo 'Vous n\'êtes pas sur le podium';
  }

}else{
  echo "Utilisateur inconnu !";
}

0