Page 1 sur 1

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

Posté : 22 sept. 2006, 12:58
par neo765
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

Posté : 22 sept. 2006, 13:32
par Maitrepylos
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

Posté : 22 sept. 2006, 15:23
par neo765
Voilà ma table cadeau :

id prix nombre
1 13.0 2
2 10.0 1

Posté : 22 sept. 2006, 15:30
par Maitrepylos
essaye sans le
ORDER BY RAND() LIMIT $nbcadeaux2

Posté : 22 sept. 2006, 15:31
par Ryle
et si tu affichais $sql pour voir combien de fois il l'exécute et avec quelles valeurs ?

Posté : 22 sept. 2006, 15:36
par neo765
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