Requête php en boucle

Fermé
loby Messages postés 70 Date d'inscription dimanche 31 août 2008 Statut Membre Dernière intervention 23 août 2011 - 8 sept. 2010 à 06:02
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 8 sept. 2010 à 10:23
Bonjour,

J'aimerais créer une fonction qui me permette d'exécuter des requête en boucle,je crée un site qui permet de visualiser un stock d'articles dans une base de données.l'internaute peut marquer un article comme objet favoris grâce à l'envoi d'un formulaire,suite à cela,il y a tout un traitement au niveau des chaines de caractères,pour au final me retrouver avec une variable de type tableau comprenant les id des articles favoris que je dois aller rechercher dans la db avec la fonction ici bas:

le problème c'est qu'elle ne m'affiche que le premier article

function getPneusFavoris($array){ //on certain d'être en présence d'un tableau car le test
//est effectué plus haut dans le script
//une requête est envoyé pour chaque articles

foreach($array as $id ){

$query="SELECT id_pneu,nom_fabricant,modele,nom_type,largeur,hauteur,type_radial,diametre,
indice_vitesse,indice_charge,prix_unitaire,promo,texte_inf
FROM fabricants,pneus,types_pneus
WHERE pneus.id_fabricant = fabricants.id_fabricant
AND (pneus.id_type_pneu = types_pneus.id_type)
AND (pneus.id_pneu = \"$id\")
AND (view =\"1\")";
//on affiche aussi bien les pneus auto que les pneus moto

$result=mysql_query($query);

if (!$result or mysql_num_rows($result)==0) {
return false;
}

$result = db_result_to_array($result); //fonction générique qui crée un tableau du résultat
return $result;

}
}

quelqu'un pourrait-il m'aider?merçi



1 réponse

Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
8 sept. 2010 à 10:23
J'ia l'impression qu'a chaque tour de ton for-each, tu écrases ton tableau $result ... tu devrais deja essayer de voir si tu passes bien plusieurs fois à ce niveau (laissees une trace dans le echo) .

ce que je te proposerai plutot, c'est de personnaliser ta requete en faisant un truc du genre:
$complement = ""
  $premier = true;
  foreach($array as $id ){ 
  if $premier = false
    $complement .= ' OR (pneus.id_pneu = \"$id\") ';
  else
  {
    $complement .= '( (pneus.id_pneu = \"$id\") ';
  }
}
$complement .= ")";

ensuite tu fais ta requette comme ca:

$query="SELECT id_pneu,nom_fabricant,modele,nom_type,largeur,hauteur,type_radial,diametre, 
indice_vitesse,indice_charge,prix_unitaire,promo,texte_inf 
FROM fabricants,pneus,types_pneus 
WHERE pneus.id_fabricant = fabricants.id_fabricant 
AND (pneus.id_type_pneu = types_pneus.id_type) 
AND ". $complement ." 
AND (view =\"1\")"; 
//on affiche aussi bien les pneus auto que les pneus moto 
0