|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 151 ![]() |
salutatous,
j'ai créé une table 'ma_table' dans laquelle j'ai 5 champs : - id - intro - seminaire - date_debut - date_fin dans toute ma table, un seul id possèdera du contenu pour 'intro' le contenu de 'ma_table' se présentera donc comme ceci : 1, blablabla_intro, blablabla_seminaire, 2011-02-10, 2011-02-11 2, , blablabla_seminaire, 2011-05-27, 2011-05-28 3, , blablabla_seminaire, 2011-08-22, 2011-08-23 ... etc ... je souhaite afficher uniquement le contenu de 'intro' : au sein d'une boucle, avec une requête du type : ça m'affiche : - 'blablabla_intro' pour l'id 1 - rien pour l'id 2 - rien pour l'id 3 mais je souhaite afficher uniquement l'id qui possède un contenu pour 'intro' si je fait une requête du type : Code :
$sql = 'SELECT intro FROM ma_table WHERE id=1'; ET VOICI MA QUESTION : comment faire une requête qui repère et affiche automatiquement l'unique id qui possède un contenu pour 'intro' ? |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
question de débutant
Code :
SELECT id FROM latable WHERE intro NOT NULL ;
edit 2, ya tres peu de chance que cet id soit unique. Pour la condition j'hésite entre not null et LIKE '%' voir LIKE '_%'
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
|
|
00
|
|
|
#3 | |||||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
Salut
Faudrait vérifier dans la table si le valeur est réellement NULL, et non vide, car MySQL fait le distingo entre une valeur NULL est vide. D'ailleurs, vu qu'il soit autorisé de rien avoir dans ce champ "intro", il faudrait coté structure accepter les valeurs NULL. Puis coté fonctionnement s'assurer lors d'une insertion ou mise à jour de bien enregistrer une valeur NULL (et non vide). A ce moment là une requête comme ci-dessus devrait faire l'affaire : Code :
Et si tu est certain qu'il y en a qu'un qui est NULL, 1 seul intro sera retourné. Citation:
Soit obtenir l'unique ID donc l'intro est NULL ? Dans ton exemple, il n'y en a qu'1 qui ne possède pas d'intro, tous les autres en ont. Pour avoir l'unique ID dont l'intro est NULL : Code :
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|||||
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Jérémy Étudiant Inscription : octobre 2009 Messages : 236 ![]() |
NOT NULL n'est pas bon dans ce cas car la valeur est vide et non null, si tu garde cette structure tu doit plutôt appliquer une requête du type :
Code :
SELECT id FROM matable WHERE intro <> ''; |
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 151 ![]() |
tout d'abord merci à tous pour votre réactivité
j'ai essayé les solutions proposées mais j'ai des erreurs ! voici mon code de base : Code :
Code :
$sql = 'SELECT id FROM ma_table WHERE intro NOT NULL'; 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 'NOT NULL' at line 1 j'ai également essayé de mettre : Code :
$sql = 'SELECT id FROM ma_table WHERE NOT ISNULL(intro)'; j'ai donc essayé de mettre la solution de RunCodePhp : Code :
$sql = 'SELECT intro FROM ma_table WHERE intro IS NOT NULL'; si je met la requête proposée par gwharl : Code :
$sql = 'SELECT id FROM ma_table WHERE intro <> '''; Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/balablabla/balablabla... Bref je m'en sors pas... pour info j'ai créé 'intro' dans ma table, comme ceci : `intro` mediumtext NOT NULL Nico |
||
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Jérémy Étudiant Inscription : octobre 2009 Messages : 236 ![]() |
Entoure ta requête par des doubles quotes
Code :
$sql = "SELECT id FROM ma_table WHERE intro <> ''"; |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
IS NULL ou IS NOT NULL est pourtant une syntaxe 100% valide (pour MySQL au moins).
Tu ne devrais pas avoir d'erreur de syntaxe à ce niveau, juste obtenir ou pas de résultat. Donc l'erreur viendrait ailleurs. Ceci dit, comme je l'avais expliqué, si une donnée doit être NULL, il vaut mieux faire en sorte quelle soit réellement NULL plutôt qu'une pseudo valeur comme vide. NULL est pour ainsi dire une valeur à part entière (ni vide, ni 0, ni FALSE), selon le cas comme les jointure de tables, ça peut être un handicap si la valeur n'est pas réellement NULL. Aussi, dans ton code tu initialise avec $sql_bis, et après tu exploite $intro. Il y a quelque chose qui ne vas pas normalement. Mise à part ça, en mettant <> '' (ou != '') fonctionnera mieux si c'est des valeurs vides comme l'a proposé gwharl.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 151 ![]() |
gwharl,
cool, ça fonctionne si je met entre double quote MAIS si je met comme ceci : Code :
$sql = "SELECT id FROM client_" . $ma_table . "WHERE intro <> ''"; 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 |
|
|
00
|
|
|
#9 | |||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
Citation:
D'ailleurs, je te conseils d'indenter ton code SQL, ça apporte vraiment de la clarté au code, et au bout on débug plus vite et on évite certaines erreurs de syntaxe. Exemple : Code :
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|||
|
|
00
|
|
|
#10 | ||
|
Membre du Club
![]() Inscription : mars 2007 Messages : 51 ![]() |
en effet, il manque un espace entre le nom de la table et where
Code :
$sql = "SELECT id FROM client_" . $ma_table . "WHERE intro <> ''"; Code :
$sql = "SELECT id FROM client_$ma_table WHERE intro <> ''"; Code :
|
||
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
oui mais ISNULL() possede une page d'aide et les fonctions mysql ont une syntaxe, ainsi que le NOT.
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
|
|
00
|
|
|
#12 | |||
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
Citation:
si tu veux isoler le nom de la table avec une variable, utilise un système qui permet d'ajouter automatiquement les guillemets de protections.
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
|||
|
|
00
|
|
|
#13 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 151 ![]() |
merci RunCodePhp,
c'était bien l'espace manquant avant le WHERE qui mettait la mouise ! voici donc la ligne de code qui solutionne mon problème : Code :
$sql = "SELECT id FROM client_" . $ma_table . " WHERE intro <> ''";
|
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 51 ![]() |
Personnellement je n'utilise pas de requêtes dans le genre. Je parle ici uniquement de syntaxe, pas de "système" perfectionné qui ajoutera des guillemets automatiquement.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com