Aller au contenu

while appel d'une autre table dans la boucle?


Sujets conseillés

Posté

$select = 'select CategoryID,PageID  FROM Categories WHERE CategoryID=1 ORDER BY CategoryID... 
while($row = mysql_feCh_array($result)) {
   // $select = 'select price,PageID  FROM Pages WHERE PageID=$row['PageID'];
echo '<tr>';
       echo '<td>'.$row['CategoryID'].'</td>';
       echo '<td>'.$row['PageID'].'-'.$row['price'].'</td>';
       echo '</tr>'."\n";
   }

Bonjour,

je voudrais appeler une autre table dans le while pour extraire d'autres données correspondantes, chaque "$row['PageID']." me donne donc un chiffre pour aller chercher d'autres infos dans une autre table, comme je procede peu avec differentes tables, pouvez m'aider me donner un exemple pour proceder proprement.

Cordialement

Florent

Posté

bonjour ...

alors comme ca (si j'ai bien compris ton post) tu devrais t'en sortir.

$req=mysql_query(SELECT ID FROM .....);
while ($parcours=mysql_fetch_array($req))
{
  $req2=mysql_query(SELECT INFO FROM ... WHERE ID=$parcours[ID]);
  etc...
}

Cordialement

Posté

et bien tu as l'air bien parti là pourtant

enfin sur le bon chemin

tu ajoutes un mysql_query() et un mysql-fetch_array dans la bouche de ton while et c bon

$select = 'select CategoryID,PageID  FROM Categories WHERE CategoryID=1 ORDER BY CategoryID... 
while($row = mysql_feCh_array($result)) {
       $select2 = 'select price,PageID  FROM Pages WHERE PageID=$row['PageID'];
       $row2 = mysql_fetch_array(mysql_query($select)
       echo '<tr>';
       echo '<td>'.$row['CategoryID'].'</td>';
       echo '<td>'.$row['PageID'].'-'.$row2['price'].'</td>';
       echo '</tr>'."\n";
   }

Sinon tu peux aussi faire une requete multi table

select Categories.CategoryID, Categories.PageID, Pages.price from Categories, Prices Where Categories.PageID=Pages.PageID ANDCategoryID=1 ORDER BY CategoryID Group BY Categories.PageID

Voila quelque chose dans ce genre là

tu peux remarquer que je fais la jointure entre les 2 tables avec Categories.PageID=Pages.PageID et le GROUP BY permet d'eviter les doublons

Voila 2 solutions différentes, ya pas vraiment 1 meilleur que l'autre

C'est toi qui choisi

Posté

merci pour vos reponses,

j'ai une preference pour le code 1, c'est vrai que j'etais pas loin :o) mais je voulais savoir aussi si c'etait une bonne methode, histoire de coder mon petit truc proprement :o) .

Bien a vous,

Florent' s bozo fan ;)

Posté
merci pour vos reponses,

j'ai une preference pour le code 1, c'est vrai que j'etais pas loin :o) mais je voulais savoir aussi si c'etait une bonne methode, histoire de coder mon petit truc proprement :o) .

Bien a vous,

Florent' s bozo fan  ;)

<{POST_SNAPBACK}>

Choisit le code 2 :)

Règle de base : on ne met jamais une requête SQL dans une boucle while !

En terme de performance c'est épouvantable.

Pour ramener 50 lignes, tu vas faire 50 requêtes au lieu d'une seule.

Si ta base est bien optimisé, aves les bons index, le code 2 devrait être plus performant. Compare les 2 solutions sur ton système.

Tant que la charge de ton serveur ne sera pas trop importante, tout se passera bien.

Et puis un jour tu chercheras à comprendre pourquoi ton appli ce met à ramer.

J'impose la règle de base comme règle stricte de codage à tout mes développeurs.

Comme tout règle elle souffre de quelques exceptions que nous cherchons à garder... exceptionelles :)

Posté

Bonjour,

J'intervient juste pour appuyer les propos de Anorci, le mieux est d'adopter la 2ème solution.

La 1ère consiste à faire ce que peux faire le gestionnaire de base de données. Il le fera mieux et plus rapidement. Alors pourquoi s'en priver ? ;)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...