Mysql non valide

Eléphanteau du PHP | 25 Messages

31 août 2006, 11:20

Bonjour voici mes scripts
$rq = "SELECT DISTINCT discipline FROM Club ORDER BY discipline ASC";
$result = mysql_query($rq)
or die ("pas bon");

echo "<form action='club2.php' method='post'>
<select name='discipline'> \n";
while ($ligne = mysql_fetch_array($result))
{extract ($ligne);
echo "<option value='$discipline'>$discipline \n";
}
echo"</select> \n";
echo "<input type='submit'"."value=\"Envoyer\"></form>\n";
Ceci est le formulaire
if (isset($_POST['discipline'])) 
{

$reponse = mysql_query('SELECT * FROM Club ORDER BY id ASC LIMIT '  . $discipline . ',')
or die (mysql_error());
while ($donnees = mysql_fetch_array($reponse))
{
    echo '<p>' . $donnees['ville'] . '</p><br />'; 
	echo  '<p>' . $donnees['nomp'] . '</p>' ;
	echo '<p>' . $donnees['texte'] . '</p>';
	
}
}
et le probleme vient de la on me dit
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
je ne trouve pas le probléme de syntax :oops: Merci de votre aide

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

31 août 2006, 11:34

Affiche la requête que tu as dans ton formulaire. Tu peux la stocker dans une variable $rq comme tu l'as fait pour ta première requete, et ainsi l'afficher avant de l'exécuter...

Tu verras tout de suite ce qui cloche en fin de ligne ;)

Eléphanteau du PHP | 25 Messages

31 août 2006, 11:47

J'ai deja un peu plus avancé mais maintenant il me dise
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
:cry:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 août 2006, 11:58

Est-ce que tu as réellement affiché la requete générée ? Comme te l'a conseillé Ryle ?

Parce que tu as une erreur phénoménale vers la fin de ta requete :shock:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

31 août 2006, 12:09

Suggèrerais-tu d'insérer un
echo "La requête générée est : ",$reponse;
:wink:

ViPHP
ViPHP | 1024 Messages

31 août 2006, 12:15

le problème se trouve dans le LIMIT, vérifie la syntaxe dans la doc de mysql.

A+

Pascal

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

31 août 2006, 12:34

Wouaaaah, si tu dis tout... :o

Eléphanteau du PHP | 25 Messages

31 août 2006, 14:08

J'ai tout essayé j'y arrive pas j'ai meme mis avec la condition where à la place de LIMIT parce qu'en relisant les cours je me suis apercus qu'on utilisait LIMIT qu'avec des chiffres je me trompe ??? :?: :?: :?:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

31 août 2006, 14:50

je me suis apercus qu'on utilisait LIMIT qu'avec des chiffres je me trompe ??? :?: :?: :?:
Et si tu regardais la doc en ligne ? :roll:
http://dev.mysql.com/doc/refman/5.1/en/select.html ;)

Eléphanteau du PHP | 25 Messages

31 août 2006, 15:05

C'est trés gentil mais plus j'essaye de comprendre et moin j'y arrive alors pourriez vous me montrer ou j'ai faux!

et me l'espliquez j suis un debutant j'ai essayé de me debrouiller tout seul jusqu'ici mais la j'y arrive plus je comprend pas.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

31 août 2006, 15:11

Si tu lis la page que je t'ai indiquée,
tu trouveras l'explication dont tu as besoin pour utiliser LIMIT.

Eléphanteau du PHP | 25 Messages

31 août 2006, 15:21

:( non j'ai pas trouvé je dois etre un idiot surement !!!

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

31 août 2006, 15:27

The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement.
LIMIT takes one or two numeric arguments,
which must both be non-negative integer constants (except when using prepared statements).

With two arguments, the first argument specifies the offset of the first row to return,
and the second specifies the maximum number of rows to return.
The offset of the initial row is 0 (not 1):
//
SELECT * FROM tbl LIMIT 5,10;  //Retrieve rows 6-15

Eléphanteau du PHP | 25 Messages

31 août 2006, 15:31

ok merci j'ai compris donc la condition LIMIT n'est pas la bonne il me faut une autre condition en faite j'ai un formulaire comme vous avez vu et a partir de ce formulaire on choisit un discipline et ensuite par rapport a cette discipline je voudrais une requete qui puisse dire je veux que tu cherche dans la bdd club tous les club de cette discipline.

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

31 août 2006, 16:12

Le LIMIT a en effet pour seul et uniquement but de "limiter" le nombre de résultat retourner. Si jamais il y a quelques millions de club trouvés par ta requête, ça permet de les afficher par pages de 5, 10, 37, ... plutôt que d'en faire une seule avec le million de résultat :)

Pour mettre des conditions ou des filtres dans ta requête, c'est le WHERE qu'il faut utiliser :)