IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

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


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 5
    Points
    5
    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
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    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:
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 5
    Points
    5
    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
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    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.
    une réponse vous a permis d'avancer ?

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, 15h29
  2. afficher une fois le nom d'un champ
    Par marygil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/07/2008, 12h28
  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, 21h29
  4. Réponses: 11
    Dernier message: 27/06/2006, 16h05
  5. le sous formulaire s'affiche une fois sur deux
    Par Math dans le forum Access
    Réponses: 16
    Dernier message: 10/10/2005, 16h25

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