exclure une chaine de caractère

x@v
Mammouth du PHP | 570 Messages

17 nov. 2009, 13:49

Bonjour,
je cherche à exclure des résultats du champ mailProf.
C'est une chaine de caractère qui contient le mot avec des chiffres dont je ne connais pas ni le nombre ni la valeur:
'%mailEnEttente%'
j'essaie d'utiliser
NOT LIKE '%mailEnEttente%'
Mais cela me renvoie malgrés tout des champs avec 'mailEnEttente'
		$sql="SELECT * FROM profmusique WHERE codePostalProf LIKE '".$departement."%' 
               AND mailProf NOT LIKE '%mailEnEttente%'
		AND instrumentPrincipalProf='".$_POST['instrumentRechercher']."' 
		or discipline1Prof='".$_POST['instrumentRechercher']."' 
		or discipline2Prof='".$_POST['instrumentRechercher']."'
		or discipline3Prof='".$_POST['instrumentRechercher']."'
		or discipline4Prof='".$_POST['instrumentRechercher']."' 
		ORDER BY villeProf ASC";
Merci

Eléphant du PHP | 174 Messages

17 nov. 2009, 14:06

Bonjour.

Je n'ai pas de solution dédiée à te proposer en SQL mais tu peux très bien trouver ta chaîne de caractères en PHP.

Si la chaîne est encadrée par des chiffres, tu peux trouver la position de la première lettre en faisant une boucle (TANT QUE le caractère au rang x est un chiffre FAIRE x=x+1).

Une fois la 1re lettre trouvée, tu récupères toute la chaine via un substring (en bouclant tant qu'il ne retrouve pas de chiffre).

Maintenant je prétends pas (et je suis même persuadée du contraire XD) que ce soit la méthode la plus optimisée...
Cela dit, c'est fonctionnel, et ça te laissera du temps pour chercher mieux.

Bonne progra ;)
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

x@v
Mammouth du PHP | 570 Messages

17 nov. 2009, 14:25

j'yavais penser à substr(), mais la performance est surement du coté de sql et ça m'interresse d'y arriver

Eléphant du PHP | 174 Messages

17 nov. 2009, 14:59

Les résultats qui te sont retournés malgré tout contiennent exactement ta chaîne ou toujours un assemblage chiffres + chaîne ?

Si tu peux donner tes entrées dans la base et les résultats obtenus après requête, je suis preneuse ;)
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Eléphant du PHP | 174 Messages

17 nov. 2009, 15:41

[RE-EDIT]
Remarque, pas si stupide que ça...
Mets des parenthèses à ta dernière condition AND (condition OR condition...)

Sinon si ça ne fonctionne toujours pas

Pour éliminer les mauvaises pistes, essaie en ne mettant que ton NOT LIKE en condition dans ta requête et regarde si tu as des résultats éronnés.
S'il y en a... on est mal XD mais tu pourras tester en ajoutant "AND NOT LIKE '%mailEnEttente' AND NOT LIKE 'mailEnEttente%'
Si tu n'en a pas, ça vient de quelque part dans le cumul des conditions (et mon ancienne réflexion sur les OR ne sera plus aussi stupide)
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 nov. 2009, 17:36

Les résultats renvoyés ne contiendraient-il pas "mailEnAttente" alors que tu exclus dans ta condition "mailEnEttente" ?

Teste une requête statique directement sur la base (ex: via phpMyAdmin). Quand elle marchera alors tu pourras l'intégrer dans le PHP.

Pour un problème de SQL sur le forum il faut toujours fournir le SQL généré, la ligne de PHP qui va le construire est moins utile que le code qui sera effectivement exécuté sur la base.

Eléphant du PHP | 174 Messages

18 nov. 2009, 16:15

Pas sûr ouckileou, il devrait avoir une erreur pour colonne non existente le cas échéant non ?
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 nov. 2009, 16:36

Pas sûr ouckileou, il devrait avoir une erreur pour colonne non existente le cas échéant non ?
Je ne pense pas car c'est une valeur et non une colonne :)

Eléphant du PHP | 174 Messages

18 nov. 2009, 21:17

+1

Bien vu, je suis de plus en plus fatiguée à ce que je vois T_T

en tout cas j'espère qu'il aura fini par se corriger.... et surtout qu'il testera petit à petit dans phpMyAdmin la prochaine fois (valable pour tout le monde hein ;))
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)