EmGeI Posté 16 Juin 2008 Posté 16 Juin 2008 Bonjour, Voici mon soucis. J'ai 3 tables dans ma bdd. CODE Province :id_province province Localite : id_localite province_id cp ville Partenaire : id_partenaire localite_id nom adresse gsm tel fax email url J'affiche les données sur ma page partenaire, mais tout les champs apparaissent. J'aimerai afficher uniquement les provinces où il y a des localité avec un partenaire. Par exemple si j'ai un partenaire a bruges et un autre à liège, n'afficher que ses provinces et localité là. J'espère que je ne vous embrouille pas trop. Voici le code de ma page : CODE <? // Initialisation de la base de donnée include("include/connexion.php"); // Affichege du Header include("header.php"); $p=mysql_query("SELECT * FROM province;") or die ("".mysql_error()); ?> <div id="white"> <div id="sidebar"> <h2>Choisissez une province : </h2> <ul> <?php while($data = mysql_fetch_array($p)) { $province = $data['province']; $id_province = $data['id_province']; ?> <li><a href="#<?php echo $id_province?>"> <?php echo $province?></a></li> <?php } ?> </ul> </div> <div id="content"> <div class="leftColumn"> <h2><a href="#" id="1">Nos Partenaires</a></h2> <table> <?php $p=mysql_query("SELECT * FROM province;") or die ("".mysql_error()); while($data = mysql_fetch_array($p)) { $province = $data['province']; $id_province = $data['id_province']; if ($p == 0){ echo ""; }else{ ?> <tr> <td><h3><a href="#" id="<?php echo $id_province?>"></a><?php echo $province; ?> <a href="#top" id="2"><img src="images/upArrow.gif" border="0"></a></h3></td> </tr> <?php } $q=mysql_query("SELECT * FROM localite WHERE localite.province_id = '$id_province' ORDER BY ville ASC;") or die ("" .mysql_error()); while($loc = mysql_fetch_array($q)) { $id_loc = $loc['id_localite']; $ville = $loc['ville']; $cp = $loc['cp']; if ($q == 0){ echo ""; }else{ ?> <tr> <td><h4><?php echo $cp." ".$ville; ?></h4></td> </tr> <?php } $r = mysql_query("SELECT * FROM partenaire WHERE partenaire.localite_id = '$id_loc';") or die ("" .mysql_error()); while($part = mysql_fetch_array($r)) { $partenaire = $part['nom']; $adresse = $part['adresse']; $gsm = $part['gsm']; $tel = $part['tel']; $fax = $part['fax']; $email = $part['email']; $url = $part['url']; if ($r == 0){ echo ""; }else{ ?> <tr> <td> <table> <tr> <td> <fieldset> <legend> <?php echo $partenaire; ?> </legend> <?php echo $adresse."<br> ".$cp." ".$ville."<br>"; echo "Téléphone : ".$tel." - Fax : ".$fax." - GSM : ".$gsm."<br>"; echo "E-Mail : ".$email." - Site web : ".$url;?> </fieldset> </td> </tr> <tr> <td> </td> </tr> </table> </td> </tr> <?php } } } } ?> </table> </div> <div class="rightColumn"> </div> <?php // Affichege du Footer include("footer.php"); ?> D'avance merci
rdd Posté 16 Juin 2008 Posté 16 Juin 2008 Bonjour, Cette requete devrait t'afficher ce que tu souhaites : SELECT province.id_province, province.province, localite.id_localite, localite.province_id, localite.cp, localite.ville FROM province, localite, partenaire WHERE partenaire.localite_id=localite.id_localite AND localite.province_id=province.id_province
EmGeI Posté 17 Juin 2008 Auteur Posté 17 Juin 2008 Merci pour ta réponse. Mais ca m'affiche la même chose. Le problème n'est pas la requete MySQL mais l'ordre des boucles et des conditions. En fait ca doit faire une truc du genre : Afficher une province Si une ville dans la province contient un partenaire. Enfin un truc du genre avec comme template : PROVINCE Ville Partenaire Moi il m'affiche toute les provinces et toute les villes de belgique, même celle ou il n'y a aucun partenaire... Pour l'exemple voilà ce que j'ai : http://www.ishibelgique.com/partenaire.php et voici ce que je voudrais : http://www.ishibelgique.com/partenaire2.php
rdd Posté 17 Juin 2008 Posté 17 Juin 2008 (modifié) OK j'avais pas compris tout a fait ca. Et bien en fait tu as juste a imbrique tes boucles en testant si il y a un partenaire sur la localite : Ce qui devrait donne a peu pres ca $query_province = mysql_query("select * from province ORDER BY id_province");while($val_province = mysql_fetch_array($query_province)){ $query_loc = mysql_query("select * from localite where province_id=".$val_province['id_province']." ORDER BY province_id"); for($loop=0;$val_loc = mysql_fetch_array($query_loc);$loop++) { $query_part = mysql_query("select * from partenaire where localite_id=".$val_loc['id_localite'].""); if (mysql_num_rows($query_part)) // On a un ou plusieurs partenaire sur la localite { // On affiche la province if (!$loop) echo $val_province['province']; // On affiche la localite echo $val_loc['ville']; // Et on affiche tous les partenaires de la localite while ($val_part = mysql_fetch_array($query_part)) { echo $val_part['nom'];//+ toutes les infos que tu souahites } } }} Apres tu n'as plus qu'a tout mettre en forme pour que ce soit propre sur ton site. Modifié 17 Juin 2008 par rdd
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant