Problème avec mysql_fetch_array()

Répondre
Rosmmy
le 03/09/2006 à 23:45
Rosmmy
Bonjour,

Voîlà je suis entrain de faire un site de concours sur lequel j'ai mis un classement pour les membres (celui qui à le plus de points). Mon problème c'est que j'ai fais un tableau (début en html et la fin en php) mais il me retourne une erreur

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/queducash/www/estce-votre-jour/classement.php on line 67


voici mon code :
<?php 
$clause = " WHERE nb_points";
if (isset($pts))
{
$clause = " WHERE nb_points";
}

$ordre = " DESC LIMIT 10";
if (isset($ordre))
{
$orderby = " ORDER BY $ordre";
}

$orderby = "ORDER BY DESC LIMIT 10";

$sql = "SELECT * FROM membres" . $clause . $orderby;
$result = mysql_query($sql);

//if (mysql_num_rows($result) > 0) {
while ($data = mysql_fetch_array ($result)) {
$classement = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10");
$pseudo = $data['pseudo'];
$nbpoints = $data['nb_points'];
$ville = $data['cp'];
$pays = $data['pays'];

//affichage drapeau
if ($data['pays']=="France") {
$drp = "fr.gif";
} else {
$drp = $data['pays'];
}

echo "<tr>";

echo "<td width='145' align='center'>$pseudo</td>";
echo "<td width='111' align='center'>$nbpoints</td>";
echo "<td align='center'>$ville</td>";
echo "<td width='46' align='center'><img src='images/$drp'></td>";
}
//}
//else {
//echo "<tr><td colspan='5' align='center'><br><br><img src='images/empty.gif'><br>Aucun participation pour le moment !</td></tr>";
//}

echo "</table></div>";
?>


Voilà si quelqu'un peux m'aider ! Euh aussi vous remarqué que j'ai des ligne mis en commentaire, c'est que j'aurais aussi voulu faire c'est afficher le tableau si il y'a des résultat, sinon afficher le message comme quoi personne ne participe. Mais il me retourne une autre erreur peux être du à celle qui est retournée par mysql_fetch_array().

Merci !
XTremTourist
le 04/09/2006 à 21:24
XTremTourist
deja a ce comprend de la requete elle et pas juste

si tu fait un WHERE tu doit mettre des condition au champ
SELECT * FROM ma_table WHERE mon_champ = "mon_truc"


ou

SELECT * FROM ma_table WHERE mon_champ  LIKE "%quelque_chose%"


donc la requete SQL etant mal formaté il est normal que cela face une erreur
Rosmmy
le 05/09/2006 à 00:06
Rosmmy
Bonjour,

Bah j'ai pourtant mes les conditions

$clause = " WHERE nb_points";
if (isset($pts))
{
$clause = " WHERE nb_points";
}

$ordre = " DESC LIMIT 10";
if (isset($ordre))
{
$orderby = " ORDER BY $ordre";
}

$orderby = "ORDER BY DESC LIMIT 10";

$sql = "SELECT * FROM membres" . $clause . $orderby;


Les condition $clause (donc WHERE nb_points) et $orderby (donc ORDER BY DESC LIMIT 10) ou bien j'ai du mal comprendre ceux que sont les conditions, je ne suis qu'un débutant smiley
LupusMic
le 05/09/2006 à 01:38
LupusMic
C'est surtout que tu as oublié un espace :
$orderby = "ORDER BY DESC LIMIT 10";


Pour éviter ce genre de chose, j'écris comme ça :
$sql = "SELECT * FROM membres $clause $orderby" ;
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
XTremTourist
le 05/09/2006 à 10:43
XTremTourist
$clause = " WHERE nb_points";
if (isset($pts))
{
$clause = " WHERE nb_points";
}

$ordre = " DESC LIMIT 10";
if (isset($ordre))
{
$orderby = " ORDER BY $ordre";
}

$orderby = "ORDER BY DESC LIMIT 10";

$sql = "SELECT * FROM membres" . $clause . $orderby;


c surtout que mysql il comprend pas

ORDER BY DESC


si tu veux ordonner les champs par ordre decroisant il fo lui dire quelle champ et en autre decroisant mysql et pas devin
une requete avec ORDER BY correct resemble plus a sa
SELECT * FROM ma_table ORDER BY mon_champ ASC

plutot que ce que tu a ecri meme si tu integre sa dans des variable que tu appelle sa change rien la requete et mauvais et si tu modifi pas elle restera mauvaus

et pour appuis http://dev.mysql.com/doc/refman/5.0/fr/order-by-optimization.html

et ton WHERE la condition et pas fini tu site un champ mais pas de valeur

requete avec WHERE
SELECT * FROM ma_table WHERE champ1='ma_valeur'


et toujours la doc mysql a porté de main
http://dev.mysql.com/doc/refman/5.0/fr/where-optimizations.html

tu comprend toujours pas?
$sql = "SELECT * FROM membre ORDER BY nb_points DESC LIMIT 10";

apres si tu veux utiliser des variable dans la requete tu peux mais verifie que la requete soit bonne
Rosmmy
le 05/09/2006 à 21:34
Rosmmy
Bonsoir,

Bah ce que je souhaite faire c'est afficher un tableau avec le pseudo, la ville, le pays et le nombre de points du membre dont le membre qui a le plus de points en 1ere position du tableu. Je sais pas si ma requete est bonne mais je vais voir vos propositions.

Merci !
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours