Problème de selection aléatoire d'une table

Eléphant du PHP | 124 Messages

22 sept. 2006, 12:58

Salut,

J'ai voulu faire un script pour extraire un nombre aléatoire de selection d'une table, il m'extrait bien les données demandée mais il m'affiche en même temps l'erreur disant qu'il n'a rien trouvé, pourquoi ?

Mon script :
<?php
$conn = mysql_connect("localhost", "root", "");

if (!$conn) {
echo "Impossible de se connecter à la base de données : " . mysql_error();
   exit;
}

if (!mysql_select_db("betgames")) {
   echo "Impossible de sélectionner la base betgames : " . mysql_error();
   exit;
}
//--
$nom_cadeaux1 = "SELECT id, nombre FROM cadeaux";

$nom_cadeaux2 = mysql_query($nom_cadeaux1);

if (!$nom_cadeaux2) {
   echo "Impossible d'exécuter la requête ($nom_cadeaux1) dans la base : " . mysql_error();
   exit;
}

if (mysql_num_rows($nom_cadeaux2) == 0) {
   echo "Aucune ligne trouvée, rien à afficher.15";
   exit;
}

while ($row = mysql_fetch_assoc($nom_cadeaux2)) {
$nom_cadeaux=$row["id"];
$nbcadeaux2 = $row["nombre"];

$sql = "SELECT idmembre2 FROM liste_attente WHERE nomcadeaux=$nom_cadeaux ORDER BY RAND() LIMIT $nbcadeaux2";
$result = mysql_query($sql);
if (!$result) {
   echo "Impossible d'exécuter la requête ($sql) dans la base : " . mysql_error();
   exit;
}
if (mysql_num_rows($result) == 0) {
   echo "Aucune ligne trouvée, rien à afficher.10";
   exit;
}
while ($row = mysql_fetch_assoc($result)) {
$idgagnant=$row["idmembre2"];
echo "ID gagnant(s) : - $idgagnant -";
}
mysql_free_result($result);
}
mysql_free_result($nom_cadeaux2);
?>
Quand je lance la page, il m'affiche :
ID gagnant(s) : - 1 -ID gagnant(s) : - 4 -Aucune ligne trouvée, rien à afficher.10
Merci
Modifié en dernier par neo765 le 29 mai 2008, 23:30, modifié 1 fois.

Mammouth du PHP | 1029 Messages

22 sept. 2006, 13:32

Bonjour,

Très certainement parce que tu as, un id et un nombre dans la table cadeau, et qui n'a pas de relation dans la table liste_attente.


Vérifie que tu n'a que 2 id et nombre dans la table cadeau.


MaitrePylos
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 124 Messages

22 sept. 2006, 15:23

Voilà ma table cadeau :

id prix nombre
1 13.0 2
2 10.0 1
Modifié en dernier par neo765 le 29 mai 2008, 23:30, modifié 1 fois.

Mammouth du PHP | 1029 Messages

22 sept. 2006, 15:30

essaye sans le
ORDER BY RAND() LIMIT $nbcadeaux2
L'expérience est la somme de toutes nos erreurs.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 sept. 2006, 15:31

et si tu affichais $sql pour voir combien de fois il l'exécute et avec quelles valeurs ?

Eléphant du PHP | 124 Messages

22 sept. 2006, 15:36

essaye sans le
ORDER BY RAND() LIMIT $nbcadeaux2
sans le 'ORDER BY RAND() LIMIT $nbcadeaux2' il affiche :
ID gagnant(s) : - 3 -ID gagnant(s) : - 1 -ID gagnant(s) : - 2 -ID gagnant(s) : - 4 -Aucune ligne trouv�e, rien � afficher.10
et si tu affichais $sql pour voir combien de fois il l'exécute et avec quelles valeurs ?
Le echo $sql affiche :
SELECT idmembre2 FROM liste_attente WHERE nomcadeaux=1 ORDER BY RAND() LIMIT 2
SELECT idmembre2 FROM liste_attente WHERE nomcadeaux=1 ORDER BY RAND() LIMIT 2
Aucune ligne trouv�e, rien � afficher.10
Merci