Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  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 :
    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 :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    21 198
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 198
    Points : 30 861
    Points
    30 861

    Par défaut

    Utilise une variable qui trace si tu as déjà affiché l'adresse ou non.
    Schématiquement :
    Code :
    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 :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    21 198
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 198
    Points : 30 861
    Points
    30 861

    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
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2012
    Messages : 764
    Points : 1 374
    Points
    1 374

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •