Bigbangss
Messages postés40Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention 3 décembre 2008
-
2 déc. 2008 à 16:03
Bigbangss
Messages postés40Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention 3 décembre 2008
-
3 déc. 2008 à 11:05
Bonjour,
Voila je n'arrive pas à exprimer ma requete.
Je souhaiterai afficher tout les éléments d'un enregistrement présents dans une table où une des colonnes de la table contient une partie de ma chaine de caractéres .
C'est bien sur une partie de la chaine de caractères et non sur l'ensemble de la chaîne de caractères que ma recherche s'effectue. Ou sinon ca serait la clause LIKE qu'il faudrait utiliser avec des % si j'ai bien compris.
Comment fait-on pour chercher dans une chaine de caractères?
Voici ma question version requete :
$auteur = Jean, Paul, Pierre ;
SELECT * FROM sons WHERE auteur LIKE '%$auteur%' ;
Mais je veux que Pierre !
Merci de votre aide
A voir également:
Requete sql like '%%%'
Requête sql like plusieurs valeurs - Meilleures réponses
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 2 déc. 2008 à 16:24
Salut,
En fait ce que tu voudrais c'est prendre tous les auteurs qui s'appelleraient Jean, Paul ou Pierre.
Dans la clause LIKE qui tu fais là, en fait tu prendrais tous les auteurs qui vaudraient "quelquechose"+"Jean, Paul, Pierre"+"quelquechose".... Drôle de prénom, non?
En fait, du coup, il te suffit simplement de faire l'inverse :
SELECT * FROM sons WHERE $auteur LIKE '%'||auteur||'%'
Bigbangss
Messages postés40Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention 3 décembre 2008 2 déc. 2008 à 16:38
voila c'est exactement ça mon problème !
donc à quoi correspondent les "||"?
on peut changer l'ordre dans la requete sql?
Parce que la moi je comprends que c'est ma variable qui a le nom de la table.. Ca risque pas de me faire une erreur puisque ma table n'a pas de champs " Jean, Paul, Pierre" ?
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 2 déc. 2008 à 16:55
Re,
Les "||", c'est l'opérateur de concaténation de chaînes de caractères donc voilà si tu veux concaténer ben tu fais avec ça.
Ensuite, dans un where c'est une condition donc cette condition tu peux la tourner dans tous les sens.
Avec la condition que TU as proposé ça voulait dire ça :
Est ce que le champs auteur contient "Jean, Paul, Pierre"?
Alors que la mienne veut dire :
Est ce que le champs auteur est contenu dans "Jean, Paul, Pierre"?
Ou encore
Est ce que la variable "Jean, Paul, Pierre" contient le champs auteur?
Ce qui, me semble-t-il est plus ce que tu veux, non?
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Bigbangss
Messages postés40Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention 3 décembre 2008 2 déc. 2008 à 22:16
RE,
Comme prévu je n'arrive pas à utiliser la requete
Voila ma requete :
SELECT * FROM sons WHERE artistes LIKE '%'||auteur||'%' OR artistes LIKE '%'||tag||'%' LIMIT 3;
Requête : SELECT * FROM sons WHERE {NomArtiste}, {NomArtiste}, {NomArtiste} LIKE '%||auteur||%' OR artistes LIKE '%'||tag||'%' LIMIT 3
Erreur
n°1064 : 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 ' {NomArtiste}, {NomArtiste} LIKE '%||auteur||%' OR artistes LIKE
'%'||tag||'%' LIMIT 3' at line 1
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\xxxxxxxx.com-v3\see_video.php on line 166
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 2 déc. 2008 à 22:22
Re,
Visiblement, ta variable "artistes" que tu veux comparer, c'est un tableau???
Si c'est bien un tableau, tu dois accéder à chaque élément, un par un genre
SELECT * FROM sons WHERE artiste[0] LIKE '%'||auteur||'%' ....
<hr size="2" width="100%" /> C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 déc. 2008 à 00:01
Ces trucs là {NomArtiste}, {NomArtiste}, {NomArtiste}
<hr size="2" width="100%" /> C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 déc. 2008 à 08:32
Oula...
Que fais tu???
Dans ta requête, tu mets "Pierre, Paul, Jean" en dur comme ça???
Ou tu mets la variable entière dans ta requête?
Dans les clauses WHERE, ils sont formés ainsi :
WHERE champ1 "operateur de comparaison" champs2 [AND ...]
Il faut faire champs par champ pour comparer
Imaginons que tu passes en dur dans ta requête, ça donnerait ceci :
SELECT *
FROM sons
WHERE 'Pierre, Paul, Jean' LIKE '%'||artistes||'%'
Ainsi, si dans ta tables "sons", il y a "artistes" qui vaut 'Pierre' ou 'Paul' ou 'Jean', ta reqûete te retournera l'enregistrement
<hr size="2" width="100%" /> C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 déc. 2008 à 09:50
Quelle est l'erreur?
Est ce que dans ta variable $variable, tu as bien mis les simples quotes --> ' ' genre
$variable = 'Pierre, Paul, Jean';
?
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Bigbangss
Messages postés40Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention 3 décembre 2008 3 déc. 2008 à 10:08
Ma variable en fait c'est un élément d'un fetch_array d'une requete précédente sur une autre table :
$auteur = $videos['artistes'];
Bon pour tout te dire c'est sur une page de videos en streaming. Et en fonction du nom de l'artiste dont la video tourne, je veux afficher des mp3 de cet artiste à écouter, si il y en a. Donc je recupère la variable de la requete d'avant...
C'est peut être pas la manière la plus académique de procéder, mais je suis pas très à l'aise avec les requetes multitables...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 déc. 2008 à 10:15
Et si tu affiches $auteur avant de la mettre dans ta requête, tu obtiens quoi?
Je pense qu'il doit être mal formé, en tout cas, visiblement, il te manque les quote là.
Mets ça plutôt :
$auteur = '\'' + $video['artistes'] + '\'';
Je me rappelle plus trop du php , il me semble que c'est comme ça, ou comme ça :
$auteur = "\'" + $video['artistes'] + "\'";
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Bigbangss
Messages postés40Date d'inscriptionvendredi 30 novembre 2007StatutMembreDernière intervention 3 décembre 2008 3 déc. 2008 à 10:33
si je l'affiche j'ai bien la valeur de ma variable qui s'affiche...et g l'habitude de fonctionner comme ça..Et sa fonctionne, ben écoute la g pas mon code sur moi je suis o taff...mais je comprend pas l'utilité des quotes en fait.
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 déc. 2008 à 10:35
Ben en fait si tu mets pas les quotes dans ta requete SQL, MySQL va croire que c'est un champs de ta table ou une variable de MySQL, ce qui n'est pas le cas!
En mettant les quotes, tu lui dis bien que c'est une chaîne de caractères et donc voilà, pas d'ambiguïtées!
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 3 déc. 2008 à 10:50
Ah ben, non dans ce cas non... Là ça devrait marcher sans soucis.
Donc si tu fais ça, dans ta variable $auteur, il doit y avoir un truc comme ça :
$variable = 'Paul, Pierre, Jean';
Et dans "artistes" de ta table "nom", il doit y avoir soit 'Pierre', soit 'Paul', soit 'Jean' ou autre bien sûr
C'est ça?
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...