Probleme avec WHERE
Kepsylis
-
Kepsylis -
Kepsylis -
Bonjour,
J'ai donc un probleme avec WHERE :
Les faits : Sur ma page d'administration de mon site, j'ai une case correspondant à "maj" , je l'a rempli et je lui donne la valeur "D" dans cet exemple et je veux que sur l'autre page, ca sélectionne toute les série que j'ai répertorié dont maj = D.
Voici mon code :
<?php
if (isset($_GET['page']))
{
$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('SELECT * FROM fiche_series WHERE maj = D ORDER BY titre LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage) or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse))
{
?>
Quand j'effectue cette opération , j'obtient le message suivant :
Unknown column 'D' in 'where clause'.
J'espere que vous trouverez une solution merci d'avance.
PS : J'ai essayé plusieur autre méthode comme avec LIKE , ou $D , '.$D.' mais ca ne marche toujours pas.
J'ai donc un probleme avec WHERE :
Les faits : Sur ma page d'administration de mon site, j'ai une case correspondant à "maj" , je l'a rempli et je lui donne la valeur "D" dans cet exemple et je veux que sur l'autre page, ca sélectionne toute les série que j'ai répertorié dont maj = D.
Voici mon code :
<?php
if (isset($_GET['page']))
{
$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('SELECT * FROM fiche_series WHERE maj = D ORDER BY titre LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage) or die(mysql_error());
while ($donnees = mysql_fetch_array($reponse))
{
?>
Quand j'effectue cette opération , j'obtient le message suivant :
Unknown column 'D' in 'where clause'.
J'espere que vous trouverez une solution merci d'avance.
PS : J'ai essayé plusieur autre méthode comme avec LIKE , ou $D , '.$D.' mais ca ne marche toujours pas.
A voir également:
- Probleme avec WHERE
- Where is it - Télécharger - Gestion de fichiers
- Where is host file - Guide
- Where is my movie - Télécharger - Divers TV & Vidéo
- Where is appdata - Guide
- Select from fleurs where prix 10 - Forum Python
11 réponses
Le commentaire suivant : // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
n'est pas adapté a la situation car j'ai repris le systeme de pagination de mon livre d'or en en changeant que les donnez et non les commentaires
n'est pas adapté a la situation car j'ai repris le systeme de pagination de mon livre d'or en en changeant que les donnez et non les commentaires
Bonjour
En Mysql, les textes (non nombres) qui ne sont pas entourés de ' ni de " sont pris pour des noms de colonne. C'est d'ailleurs ce que tu fais pour maj, pourquoi ce serait différent pour D ?
Un texte doit être entouré de " ou de '.
Tu as besoin de WHERE maj = 'D'
J'ai essayé plusieur autre méthode comme avec LIKE , ou $D , '.$D.' mais ca ne marche toujours pas. Je te conseille une autre méthode : réfléchir au message d'erreur affiché. S'il te dit quil ne connaît pas la colonne D, c'est qu'il prend D pour une colonne. Quelles sont les règles d'écriture d'un nom de colonne ? voir manuel mysql
Quand au $D, il est franchement irrationnel.
En Mysql, les textes (non nombres) qui ne sont pas entourés de ' ni de " sont pris pour des noms de colonne. C'est d'ailleurs ce que tu fais pour maj, pourquoi ce serait différent pour D ?
Un texte doit être entouré de " ou de '.
Tu as besoin de WHERE maj = 'D'
J'ai essayé plusieur autre méthode comme avec LIKE , ou $D , '.$D.' mais ca ne marche toujours pas. Je te conseille une autre méthode : réfléchir au message d'erreur affiché. S'il te dit quil ne connaît pas la colonne D, c'est qu'il prend D pour une colonne. Quelles sont les règles d'écriture d'un nom de colonne ? voir manuel mysql
Quand au $D, il est franchement irrationnel.
Justement ' et " je les ai essayé mais ca prend toujours ca comme une colonne.
De plus, j'ai réfléchi par rapport au faite que D ( pour cet exemple ) été une colonne, mais je ne peux pas me permettre de créé une colonne pour chaque lettre. Ca me prendrais trop de temps pour l'utiliser par la suite.
De plus, j'ai réfléchi par rapport au faite que D ( pour cet exemple ) été une colonne, mais je ne peux pas me permettre de créé une colonne pour chaque lettre. Ca me prendrais trop de temps pour l'utiliser par la suite.
Rectification avec D entouré de ' ou de " , le message d'erreur est le suivant :
Parse error: syntax error, unexpected T_STRING in /mnt/102/sda/4/8/newseries/d.php on line 116
Ma ligne 116 est celle ci :
$reponse = mysql_query('SELECT * FROM fiche_series WHERE maj = D ORDER BY titre LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage) or die(mysql_error());
Parse error: syntax error, unexpected T_STRING in /mnt/102/sda/4/8/newseries/d.php on line 116
Ma ligne 116 est celle ci :
$reponse = mysql_query('SELECT * FROM fiche_series WHERE maj = D ORDER BY titre LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage) or die(mysql_error());
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Justement ' et " je les ai essayé mais ca prend toujours ca comme une colonne
Non, ça n'est pas vrai. Tu écris ça sans avoir fait une vérification sérieuse.
On n'a pas à 'essayer' les ' et les ", il faut mettre le bon. Si tu confonds programmation et Loto, tu n'iras pas loin.
C'est vrai que le WHERE maj = 'D' tel que je te l'ai donné ne marche pas (je ne l'ai pas fait exprès). Si tu l'as essayé, le message d'erreur n'a sûrement pas été qu'il ne connaissait pas la colonne D.
'SELECT * FROM fiche_series WHERE maj = 'D' ORDER BY titre LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage
Tu vois que dans cette requête, la chaîne (qui commence par une apostrophe) se termine avec l'apostrophe suivante, donc après le =. Ensuite, il y a un D qui 'débarque' comme ça : ça n'est pas une variable, pas une fonction etc... juste une erreur de syntaxe.
Par contre, si tu utilises des " autour du D, la chaîne va bien jusqu'au LIMIT. Ensuite, il y a un point qui veut dire que la suite fait partie de la même chaine etc. Là c'est correct.
Si tu as essayé avec "D" ça a dû marcher. Il est possible qu'il reste une erreur (je n'en vois pas mais...). ça n'est sûrement pas une erreur de colonne D inconnue
Non, ça n'est pas vrai. Tu écris ça sans avoir fait une vérification sérieuse.
On n'a pas à 'essayer' les ' et les ", il faut mettre le bon. Si tu confonds programmation et Loto, tu n'iras pas loin.
C'est vrai que le WHERE maj = 'D' tel que je te l'ai donné ne marche pas (je ne l'ai pas fait exprès). Si tu l'as essayé, le message d'erreur n'a sûrement pas été qu'il ne connaissait pas la colonne D.
'SELECT * FROM fiche_series WHERE maj = 'D' ORDER BY titre LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage
Tu vois que dans cette requête, la chaîne (qui commence par une apostrophe) se termine avec l'apostrophe suivante, donc après le =. Ensuite, il y a un D qui 'débarque' comme ça : ça n'est pas une variable, pas une fonction etc... juste une erreur de syntaxe.
Par contre, si tu utilises des " autour du D, la chaîne va bien jusqu'au LIMIT. Ensuite, il y a un point qui veut dire que la suite fait partie de la même chaine etc. Là c'est correct.
Si tu as essayé avec "D" ça a dû marcher. Il est possible qu'il reste une erreur (je n'en vois pas mais...). ça n'est sûrement pas une erreur de colonne D inconnue
J'ai mis longtemps à écrire le message précédent, il s'est croisé avec le tien.
Tu n'as pas essayé avec ". En tous cas, tu n'as pas la même erreur
Tu n'as pas essayé avec ". En tous cas, tu n'as pas la même erreur
Merci Toto !
Tu avais raison il fallait les guillemet autour du D et vérifié le bon enchainement de l'opération !
Encore merci !
Tu avais raison il fallait les guillemet autour du D et vérifié le bon enchainement de l'opération !
Encore merci !
$reponse = mysql_query(" SELECT * FROM `fiche_series` WHERE `maj` = 'D' ORDER BY `titre` LIMIT '$premierMessageAafficher' , '$nombreDeMessagesParPage' ") or die(mysql_error());
ça me semble plus correct, car si la requete est entoutée de ", php va remplacer automatiquement les variables par leurs valeur et comme ça la regle devien simple, les champs sont entourés de `` (AltGr + 7 en clavier français) et les valeur et variables sont entourées par des quotes ' '.
Essaies ça doit marcher
ça me semble plus correct, car si la requete est entoutée de ", php va remplacer automatiquement les variables par leurs valeur et comme ça la regle devien simple, les champs sont entourés de `` (AltGr + 7 en clavier français) et les valeur et variables sont entourées par des quotes ' '.
Essaies ça doit marcher