Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/11/2010, 15h51   #1
Futur Membre du Club
 
Prisss
Étudiant
Inscription : juin 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : Prisss
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 86
Points : 16
Points : 16
Par défaut afficher une seule fois un titre pour différents clients qui ont le même titre

Bonjour,

je rencontre un problème avec ma requête, celle-ci est correcte mais ceci n'est pas mon problème.

en faite, j'ai plusieurs titres, "mon_libelle_1", "mon_libelle_2" etc
j'ai différents clients "mon_client_1", "mon_client_2" etc
donc les 5 premiers clients appartiennent au titre 1, les 5 suivant au titre 2 etc.

ma requête m'affiche :
Citation:
mon_libelle_1
mon_client_1
mon_libelle_1
mon_client_2
mon_libelle_1
mon_client_3
mon_libelle_2
mon_client_4
mon_libelle_2
mon_client_5
et ainsi de suite.

j'aimerai que mon_libelle_1 ne s'affiche qu'une et une seule fois pour les clients dépendant de ce titre.
enfait que cela me donne :
Citation:
mon_libelle_1
mon_client_1
mon_client_2
mon_client_3
mon_libelle_2
mon_client_4
mon_client_5
etc
j'ai fais comme requête :
Code :

Citation:
SELECT DISTINCT(LibelleCategorie), NomEntreprise, TexteClient
FROM client, categorie
WHERE client.IdCategorie=categorie.IdCategorie
donc que dois je faire pour n'afficher qu'une fois le libellé pour différents clients ?

je vous remercie =)
Prisss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 16h18   #2
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Euh, j'ai du mal à comprendre : une requête SQL te renvoie des lignes avec pour chaque ligne autant de champs que tu lui demandes. Il n'y a pas de notion hiérarchique.

Tu auras un résultat genre

categorie1 , client1
categorie1 , client2
categorie1 , client3
categorie1 , client4
categorie1 , client5
categorie2 , client6
categorie3 , client7
categorie4 , client8
....
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 16h21   #3
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
pour ce genre de problème, une solution un peu bourrine consiste à trier ta liste sur le libelle et ensuite à mémoriser le libelle d'un tour de boucle au suivant.

On peut avoir le bout de code qui lit le résultat de ta requête ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 16h24   #4
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 127
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 127
Points : 7 271
Points : 7 271
Bonsoir,

+1Celira,
En ajoutant "ORDER BY LibelleCategorie" dans la requete pour faciliter la tache.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 16h26   #5
Futur Membre du Club
 
Prisss
Étudiant
Inscription : juin 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : Prisss
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 86
Points : 16
Points : 16
j'ai mis en PJ ce que j'ai.
mais par exemple pour le libellé "Education Nationale" j'aimerai que le libellé n'apparaisse qu'une fois pour les 5 clients.

euh comment faire un tour de boucle ? avec un "while" ?
(je suis pas doué en php alors j'ai du mal à comprendre certaines choses)
Prisss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 16h30   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Priss, tu dois bien avoir un code qui execute ta requête genre un mysql_query ou un pdo->execute et quelque chose qui boucle dessus pour faire l'affichage.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 16h38   #7
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 127
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 127
Points : 7 271
Points : 7 271
Un truc du genre
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
$result=mysql_query("SELECT DISTINCT(LibelleCategorie), NomEntreprise, TexteClient
FROM client, categorie
WHERE client.IdCategorie=categorie.IdCategorie ORDER BY LibelleCategorie");
$libelle="";
while($row=mysql_fetch_array($result)){
  if($libelle != $row["LibelleCategorie"]){
     echo $row["LibelleCategorie"]."<br/>";
     $libelle = $row["LibelleCategorie"]
  }
  echo $row["NomEntreprise"]."<br/>";
  .....
}

A+
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 16h40   #8
Futur Membre du Club
 
Prisss
Étudiant
Inscription : juin 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : Prisss
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 86
Points : 16
Points : 16
ben j'ai ca : (tout le code)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
	include "connexion.php";
//Création et envoi de la requête
$query="SELECT LibelleCategorie, NomEntreprise, TexteClient FROM client, categorie WHERE client.IdCategorie=categorie.IdCategorie order by LibelleCategorie";
$result=mysql_query($query);
//Récupération des résultats
while ($row=mysql_fetch_row($result))
{
echo '<font face="comic sans ms">';
$LibelleCategorie=$row[0];
$NomEntreprise=$row[1];
$TexteClient=$row[2];
echo "<tr>\n
	<td>$LibelleCategorie</td><br />
	<td>$NomEntreprise<br />
	<td>$TexteClient</td></tr><p>";
}
// on ferme la connexion à mysql
mysql_close(); 
?>
donc j'ai besoin de mettre un "if" ?
Prisss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 17h02   #9
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 127
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 127
Points : 7 271
Points : 7 271
regarde l'exemple que je vous ai donné.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 10h58   #10
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 957
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 957
Points : 18 165
Points : 18 165
Envoyer un message via MSN à CinePhil
DISTINCT s'applique à toutes les colonnes du SELECT ; inutile de vouloir le forcer à n'en prendre qu'une en compte en la mettant entre parenthèses !

Les deux requêtes ci-dessous sont équivalentes et opéreront la distinction sur le couple de colonnes, jamais sur une seule.
Code SQL :
1
2
3
4
5
SELECT DISTINCT (colonne1), colonne2
FROM la_table;
 
SELECT DISTINCT colonne1, colonne2
FROM la_table
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 18h02   #11
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
Il faut que les entreprises soient triées par catégorie...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
$query="SELECT LibelleCategorie, NomEntreprise, TexteClient FROM ..." ;
$result=mysql_query($query);
$categorieCourrante = '' ; // <= C'est là que tout se joue...
while ($row=mysql_fetch_assoc($result)) {
    if ( $categorieCourrante != $row['LibelleCategorie'] ) { // <= Et ici...
        echo "<tr><td colspan='3'>{$row['libelleCategorie']}</td></tr>" ;
        $categorieCourrante = $row['libelleCategorie'] ;
    }
    echo "<tr>\n
	<td>{$row['NomEntreprise']}</td>
	<td>{$row['TexteClient']}</td></tr>";
}
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 10h52   #12
Futur Membre du Club
 
Prisss
Étudiant
Inscription : juin 2010
Messages : 86
Détails du profil
Informations personnelles :
Nom : Prisss
Âge : 21

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 86
Points : 16
Points : 16
c'est super merci de ton aide Séb =)
Prisss est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h59.


 
 
 
 
Partenaires

Hébergement Web