8791 sujets

Développement web côté serveur, CMS

Par défaut Bool sous Mysql
Bonjour,

J'expose ma problématique.

J'ai une table dans une BDD qui devra alimenter deux tableau lors de la lecture de celle-ci.

Donc mon idée pour alimenter le tableau 1 ou 2 c'étais de rajouter une condition WHERE avec un champ de type tinyint(1).
le champ de type tinyint se nomme alter

Je défini auparavant dans ma tete qui va safficher ou

élément tableau 1 = 0
élément tableau 2 = 1

Donc ma requête ressemblerai pour le tableau 1
j'ai oublier de dire que l'affichage se fait dans une page web en PHP

"SELECT mes champs a afficher FROM matble WHERE alter= 0";


la réponse à l'affichage est


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 'WHERE alter=0' at line 1

d'après moi je crois que j'ai pas bien compris comment marche le type TINYINT.

j'ai lu la doc et tout mais bon si quelqu'un pouvais m'éclairer su ce point se serai super sympa.
Aussi je ne sais pas si c'est la meilleure méthode à utiliser, donc si vous avez d'autres idées, c'est avec grand plaisir :;)

merci d'avance pour votre aide . @+++
Modifié par Zombiman (26 Jul 2010 - 14:01)
Salut,
Zombiman a écrit :
le champ de type tinyint se nomme alter
À mon avis le problème il est plutôt là.

Appeler un champ "alter", c'est pas une super idée vu que c'est déjà le nom de la commande SQL pour modifier la structure d'une table. C'est pareil que si tu appelais une table SELECT, UPDATE, DELETE, etc.

Cela dit, si tu tiens vraiment à garder ce nom c'est faisable, mais pour bien distinguer la commande du nom de la table, il faudra toujours que ce dernier soit mentionné entre deux accents graves (qui normalement sont optionnels). Essaye cette requête par exemple :
SELECT mes champs a afficher FROM matble WHERE `alter`= 0
je peut changer le nom mais cela ne marche toujours pas, j'ai toujours la même erreur

j'ai changer le nom en mettant al
Salut Zombiman »

Bool par défaut ? - Boolean aussi depuis la version 4.1.0.
Synonyme de Bool - Celui-ci équivaut à TINYINT(1). Donc : TRUE.

Il y a des alias comme « NULL - TRUE - FALSE », en remplacement de 1 ou 0.
Peut-être peux tu l'essayer si ta version est 4.1.0 +.

Je dis celà parce que ta requête semble correct.
Sauf que ALTER est « réservé ». Et çà concerne les colonnes.

++ zardoz.
Modifié par zardoz (23 Jul 2010 - 21:17)
marcv a écrit :
Quelle est exactement ta requête ?


voici ma requete

$query = "SELECT DATE_FORMAT(date,'%d-%m-%Y') AS datefr, horaire, titre, compagnie, age, categorie, dispo, lien, alter FROM prog_saison order by datefr ASC WHERE `alter`= 1 ";


j'ai cru comprendre que alter étais un mot réservé et qu'il fallais utiliser des `apostrophes inversées` (Alt Gr + 7)
mais bon dans le cas ou j'utilse un autre mot pour mon champ j'ai toujours la même erreur

zardoz j'utilise mysql version 5+
Modifié par Zombiman (26 Jul 2010 - 09:38)
1- tu n'as pas mis les accents graves sur le alter avant FROM
2- ORDER BY datefr ASC ne peut pas aller avant le WHERE. On récupère les données et ensuite on les classe. Pas l'inverse.
Modifié par marcv (26 Jul 2010 - 11:10)
plop,


ouais donc la requête que j'avais mise je savais qu'il me manquais les cote inversées, par contre je savais pas pour la condition de tri,

cela marche à merveille, merci à toi marcv Smiley cligne