1. #1
    Invité de passage
    Inscrit en
    juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 13
    Points : 1
    Points
    1

    Par défaut Afficher une fois la boite postale quand elle se idéntique

    Bonjour à tous les gars!
    Je développe un annuaire électronique jusque la tout va bien. J'ai un soucis, je vais essayer d'être le plus claire possible. Quand les infos dans ma BD sont les mêmes je regroupe car dans l'annuaire une entreprise peut avoir plusieurs numéros et la même boite postale du genre:

    Nom de la société: CACOMIAF
    Ville: Irlande
    Adresse: 01 BP 1317
    Tel: (225) 21 24 21 48
    --------------------------
    Nom de la société: CACOMIAF
    Ville: Irlande
    Adresse: 01 BP 1317
    Tel: 21 24 21 49
    --------------------------
    Nom de la société: CACOMIAF
    Ville: Irlande
    Adresse: 01 BP 1317
    Tel: 21 24 21 54
    --------------------------
    Mon problème j'aimerais que lorsque les boite postales sont les mêmes l'afficher une seule fois ce qui donnera:

    Nom de la société: CACOMIAF
    Ville: Irlande
    Adresse: 01 BP 1317
    Tel: 21 24 21 48
    --------------------------
    Nom de la société: CACOMIAF
    Ville: Irlande
    Tel: 21 24 21 49
    --------------------------
    Nom de la société: CACOMIAF
    Ville: Irlande
    Tel: 21 24 21 54
    --------------------------
    Voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query_client_affiche = "SELECT id,RAISON,LOCALITE,ADRESSE,QUALIFICATION,CONTACT,SECTEUR, COUNT(*) AS nb_num FROM page_jaune WHERE RAISON LIKE '%$_GET[RAISON]%' GROUP BY RAISON,CONTACT";
    $client_affiche = mysql_query($query_client_affiche, $req) or die(mysql_error());
    $row_client_affiche = mysql_fetch_assoc($client_affiche);
    Ma page d'affichage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?php  do { ?>
              <table width="401" border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td width="397" height="83" valign="top" bgcolor="#E2E2E2"><strong><br />
                    </strong>
                      <table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
                        <tr>
                          <td width="6%"><img src="images/iconMail.png" width="16" height="16" /></td>
                          <td width="94%"><?php echo $row_client_affiche['LOCALITE']; ?></td>
                        </tr>
                        <tr>
                          <td><img src="images/iconAdresse.png" width="16" height="16" /></td>
                          <td><?php echo $row_client_affiche['ADRESSE']; ?></td>
                        </tr>
                        <tr>
                          <td><img src="images/iconTel.png" width="16" height="16" /></td>
                          <td>(225) <?php echo $row_client_affiche['CONTACT']; ?></td>
                        </tr>
                      </table>
                    <br /></td>
                </tr>
              </table>
              <br />
              <? }while($row_client_affiche = mysql_fetch_assoc($client_affiche)); ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    23 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 23 894
    Points : 35 138
    Points
    35 138

    Par défaut

    Utilise une variable qui trace si tu as déjà affiché l'adresse ou non.
    Schématiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($adresse !== TRUE) {
       echo $row_client_affiche['ADRESSE'];
       $adresse = TRUE:
    }

  3. #3
    Invité de passage
    Inscrit en
    juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 13
    Points : 1
    Points
    1

    Par défaut

    Merci pour ta réponse,
    Quand j'applique le code que tu m'a donné,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php 
    if ($adresse !== TRUE) {
       echo $row_client_affiche['ADRESSE'];
       $adresse = TRUE;
    } ?>
    il met la Boite postale a la première et efface sur toute les autres lignes mêmes quand les Boites postales sont différentes, Mon problème ce que quand les boites postale sont les mêmes elle s'affiche une seule fois ainsi de suite si j'ai dans mon affichage:

    BP 40
    BP 40
    BP40
    BP46
    BP46
    BP46

    Je dois avoir:
    BP 40
    BP46

    Merci pour tout frangin

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    juillet 2005
    Messages
    23 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 23 894
    Points : 35 138
    Points
    35 138

    Par défaut

    Il faut que tu remettes la variable à FALSE quand tu passes à une autre boite (si j'ai bien suivi, tu fais une requête par société).
    D'ailleurs faire ce genre de requêtes imbriquées (si tu fais bien comme ça) ce n'est vraiment pas optimisé. Il vaut mieux faire une seule requête qui recupère tout.

  5. #5
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2012
    Messages : 771
    Points : 1 430
    Points
    1 430

    Par défaut

    Bonsoir,

    une petite chose, dans ta requête SQL tu utilise GROUP BY mais tu ne spécifie pas toutes les colonnes que tu utilise dans le select :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id,RAISON,LOCALITE,ADRESSE,QUALIFICATION,CONTACT,SECTEUR, COUNT(*) AS nb_num FROM page_jaune WHERE RAISON LIKE '%$_GET[RAISON]%' GROUP BY RAISON,CONTACT

    tu a les colonnes :
    • id
    • RAISON
    • LOCALITE
    • ADRESSE
    • QUALIFICATION
    • CONTACT
    • SECTEUR


    dans le select alors que dans le GROUP BY:
    • RAISON
    • CONTACT


    donc les colonnes id, LOCALITE, ADRESSE, QUALIFICATION, SECTEUR auront une valeur aléatoire.

Discussions similaires

  1. Afficher une liste de valeurs ,même si elles n'existent pas
    Par Mindiell dans le forum MS SQL-Server
    Réponses: 4
    Dernier message: 13/02/2010, 14h29
  2. afficher une fois le nom d'un champ
    Par marygil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/07/2008, 11h28
  3. Page qui s'affiche une fois sur deux.
    Par j.b.snecma dans le forum ASP
    Réponses: 1
    Dernier message: 12/11/2007, 20h29
  4. Réponses: 11
    Dernier message: 27/06/2006, 15h05
  5. le sous formulaire s'affiche une fois sur deux
    Par Math dans le forum Access
    Réponses: 16
    Dernier message: 10/10/2005, 15h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo