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

PHP & Base de données Discussion :

Créer une section pour chaque valeur d'une colonne [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Chef de projets Décisionnel
    Inscrit en
    Juillet 2007
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projets Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 263
    Points : 320
    Points
    320
    Par défaut Créer une section pour chaque valeur d'une colonne
    Bonjour à tous.
    Je cherche à faire ce que j'appelle une section en PHP. C'est à dire :
    1. Je fais une requête (nom, prénom, ville)
    2. Quand j'affiche mes résultats, j'essaie de faire faire à PHP
    Pour chaque valeur de Ville
    Liste Nom, Prénom
    Ci-joint un exemple que j'ai fait sur Excel. Dans la phase de conception ça me parait super simple. Et pourtant je n'obtiens pas ce que je cherche.

    J'ai essayé de faire 2 boucles, de faire un array_unique(). Ça ne fonctionne pas. J'ai encore les doublons de ville.

    Mon idée est de prendre à part, ma ville et de ne l'afficher qu'une fois. Et ensuite lister les données qui lui en sont associées. Ainsi de suite...

    Est-ce que vous avez une idée ?
    Merciii

    Helrick
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 188
    Points : 121
    Points
    121
    Par défaut
    le plus simple :
    tu fais une requête pour récupérer les villes.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT(Ville) FROM ta_table ORDER BY Ville ASC
    à partir de ses villes tu fais une boucle dessus et pour chaque ville tu fais une requête
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ta_table WHERE Ville='la_ville_de_la_bouche' ORDER BY Nom ASC

  3. #3
    Invité
    Invité(e)
    Par défaut
    bonjour,
    avec une seule requete :
    Dernière modification par FirePrawn ; 29/07/2013 à 11h11. Motif: Mise en forme

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Sinon, c'est gérable en PHP :
    Tu initialises une variable temporaire $ville_en_cours.
    Tu fais une requête select nom, prenom, ville from la_table order by ville, nom, prenom.
    A chaque ligne de résultat, tu testes si $ville_en_cours vaut la ville de la ligne. Si non, tu affiches la ville (et tu changes la valeur de $ville_en_cours)

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Ou encore sans condition, dans un tableau associatif, qui implique une autre boucle à l'affichage.

    Perso je vote pour le group by :-)

  6. #6
    Membre averti
    Homme Profil pro
    Chef de projets Décisionnel
    Inscrit en
    Juillet 2007
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projets Décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 263
    Points : 320
    Points
    320
    Par défaut
    Finalement ce code est sorti des usines. Il marche
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    $resultat= mysql_query($req);
        $titre = null;
        echo'<table border = 1 width = 100% margin-left=50px>';
        while ($ligne=mysql_fetch_assoc($resultat))
        {
    	if ($titre == null)
    	{
    		$titre = $ligne[$rupture];
    		echo '<caption style="background-color:yellow; text-align:left;"><u><b>' .$titre. '</b></u></caption>';
    		for ($colonne = 0;$colonne<@mysql_numfields($resultat); $colonne++)
    		{
    			if (mysql_field_name($resultat ,$colonne) != $rupture )
    			{
    			    RenvoiTitreColonne(mysql_field_name($resultat ,$colonne),$triColonne);
    			}
    		}
     
    	}
    	if ($ligne[$rupture] != $titre)
    	{  
    		echo '</table>';
    		echo '<br>';
    		echo'<table margin-left=50px border=1 width=100%>';
    		$titre = $ligne[$rupture];
    		echo '<caption style="background-color:yellow; text-align:left;"><u><b>' .$titre. '</b></u></caption>';
    		for ($colonne = 0;$colonne<@mysql_numfields($resultat); $colonne++)
    		{
    			if (mysql_field_name($resultat ,$colonne) != $rupture )
    			{
    			    RenvoiTitreColonne(mysql_field_name($resultat ,$colonne),$triColonne);
    			}
    		}
    	}
    	echo'<tr>';
    	for ($colonne = 0;$colonne<@mysql_numfields($resultat); $colonne++)
    	{
    		if (mysql_field_name($resultat ,$colonne) != $rupture )
    		{
    		    echo '<td width = 50%>' .$ligne[mysql_field_name($resultat ,$colonne)].  '</td>';
    		}
    	}
    	echo '</tr>';
        }
    J'ai toutefois remarqué, après l'export Excel gère un peu comme il veut les aspect affichage. Genre CSS il n'en veut pas. Les fonctions SQL comme LPAD ou CONCAT sont en effet pour lui

    bref, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment créer des variables pour chaque ligne d'une table
    Par Slyvore dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 24/04/2012, 14h24
  2. Réponses: 3
    Dernier message: 09/01/2012, 14h08
  3. Réponses: 4
    Dernier message: 14/10/2011, 16h18
  4. [MySQL] Créer un enregistrement pour chaque ligne d'une zone de texte
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/09/2009, 20h14
  5. Réponses: 3
    Dernier message: 16/04/2009, 12h00

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