Aller au contenu

Afficher uniquement les variables non vide


EmGeI

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é par rdd
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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