Besoin d'aide pour le SQL

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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
A voir également:

17 réponses

tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
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   Statut Membre Dernière intervention   122
 
Salut,

Vous devez peut être utiliser "Like" au lieu de "=".
0
MyTux Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   44
 
Bonjour,

Je pense comme Tarek_dotzero avec un 'LIKE' au lieu du signe "=" ça peut fonctionner.
0
Utilisateur anonyme
 
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   Statut Membre Dernière intervention   11
 
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
 
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   Statut Membre Dernière intervention   122
 
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
 
SAB sont les 3 première lettres du mot que je veux chercher
0
carbooky Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   11
 
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   Statut Membre Dernière intervention   122
 
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
 
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
 
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   Statut Membre Dernière intervention   122
 
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   Statut Membre Dernière intervention   122
 
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
 
ok donc théoriquement
where Nom_PERSONNE LIKE '%SAB%'
devrait renvoyer les personne dont le nom comprend SAB mais cela ne fonctionne pas
0
Jres
 
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
 
C'est bon merci jai pu corriger grace a l'indication de tarek_dotzero
0