Utilisation SELECT, LIKE + variable
Résolu
t671
Messages postés
1476
Date d'inscription
Statut
Membre
Dernière intervention
-
t671 Messages postés 1476 Date d'inscription Statut Membre Dernière intervention -
t671 Messages postés 1476 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Select like
- Voir like instagram - Guide
- Coco like - Accueil - Réseaux sociaux
- Please select boot device - Forum Windows
- Wawacity like - Accueil - Outils
- Supprimer like instagram - Forum Facebook
9 réponses
OK !!!!!
Avec AND date_naissance != "", si pour un nom A j'ai une ou plusieurs "date" existantes, et une ou plusieurs "date" vides, j'affiche du vide, au lieu d'afficher la dernière "date" minimum existante.
Si pour un nom B je n'ai pas de "date" existante, mais uniquement une ou plusieurs "date" vides, je n'ai pas d'affichage du tout ......
C'est un peu tordu, non ? ;o)
Avec AND date_naissance != "", si pour un nom A j'ai une ou plusieurs "date" existantes, et une ou plusieurs "date" vides, j'affiche du vide, au lieu d'afficher la dernière "date" minimum existante.
Si pour un nom B je n'ai pas de "date" existante, mais uniquement une ou plusieurs "date" vides, je n'ai pas d'affichage du tout ......
C'est un peu tordu, non ? ;o)
Problème de guillemets, essaye ça :
$select = 'SELECT nom,COUNT(*) AS nb FROM ville WHERE nom LIKE "'.$rechlettre.'" GROUP BY nom ORDER BY nom ASC';
C'est bon ! J'ai trouvé :
WHERE nom LIKE '$lettre%' et je n'utilise pas $rechlettre = ' ' . $lettre . '%';
WHERE nom LIKE '$lettre%' et je n'utilise pas $rechlettre = ' ' . $lettre . '%';
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merciiiiiiiiiiiii !
Dans ma base mysql, j'ai des champs défini en "Varchar" qui peuvent être vide.
Si je fait une requête dessus pour trouver la valeur minimum du champs ( ....MIN( RIGHT(varch, 4) ) AS txt....) j'ai une réponse vide, puisque le champs est vide et considéré comme NULL.
Comment faire pour que la valeur "vide" ne soit pas considérer comme une valeur minimum numérique, et que le résultatv se fasse sur la prochaine occurence ?
Dans ma base mysql, j'ai des champs défini en "Varchar" qui peuvent être vide.
Si je fait une requête dessus pour trouver la valeur minimum du champs ( ....MIN( RIGHT(varch, 4) ) AS txt....) j'ai une réponse vide, puisque le champs est vide et considéré comme NULL.
Comment faire pour que la valeur "vide" ne soit pas considérer comme une valeur minimum numérique, et que le résultatv se fasse sur la prochaine occurence ?
Si j'écris
ou
De toute façon, je cherche un peu plus compliqué ........
C'est à dire que je lis un enregistrement Arthur (il peut y avoir plusieurs enregistrements nommés Arthur) qui possède un champs "date".
1) Si tous les enregistrements Arthur ont un champs "date", j'affiche le minimum. ( => Ca, c'est OK)
2) S'il existe un (ou plusieurs) champs "date" vide dans les enregistrements Arthur, j'en fait abstraction, et je veux afficher le champs minimum existant. ( => Actuellement, j'affiche le champs vide car il est considéré comme minimum).
3) Si tous les champs "date" sont vides, j'affiche un résultat vide. ( => Ca, c'est OK)
Actuellement, j'arrive à faire ces résultat (1,2 ou 3) séparemment, en modifiant la base (supression ou pas des champs "date" vide, mais je n'arrive pas à combiner les trois ensemble !
J'espère avoir été suffisamment compréhensible.
Y a t'il une commade pour faire cela ? Ou faut-il paramétrer le champs "date" correctement sous Mysql pour y arriver ?
$select = 'SELECT nom,COUNT(*) AS nb, MIN( RIGHT(date_naissance, 4) ) AS date WHERE date_naissance != " " FROM ville WHERE nom LIKE "'.mysql_real_escape_string($lettre).'%" GROUP BY nom ORDER BY nom ASC';
ou
..... WHERE date_naissance <> " " .........j'ai Erreur : You have an error in your SQL syntax.
De toute façon, je cherche un peu plus compliqué ........
C'est à dire que je lis un enregistrement Arthur (il peut y avoir plusieurs enregistrements nommés Arthur) qui possède un champs "date".
1) Si tous les enregistrements Arthur ont un champs "date", j'affiche le minimum. ( => Ca, c'est OK)
2) S'il existe un (ou plusieurs) champs "date" vide dans les enregistrements Arthur, j'en fait abstraction, et je veux afficher le champs minimum existant. ( => Actuellement, j'affiche le champs vide car il est considéré comme minimum).
3) Si tous les champs "date" sont vides, j'affiche un résultat vide. ( => Ca, c'est OK)
Actuellement, j'arrive à faire ces résultat (1,2 ou 3) séparemment, en modifiant la base (supression ou pas des champs "date" vide, mais je n'arrive pas à combiner les trois ensemble !
J'espère avoir été suffisamment compréhensible.
Y a t'il une commade pour faire cela ? Ou faut-il paramétrer le champs "date" correctement sous Mysql pour y arriver ?
Essai plutôt:
Il ne faut écrire qu'une seule fois "WHERE" dans la requête et après le "FROM".
Pour ajouter un second critère de recherche tu l'ajoute avec "AND".
$select = 'SELECT nom,COUNT(*) AS nb, MIN( RIGHT(date_naissance, 4) ) AS date FROM ville WHERE nom LIKE "'.mysql_real_escape_string($lettre).'%" AND date_naissance != "" GROUP BY nom ORDER BY nom ASC';
Il ne faut écrire qu'une seule fois "WHERE" dans la requête et après le "FROM".
Pour ajouter un second critère de recherche tu l'ajoute avec "AND".
Ouaips ! Ca m'a l'air pas mal ! Je vais essayer ......
J'avais commencé à imbriquer des if, else et select dans ma boucle while. Mais avec mysql_num_rows() ce sera peut-être plus propre ..........
J'avais commencé à imbriquer des if, else et select dans ma boucle while. Mais avec mysql_num_rows() ce sera peut-être plus propre ..........
J'ai testé avec mysql_num_rows, mais je me retrouve avec le même problème.
C'est à dire que les enregistrements avec le champs date vide ne sont pas pris en compte dans le nombre de nom nb !
Et si je fais en sorte qu'ils apparraissent dansx le total nb,
Si j'enlève AND date_naissance != " " , la date vide est prise en compte comme minimum.
Ce qu'il faudrait, c'est si date_naissance = " ", lire le date_naissance suivant ......
C'est à dire que les enregistrements avec le champs date vide ne sont pas pris en compte dans le nombre de nom nb !
Et si je fais en sorte qu'ils apparraissent dansx le total nb,
Si j'enlève AND date_naissance != " " , la date vide est prise en compte comme minimum.
Ce qu'il faudrait, c'est si date_naissance = " ", lire le date_naissance suivant ......
Ainsi par exemple: