Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/12/2012, 16h29   #1
picasso1er
Invité de passage
 
Inscription : 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)); ?>
picasso1er est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 18h44   #2
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 484
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 484
Points : 21 305
Points : 21 305
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:
}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 20h26   #3
picasso1er
Invité de passage
 
Inscription : juillet 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 13
Points : 1
Points : 1
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
picasso1er est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 21h00   #4
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 484
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 484
Points : 21 305
Points : 21 305
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.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 21h46   #5
Exia93
Membre Expert
 
Homme
Étudiant
Inscription : avril 2012
Messages : 608
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2012
Messages : 608
Points : 1 063
Points : 1 063
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.
Exia93 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h26.


 
 
 
 
Partenaires

Hébergement Web