Salut à tous.
J'ai un petit problème sur l'affichage en fonction de deux tables. Ces tables sont en relation avec une autre table pour les lier. J'ai la table contact avec tous mes contacts, ensuite la table section avec toutes mes sections. Après j'ai la table gérer qui permet de relier mes deux tables précédentes. En fait, je voudrais afficher pour un contact, toutes les sections auquel il appartient. J'arrive à afficher les contacts avec les sections, mais les contacts sont marqués en plusieurs exemplaires en fonction du nombre de sections auquel il appartient. Hors je voudrais afficher une fois le contact, suivi de ses sections. Besoin d'un coup de main. Merci d'avance.
$query = "SELECT contact.nom, section.nom FROM contact,section,gerer
WHERE contact.id=gerer.id_contact AND section.id=gerer.id_section ORDER
BY contact.nom ASC";
$result = mysql_query($query,$id_con);
?>
// Ce qui te donne un tableau associant les nom de tes contacts et leurs sections.
// Mais, les contacts qui ne sont dans aucune section ne serons jamais affichés.
// De même que les sections qui n'ont aucuns contacts.
Ah j'ai oublié de dire que pour le 2° choix il faudra créer une boucle pour retrouver le nom de la section pour chaque gerer.id_section. C'est ce qui fait que c'est un choix plus lourd!
Donc les boucles while que j'ai présentées ne sont valables que pour le premier choix. Mais le principe est le même :)
SELECT contact.nom, section.nom
FROM contact, section, gerer
WHERE contact.id = gerer.id_contact
AND section.id = gerer.id_section
ORDER BY contact.nom ASC
LIMIT 0 , 30,
SELECT DISTINCT contact.nom, section.nom
FROM contact, section, gerer
WHERE contact.id = gerer.id_contact
AND section.id = gerer.id_section
ORDER BY contact.nom ASC
LIMIT 0 , 30,
J'utilise ce code :
$result mysql_query('SELECT contact.num_contact, contact.pseudo_contact, gérer.num_section FROM contact LEFT JOIN gérer ON contact.num_contact gérer.num_contact ORDER BY contact.nom ASC');
$controle = '';
$list = '';
while ($data = mysql_fetch_array($result))
{
if($controle !== $data['contact.pseudo_contact'])
{ $list .($controle '') ? '' : '</li>' ;
$list .= '<li>'.$data['contact.pseudo_contact'] ;
$list .= '';
$controle = $data['contact.pseudo_contact'] ; // De cette façon, ce bloc IF ne s'executera qu'au prochain changement de contact.nom
}
$list.= '<li>'.$data['section.nom_section'].'</li>' ;
}
$list.='';
Cependant, je n'arrives pas à faire fonctionner. Cela m'affiche le message d'erreur :
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in d:\www\stargate-web.com\htdocs\connexionbis.php on line 16 De quoi cela pourrait venir?
J'ai réussi à afficher. En effet, il y avait une erreur. Cependant, cela m'affiche
<LI>
<LI>
<LI>
<LI>
<LI>
<LI>
<LI>
<LI>
<LI>
<LI>
<LI></LI>
C'est tout ce que ça m'affiche. Je ne comprends pas. Je voudrais arriver à afficher une fois le contact suivi de ses sections.