begin process at 2012 05 28 13:43:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Bases de données

 > 

Afficher valeurs de tables


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Afficher valeurs de tables

dimanche 30 octobre 2005 à 01:34:52 | Afficher valeurs de tables

Xini28

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.
dimanche 30 octobre 2005 à 07:39:57 | Re : Afficher valeurs de tables

monoceros01

Réponse acceptée !
Tu as deux choix me semble-t-il :
1/
<?php
$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.

2/
<?php
$query = "SELECT contact.id, contact.nom, gerer.id_section ";
$query.= "FROM contact ";
$query.= "LEFT JOIN gerer ";
$query.= "ON contact.id = gerer.id_contact";
$query.= "ORDER BY contact.nom ASC";
$result = mysql_query($query,$id_con);
?>


Cette requête crée un tableau associant chaque contact avec une section à laquelle il appartient.
Donc si un utilisateur est dans plusieurs section, il sera évidemment inscrit plusieurs fois.
Alors que si un utilisateur n'est dans aucune des sections, il sera associé à la valeur NULL

Quoiqu'il en soit, pour éviter d'afficher deux fois le même noms, il te suffit de faire :
<?php
$list = array();
while ($data = mysql_fetch_array($result))
{
    $list[$data['contact.nom']][] = $data['section.nom'] ;
}
?>


Et de traiter le tableau résultant
Ou alors
<?php
$controle = '';
$list = '<ul>';
while ($data = mysql_fetch_array($result))
{
    if($controle !== $data['contact.nom'])
    {  
        $list .= ($controle === '') ? '' : '</ul></li>' ;
        $list .= '<li>'.$data['contact.nom'] ;
        $list .= '<ul>';
        $controle = $data['contact.nom'] ;   // De cette façon, ce bloc IF ne s'executera qu'au prochain changement de contact.nom
    }
    $list.= '<li>'.$data['section.nom'].'</li>' ;
}
$list.='</ul>';
?>


Et d'afficher la variable $list

dimanche 30 octobre 2005 à 07:43:31 | Re : Afficher valeurs de tables

monoceros01

Réponse acceptée !
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 :)

dimanche 30 octobre 2005 à 10:20:52 | Re : Afficher valeurs de tables

Anthomicro

Salut,

plutôt que de faire des boucles inutiles pour savoir si y'a un nom identique, utilise la clause DISTINCT dans la requête MySQL :-)


    dimanche 30 octobre 2005 à 10:47:44 | Re : Afficher valeurs de tables

    monoceros01

    requête SQL: 
    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
     [Modifier] [Expliquer SQL] [Créer source PHP] [Actualiser]




    nom
    nom
    luc CE1
    luc CE2
    luc CM1
    nicolas CM1
    paul CM1
    paul CM2
    robert CE2
    robert CM2




    requête SQL: 
    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
     [Modifier] [Expliquer SQL] [Créer source PHP] [Actualiser]


    nom
    nom
    luc CE1
    luc CE2
    luc CM1
    nicolas CM1
    paul CM1
    paul CM2
    robert CE2
    robert CM2



    Ou est la différence? o.o
    dimanche 30 octobre 2005 à 10:50:24 | Re : Afficher valeurs de tables

    Anthomicro

    attends...


      dimanche 30 octobre 2005 à 10:51:30 | Re : Afficher valeurs de tables

      Anthomicro

      exporte la table que t'as crée stp monoceros :-) (ça m'évitera de la refaire)


        dimanche 30 octobre 2005 à 11:01:44 | Re : Afficher valeurs de tables

        monoceros01

        Bon on a dérivé ici mais on revien là :]
        dimanche 30 octobre 2005 à 11:03:38 | Re : Afficher valeurs de tables

        Anthomicro

        RAAAAAAHHHHH ok... (j'avais pas lu le problème en fait)

        je ne connais pas d'autre moyen que de parser tous les résultats (aie)


          dimanche 30 octobre 2005 à 11:04:06 | Re : Afficher valeurs de tables

          Anthomicro

          je croyais qu'il te fallait un seul nom...



            1 2 3 4

            Cette discussion est classée dans : table, afficher, tables, contact, sections


            Répondre à ce message

            Sujets en rapport avec ce message

            Liaison de table. [ par benett ] Bojour à tous,Pouvez-vous m'expliquez comment gérer les liaisons de type N-N entre 2 tables, j'ai un fichier intermédiaire de créer, mais je ne sais p Liaison de table. [ par benett ] Bojour à tous,Pouvez-vous m'expliquez comment gérer les liaisons de type N-N entre 2 tables, j'ai un fichier intermédiaire de créer, mais je ne sais p Liaison entre les tables [ par coupeau ] BonjourJ'ai deux tablesune table documentation et une table mot-clé. Comment puis insérer plusieurs mots-clés (N: cela dépend du document parfois 1 mo Afficher une ligne d'une table mysql [ par Alferox ] Bonjours,bon bin une question de base toute con.Je voudrais afficher uniquement la ligne qui port l'id 2 d'une table. Il n'y a pas plus simple que de Bloquage de tables (LOCK) [ par STef77 ] Bonsoir,J'ai une question sur MySQL (j'utilise la version 3.23.49-log sur ma debian (woody)).Etant donné que MySQL ne supporte pas les clés étrangères Sélectionner les lignes différentes entre deux tables [ par Mikemadest ] Bonjour,J'ai cherché sans trouver de réponse à mon problème,ce qui m'amène à vous poser cette question !D'avance je m'excuse si j'ai raté la solution Création de Tables via fichier .sql [ par LePhenol ] Bonjour, Je suis en train de créer un install.php pour installer un petit portail que j'ai programmé. J'en suis à la création des Tables SQL dans ma B comparaison d'enregistrements dans 2 tables [ par michelvernet2 ] bonjour,j'ai une table ETUDIANT composée des variables $A, $B, $C . cette table contient 30 lignes.j'ai une table REPONSES composée de svariables $RA, Comment m'y prendre? [ par zzzzzz ] Salut.En fait jai une table qui contient plusieurs champs. J'aimerai faire une sorte de "confimation" c'est pour un gereur d'article. Qq poste un arti requête de non concordance avec jointure 3 tables [ par dubitoph ] ChristopheHé oui, je suis toujours là avec mes angoisses pour mon mémoire.J'ai une base de données MySql qui contient, en autres, une table "interimai


            Nos sponsors


            Sondage...

            Comparez les prix

            CalendriCode

            Mai 2012
            LMMJVSD
             123456
            78910111213
            14151617181920
            21222324252627
            28293031   

            Consulter la suite du CalendriCode

            A découvrir



             
            Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
            CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
            CodeS-SourceS.com© est une marque déposée tous droits réservés

            Google Coop CodeS-SourceS Google Coop CodeS-SourceS
            Temps d'éxécution de la page : 1,342 sec (4)

            Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales