Probleme avec WHERE

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.
A voir également:

11 réponses

Kepsylis
 
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
0
toto
 
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.
0
kepsylis
 
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.
0
Kepsylis
 
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());
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
toto
 
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
0
toto
 
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
0
Kepsylis
 
Merci Toto !
Tu avais raison il fallait les guillemet autour du D et vérifié le bon enchainement de l'opération !

Encore merci !
0
briiiiix Messages postés 624 Statut Membre 18
 
$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
0
Kepsylis
 
Okay, en tout cas merci d'avoir répondu
A bientot peut être !
0
briiiiix Messages postés 624 Statut Membre 18
 
N'oublie pas de mettre cette discussion en résolu si c'est le cas
0
Kepsylis
 
Je suis désolé c'est la premiere fois que je poste , je ne sais pas comment faire.
0