Lentreprenaute Posté 23 Février 2006 Partager Posté 23 Février 2006 $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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
MyMaty Posté 23 Février 2006 Partager Posté 23 Février 2006 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
bozoleclown Posté 23 Février 2006 Partager Posté 23 Février 2006 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lentreprenaute Posté 23 Février 2006 Auteur Partager Posté 23 Février 2006 merci pour vos reponses, j'ai une preference pour le code 1, c'est vrai que j'etais pas loin ) mais je voulais savoir aussi si c'etait une bonne methode, histoire de coder mon petit truc proprement ) . Bien a vous, Florent' s bozo fan Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spidetra Posté 23 Février 2006 Partager Posté 23 Février 2006 merci pour vos reponses, j'ai une preference pour le code 1, c'est vrai que j'etais pas loin ) mais je voulais savoir aussi si c'etait une bonne methode, histoire de coder mon petit truc proprement ) . 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
NorSeb Posté 24 Février 2006 Partager Posté 24 Février 2006 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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
robinsonvendredi Posté 24 Février 2006 Partager Posté 24 Février 2006 d'accord avec Norseb et Anorci, pour optimiser tu peux aussi écrire la requête SQl dans une procédure stockée (si mysql5). Gain de rapidité en exécution puisque le plan de requête est précompilé. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spidetra Posté 24 Février 2006 Partager Posté 24 Février 2006 +1 pour robinsonvendredi si mysql5 possible. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant