Page 1 sur 1
problème de version de serveur???
Posté : 06 sept. 2007, 15:32
par dick-perron
Quelqu'un pourrait m'expliquer pourquoi la requête suivante fonctionne sur easyphp 2.0.0.0 mais pas sur mon serveur linux mandrake 10.1...
Code : Tout sélectionner
$rq = " SELECT nom, groupe, COUNT(motif)
FROM rapports AS t
INNER JOIN liste_eleves AS s
ON t.id_eleve=s.id_eleve
WHERE motif = 'retard'
GROUP BY nom
ORDER BY COUNT(motif) DESC
";
$result = mysql_query ($rq);
Si j'enlève le COUNT, ça passe!
Si c'est une question de version de serveur, y a t-il une solution autre qu'une mise à jour de celui-ci car j'ai peur de tout bousiller si j'y touche parce que tout le reste fonctionne. Est-ce que je pourrais juste modifier ma requête ?
Posté : 06 sept. 2007, 16:22
par Sékiltoyai
"ne pas fonctionner" ca ne veut rien dire. Donne nous l'erreur ou le problème.
Posté : 06 sept. 2007, 16:41
par dick-perron
Bien sûr.... mon erreur!
Voici le message d'erreur!
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/html/gestion/afficher_classement_retard.php on line 36
Nom de l'élève Groupe Nombre de retards
et voici la fameuse ligne 36
36...... $bg = '#dddddd';
37...... while ($ligne = mysql_fetch_array($result, MYSQL_NUM))
... {
$cp=($ligne[0]);
$bg = ($bg=='#dddddd' ? '#ffffff' : '#dddddd');
echo ' <tr bgcolor="'.$bg, '">
<td align="left">'.$ligne[0],'</td>
<td align="center">'.$ligne[1],'</td>
<td align="center">'.$ligne[2],'</td>
</tr>
';
}
Posté : 06 sept. 2007, 17:18
par Ryle
Faisons confiance à php.. s'il dit que $result n'est pas une ressource mysql valide, y a de grande chance que $result ne soit pas une ressource mysql valide. Il faut donc aller voir ce que contient $result, à savoir : $result = mysql_query ($rq);
On peut donc supposer que mysql_query() n'a pas retourné de ressource mysql valide. On peut donc se demander s'il n'y a pas eu une erreur lors de l'exécution de la requête, et le plus simple pour le vérifier c'est d'utiliser or die(mysql_error()) ou d'afficher la requête génétée et de la jouer dans mysql ou phpmyadmin.
A vérifier si la connexion à la base à aboutie, si les tables existes, si les champs sont présents, et s'il n'y a pas d'ambiguité quant à la table dans laquelle ils se trouvent... On peut aussi regarder la requête et voir entre autre qu'il manque le champ "groupe" présent dans le select mais pas dans le group by, alors qu'aucune fonction de groupe ne lui est appliquée.
Posté : 06 sept. 2007, 17:58
par dick-perron
J'ai trouvé. Il fallait mettre des ' à la clause ORDER BY. ce qui donne
$rq = " SELECT nom, groupe, COUNT(motif)
FROM rapports AS t
INNER JOIN liste_eleves AS s
ON t.id_eleve=s.id_eleve
WHERE motif = 'retard'
GROUP BY nom
ORDER BY 'COUNT(motif)' DESC
";
$result = mysql_query ($rq);
Merci pour l'aide!
Posté : 06 sept. 2007, 20:56
par Sékiltoyai
J'ai trouvé. Il fallait mettre des ' à la clause ORDER BY. ce qui donne
Laisse moi en douter. Vérifie les résultats parce que je pense que tu vas avoir des résultats erronés…
Posté : 06 sept. 2007, 21:03
par dick-perron
merci, je vais vérifier ce soir!
Posté : 06 sept. 2007, 21:10
par Sékiltoyai
Et sinon, c'est réglé
ce sujet ?
Posté : 06 sept. 2007, 21:12
par dick-perron
oui! enfin, pour mon application!
Posté : 07 sept. 2007, 01:05
par Sékiltoyai
Ce sont tes élèves qui vont être contents
