Page 1 sur 1
ARRAY & Requete sql.
Posté : 22 nov. 2011, 15:27
par damien_55
Bonjour a tous,
Je cherche a recuperer les variables d'un tableau dans ma requete sql.
Alors j'ai ceci:
$tmp45 = explode(';', stripslashes($page['mots_clefs']));
$content['mots_clefs'] = array();
foreach($tmp45 as $tmp46) {
if(strlen(trim($tmp46)) > 2) $content['mots_clefs'][] = trim($tmp46);
}
et
$relatif1 = mysql_query("SELECT id, titre, FROM Adresse WHERE titre LIKE '%[b]Valeur de mot cle du tableau[/b]%' order by rand() limit 20");
En fait, je cherche a mettre a la place de
valeur de mot cle du tableau par ma valeur de mon tableau. ex: valeur[1], valeur[2]
Merci de votre aide.
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 15:41
par xTG
Par concaténation.
$relatif1 = mysql_query("SELECT id, titre, FROM Adresse WHERE titre LIKE '%" . mysql_real_escape_string($value[0]) . "%' order by rand() limit 20");
Et sans oublier mysql_real_escape_string() pour échapper la variable.
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 17:00
par damien_55
En fait, j'ai pas compris ta réponse:
J'ai essayé ça:
Code : Tout sélectionner
$relatif1 = mysql_query("SELECT id, titre, FROM Adresse WHERE titre LIKE '%" . mysql_real_escape_string($content['mots_clefs'][0]) . "%' order by rand() limit 20");
Mais ça ne marche pas.
En fait, je n'arrive pas a recuperer la premiere ou deuxieme valeur dans mon tableau.
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 17:21
par macgawel
Bonjour.
1. Affiche le contenu de ton tableau :
var_dump($content['mots_clefs']);
2. Mets ta requête SQL dans une variable, et profite-en pour l'afficher :
$requete = "SELECT id, titre, FROM Adresse WHERE titre LIKE '%<span style="font-weight: bold">Valeur de mot cle du tableau</span>%' order by rand() limit 20";
echo "Requete = $requete";
$relatif1 = mysql_query($requete) or die ("erreur dans la requete :".mysql_error());
3. Essaye d'éclaircir un peu ton besoin.
Tu veux passer ta requête à partir d'un mot clé, ou tu veux automatiser pour la passer pour chacun ?
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 17:56
par damien_55
Re,
Mon vrai besoin est de passer la requete automatiquement pour chacun des mots_clefs. Mais vu que je n'arrive meme pas a en recuperer un seul dans ma requete. Je ne me suis pas pencher dessus encore.
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 18:48
par damien_55
Alors quand, je fais un:
Jai bien mes valeurs: Array ( [0] => genetique [1] => reproduction )
maintenant il faut que je prenne individuellement ces valeurs pour les inclure dans ma requete.
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 18:55
par macgawel
foreach ($content['mots_clefs'] as $mot_cle) {
$requete = "SELECT id, titre, FROM Adresse WHERE titre LIKE '$mot_cle' order by rand() limit 20";
echo $requete; // afficher la requête
$relatif1 = mysql_query($requete) or die ("erreur dans la requete '$requete' :".mysql_error());
// traitement du retour de la requête
}
Et vu ton problème, tu devrais tester les requêtes générées en les passant dans phpMyAdmin (ou équivalent)

Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 19:04
par damien_55
Oui, ca vient de ma requette:
J'ai un probleme par la: ....
WHERE titre LIKE '%" .stripslashes($content['mots_clefs'][0])."%' order by rand() limit 20"

Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 19:32
par xTG
Que renvoie echo $requete ? On ne te l'a pas demandé pour rien. ^^
Y-a-t-il une erreur d'affichée sur ta page lors de l'exécution ?
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 19:42
par damien_55
Que renvoie echo $requete ? On ne te l'a pas demandé pour rien. ^^
ça me donne: Requete = Resource id #14
???
J'ai fait tout ça:
<h4><?php echo "Requete = $depeches_relatif";?></h4> => Requete = Resource id #14
<h4><?php print_r ($content['mots_clefs']);?></h4> => Array ( [0] => genetique [1] => reproduction )
<h4><?php echo ($content['mots_clefs'][0]);?></h4> => genetique
<h4><?php echo ($content['mots_clefs'][1]);?></h4> => reproduction
Je ne comprend pas individuellement, ça marche et dés que je les mets dans la requete ça bug...
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 21:15
par xTG
Non, ce qui nous intéresse c'est la requête SQL : $requete
Et non $relatif qui est le retour de l'exécution de la requête.
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 21:53
par damien_55
echo de la requete m'a donné:
Code : Tout sélectionner
SELECT id, titre FROM news WHERE titre LIKE '%%' order by rand() limit 20
avec cette requette a la envoyé/
$depeches_relatif = mysql_query("SELECT id, titre FROM news WHERE titre LIKE '%".stripslashes($content['mots_clefs'][0])."%' order by rand() limit 20");
Merci de votre aide.
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 22:50
par xTG
Déjà... stripslashes() c'est loin d'être mysql_real_escape_string()

S'il existe une fonction faite pour le driver c'est pas pour rien.
Ensuite il semblerai que tout simplement ta variable soit vide. Ou bien que cet index n'existe pas et que ton niveau d'erreur n'est pas réglé pour t'afficher le warning.
Fais un var_dump() de cette variable.
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 22:55
par damien_55
Le var_dump de la variable me donne:
array(2) { [0]=> string(9) "genetique" [1]=> string(12) "reproduction" }
Re: ARRAY & Requete sql.
Posté : 22 nov. 2011, 23:03
par damien_55
Je crois avoir trouver. La variable $content['mots_clefs'] était défini plus loin dans mon script en fait je l'ai défini avant et là ça marche.

La variable s'affiche bien dans la requete.
merci à vous