Besoin d'aide pour le SQL

Résolu/Fermé
Utilisateur anonyme - 30 janv. 2008 à 11:10
 Utilisateur anonyme - 30 janv. 2008 à 15:48
Bonjour,
Je suis en train de programmer un annuaire en PHP.
Je suis débutant en PHP mais je connais les principes de programmations et d'algorithmes.

J'utilise une base MySQL livrée avec le logiciel WAMP.

Je m'attaque à la recherche des personnes enregistrées dans la base de données. J'ai programmé en HTML un formulaire qui permet d'exécuter une recherche en fonction d'information enregistrées dans 4 textbox (input en HTML)

Mon problème c'est que je n'arrive pas à construire une requête SQL correcte. En effet, j'aimerais faire marcher ma requête même si les champs n'ont pas été remplir (j'ai donc utilisé * et % mais aucun ne marche)

Voici ma requête SQL
SELECT Nom_PERSONNE, Prenom_PERSONNE, Trigramme_PERSONNE, Role_PERSONNE, Societe_PERSONNE, Tel_Fax_PERSONNE, Raccourci_PERSONNE, Mobile_PERSONNE, Mail_PERSONNE
FROM PERSONNE
WHERE Nom_PERSONNE = 'SAB %'
OR Prenom_PERSONNE = '%'
OR Tel_Fax_PERSONNE = '%'
OR Societe_PERSONNE = '%'


Merci de votre aide

17 réponses

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
30 janv. 2008 à 14:42
Ce passage parait interessant:

expr LIKE pat [ESCAPE 'escape-char']

La réalisation d'expression utilisant les expressions régulières simples de comparaison de SQL. Retourne 1 (TRUE) ou 0 (FALSE). Avec LIKE, vous pouvez utiliser les deux jokers suivants :

Char Description
% Remplace n'importe quel nombre de caractères, y compris aucun
_ Remplace exactement un caractère

mysql> SELECT 'David!' LIKE 'David_';
-> 1
mysql> SELECT 'David!' LIKE '%D%v%';
-> 1
2
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
30 janv. 2008 à 11:16
Salut,

Vous devez peut être utiliser "Like" au lieu de "=".
0
MyTux Messages postés 222 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 26 mars 2013 44
30 janv. 2008 à 11:18
Bonjour,

Je pense comme Tarek_dotzero avec un 'LIKE' au lieu du signe "=" ça peut fonctionner.
0
Utilisateur anonyme
30 janv. 2008 à 11:18
ok je vais essayer

c fait , cela ne fonctionne pas

pour voir sie cela fonctionne j'ai mis juste
WHERE Nom_PERSONNE LIKE 'SAB *' cela n'a pas marché
j'ai donc mis
WHERE Nom_PERSONNE LIKE 'SAB %' cela n'a pas marché non plus

0

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

Posez votre question
carbooky Messages postés 57 Date d'inscription mercredi 16 janvier 2008 Statut Membre Dernière intervention 1 mai 2008 11
30 janv. 2008 à 11:23
Bonjour
Comment test tu ta requete (directement avec ton script php ou avec mysql)?
Je te demande cela car la requete me parait juste.
0
Utilisateur anonyme
30 janv. 2008 à 11:24
b avant de l'essayer en PHP je l'essaye sur php MyAdmin pour voir si au moins cela me renvoie une valeur et cela me renvoie rien du tout
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
30 janv. 2008 à 11:29
resalut,

Pour access il faut faire un modèle, il y a plusieurs formes

J'ai créé un exemple, et j'ai mis la table exemple et j'ai inserer (1,"Salut tout le monde")

la requete:

SELECT *
FROM Exemple
WHERE TexteExemple like "S*";

Fonctoinne tres bien.

Une question est ce que SAB est une variable?
0
Utilisateur anonyme
30 janv. 2008 à 11:31
SAB sont les 3 première lettres du mot que je veux chercher
0
carbooky Messages postés 57 Date d'inscription mercredi 16 janvier 2008 Statut Membre Dernière intervention 1 mai 2008 11
30 janv. 2008 à 11:33
SELECT Nom_PERSONNE, Prenom_PERSONNE, Trigramme_PERSONNE, Role_PERSONNE, Societe_PERSONNE, Tel_Fax_PERSONNE, Raccourci_PERSONNE, Mobile_PERSONNE, Mail_PERSONNE
FROM PERSONNE
WHERE Nom_PERSONNE like 'SAB %'
OR Prenom_PERSONNE like '_%'
OR Tel_Fax_PERSONNE like '_%'
OR Societe_PERSONNE like '_%'

essai ca mais ca m'etonnerai que ca change quelque chose
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
30 janv. 2008 à 11:34
AAAAAAAAAAAAAAAAAAAAAAAAAAAA, il ne vous renvoie rien du tout! donc il y a pas d'erreur dans la requete.
Attention à l'espace:

like "SAB[ ]*"
0
Utilisateur anonyme
30 janv. 2008 à 11:57
je vais manger je revien a 14 h merci de votre aide bon apétit et rdv a 14 h si possible
car j'aurais quelque question a vous poser
0
Utilisateur anonyme
30 janv. 2008 à 14:27
me revoila
Ce que je souhaite faire c'est que ma requète fonctionne même si une valeur n'est pas donnée
ce que je n'arrive pas a faire c'est le where

J'a rempli pour exemple un personne qui s'apelle sabat et j'ai rempli tous ses champ correspondants.
Je souhaiterais que si l'utilisateur de mon anuaire rentre sab par exemple tous les utilisateur qui commencent par sab (donc la personne sabat soit retrouvée et affichée)

Mon problème c'est la requète j'ai mis des conroles partout je suis donc certain qu ec'est le where qui déconne
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
30 janv. 2008 à 14:34
Est ce que vous avez enlevé l'espace? je pense que c'est le problème tout simplement.
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
30 janv. 2008 à 14:39
J'ai rouvé ce truc, je pense qu'il est utile:

http://dev.mysql.com/doc/refman/5.0/fr/string-comparison-functions.html
0
Utilisateur anonyme
30 janv. 2008 à 15:17
ok donc théoriquement
where Nom_PERSONNE LIKE '%SAB%'
devrait renvoyer les personne dont le nom comprend SAB mais cela ne fonctionne pas
0
Bonjour,
Attention like est case sensitive. En recherchant SAB, sabat ne pourra jamais être retourvée.
Pour rendre la fonction insensible à la casse :
where upper(nom_personne) like '%SAB%'
Cordialement,
Jres
0
Utilisateur anonyme
30 janv. 2008 à 15:48
C'est bon merci jai pu corriger grace a l'indication de tarek_dotzero
0