Version complète: sur le forum Webmaster Hub : Afficher uniquement les variables non vide
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
EmGeI
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>&nbsp;</td>
</tr>
</table>
</td>
</tr>
<?php
}
}
}
}
?>
</table>
</div>
<div class="rightColumn">

</div>
<?php
// Affichege du Footer
include("footer.php");
?>


D'avance merci wink.gif
rdd
Bonjour,

Cette requete devrait t'afficher ce que tu souhaites :

CODE
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
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... sad.gif

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
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

CODE
$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.
EmGeI
Merci je fait le test tout de suite.
EmGeI
Merci beaucoup cela fonctionne.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.