Erreur avec la fonction MAX

tete278
Invité n'ayant pas de compte PHPfrance

06 janv. 2009, 09:27

Bonjour à tous,

Je cherche à récupérer la plus grande valeur contenue dans le champ 'id' de la table exo_resultats et obtiens l'erreur suivante :
Notice: Undefined variable: max in C:\Program Files\EasyPHP 2.0b1\www\Site\Espace membre\membreSuite.php on line 58

NB: La ligne 58 en question est la suivante:
$selmax = "SELECT * FROM exo_resultats WHERE id=(select MAX(id) from exo_resultats)";

J'ai beau chercher, ...., il doit bien y avoir une erreur mais j'avoue ne pas la voir.
J'ajoute que le champ id est bien présent dans la table exo_resultats , qu'il est de type int(10) et que je teste avec PHP 5.2.0 et Mysql 5.0.27

Si une âme charitable et plus éclairée que la mienne voulait se pencher sur mon problème, ce serait avec grand plaisir.

tete278

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

06 janv. 2009, 09:34

Bonjour,

Ton message d'erreur indique que le problème est à cause d'une variable $max non définie, or il n'y a pas cette variable dans la ligne que tu nous donne => tu ne regarde pas la bonne ligne.

Par ailleurs, je pense que ta requête MySQL peut être simplifiée comme ceci:
$selmax = "SELECT * FROM exo_resultats ORDER BY id DESC LIMIT 1";
Quand tout le reste a échoué, lisez le mode d'emploi...

tete278
Invité n'ayant pas de compte PHPfrance

06 janv. 2009, 09:43

Bonjour @rthur,

Merci tout d'abord pour ton intervention.
Parce que l'on est souvent trop sûr de soi, je viens de faire une recherche (avec CTRL + F) et confirme qu'il n'y a nulle part le terme MAX dans mon script, ailleurs que dans cette ligne 58. Il semble qu'il y aie une confusion entre la fonction MAX et une variable.
Aurais-tu une autre piste.
Merci encore.
tete278

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

06 janv. 2009, 09:50

Et tu regardes dans le bon fichier (membreSuite.php) ?

Parce l'erreur que tu rencontres est une erreur PHP or tu utilises la fonction MAX de MySQL donc PHP ne devrait voir ta requête avec MAX que comme une chaine de caractères (et donc ne peut pas lever d'erreur pour cela).

Si tu ne trouves pas essaye avec ma requête SQL qui n'utilise pas MAX et qui est plus optimisée que celle que tu utilises à l'heure actuelle.
Quand tout le reste a échoué, lisez le mode d'emploi...

tete278
Invité n'ayant pas de compte PHPfrance

08 janv. 2009, 09:18

Bonjour @rthur et merci pour ton intervention,

J'ai comme tu le préconisais modifié mon script qui devient le suivant :
// Code
58:$selmax = "SELECT * FROM exo_resultats ORDER BY id DESC LIMIT 1";
59:$result =mysql_query($selmax,$link) or die ('Erreur :'.mysql_errno().mysql_error());
60:$rows = mysql_num_rows($result);
61:while ($rows=mysql_fetch_array($result))
62:{
63: $id = rows['id'];
64:}
65:echo $id;


J'ai maintenant l'erreur suivante : Parse error: parse error, unexpected '[' in C:\Program Files\EasyPHP 2.0b1\www\Site\php\Espace membre\membreSuite.php on line 63

Je rappelle que je souhaite connaître la plus grande valeur du champ id.

Cordialement,

tete278

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

08 janv. 2009, 09:26

$id = rows['id']; 
->
$id = $rows['id']; 
Tu aurai pu trouver l'erreur par toi-même là ;)
Quand tout le reste a échoué, lisez le mode d'emploi...

tete278
Invité n'ayant pas de compte PHPfrance

08 janv. 2009, 17:36

Effectivement, c'était bien ça. Merci @rthur ainsi que tous ceux qui ont réfléchi sur mon cas.

tete278