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 :

Données dans un tableau en php regrouper sur champ


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien informatique
    Inscrit en
    Mai 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2011
    Messages : 105
    Points : 55
    Points
    55
    Par défaut Données dans un tableau en php regrouper sur champ
    Bonjour,

    Dans le cadre d'un club sportif, je veux afficher les membres de chaque clubs regrouper sous le nom de leurs clubs et tous cela dans un tableau. Les données proviennent d'une table mysql. Cette table comporte les champs suivant, club, nom du joueur, n°, etc.,

    Malheureusement je ne trouve pas la solution pour regrouper sans que le nom de club appairassent pour tous les jours.

    Je vous met une copie d'écran pour mieux comprendre ma demande.

    Nom : 2017-02-07 20_42_51-Classeur1 - Excel.png
Affichages : 940
Taille : 6,5 Ko

    Merci pour votre aide

    Meilleures salutations

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu peux faire comme ça.

    Dans l'exemple je pars du principe que tu as lu les données et qu'elles sont triées dans le bon ordre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $sav_club = '';
    while (....) {
    	if ($club != $sav_club) {
    		$sav_club = $club;
    		print "$club<br/>";
    	}
    	print "$joueur - $score";
    }
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    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
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre du Club
    Homme Profil pro
    Technicien informatique
    Inscrit en
    Mai 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2011
    Messages : 105
    Points : 55
    Points
    55
    Par défaut
    Merci pour votre solution. Les données ne sont pas alignés.

    J'ai utilisé ce code la mais les données sont également pas aligné correctement comme dans un tableau

    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
    $result=mysql_query($select = 'SELECT * FROM mysql_licence_joueur where id_saison = '.$saison.' ORDER BY equipe ASC');
     
     
    $old = ""; 
    $i = 0;
     
    while($row = mysql_fetch_assoc($result)){
     
    if($row['equipe'] != $old){
     
       if($i != 0){echo "</ul>";} 
     
       echo '<p><strong>'.$row['equipe'] . ' </strong></p>' 
          . ''
          . '' .$row['id_joueur']. ' '.mb_convert_encoding($row['joueur'], "UTF-8", "ISO-8859-1"). ' ' .$row['saison']. ' </li>'; 
     
       $old = $row['equipe'] ;
    }
    else{
     
       echo '<br>' .$row['id_joueur']. ' '.mb_convert_encoding($row['joueur'], "UTF-8", "ISO-8859-1"). ' ' .$row['saison']. '</li>';
    }
    $i++;
    }
    echo '</ul>' e
    Dans cette exemple les données proviennent de trois champs. Elles ne sont pas alignés

    Nom : 2017-02-07 22_26_02-Recherche.png
Affichages : 851
Taille : 41,7 Ko

    Merci pour votre soutient
    Images attachées Images attachées  

  5. #5
    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
    Si tu veux une présentation en tableau HTML, il faut ... écrire un tableau HTML.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien informatique
    Inscrit en
    Mai 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2011
    Messages : 105
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    J'ai fait mon tableau, par contre j'ai que le premier enregistrement qui se trouve dans le table avec 2 colonnes.

    Voici mon code.

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <?php
     
    include 'connexion.php';
     
    $var=0;
     
    $select = 'SELECT * FROM mysql_equipe INNER JOIN mysql_licence_joueur ON mysql_equipe.id_equipe_domicile = mysql_licence_joueur.id_equipe ORDER BY abrev, joueur ASC';
     
     
     
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
     
     
     
    $total = mysql_num_rows($result);
     
    // début du tableau
     
     
     
    echo '<table width="100%" cellspacing="0">'."\n";
     
     
     
     
     
     
     
    echo '<tr>';
     
    echo '<td class="gras_titre"></td>';
     
    echo '<td class="gras_titre"></td>';
     
    echo '</tr>'."\n";
     
     
     
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne. 
     
    $old = ""; // ici on stocke la date du titre de la liste
    $i = 0;
     
    while($row = mysql_fetch_array($result)) {
     
     
    if($row['equipe'] != $old){
     
     
    echo '<p><strong>'.$row['equipe'] . ' </strong></p>';
     
     
    echo '<td align="left" >'.$row['id_joueur'].'</td>';
     
    echo '<td align="left" >'.mb_convert_encoding($row['joueur'], "UTF-8", "ISO-8859-1").'</td>';
     
    echo '</tr>'."\n";
     
    echo '</table>'."\n";
     
    $old = $row['equipe'] ;
     
    }
    else{
     
     
    echo '<td align="left" >'.$row['id_joueur'].'</td>';
     
    echo '<td align="left" >'.mb_convert_encoding($row['joueur'], "UTF-8", "ISO-8859-1").'</td>';
     
    echo '</tr>'."\n";
     
    echo '</table>'."\n";
    }
     
    $i++;
    }
    mysql_free_result($result);
     
     
    ?>
    Nom : 2017-02-08 12_56_35-Joueurs.png
Affichages : 846
Taille : 25,9 Ko
    Merci pour vos réponses

  7. #7
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Il te manque des tags <tr> et les tags </table> doivent être enlevés.
    Il faut ajouter un tag </table> juste après la fin de la boucle while.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  8. #8
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Essaie comme ça.

    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
     
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne. 
     
    $old = ""; // ici on stocke la date du titre de la liste
    $i = 0;
     
    while($row = mysql_fetch_array($result)) {
     
     
    	if($row['equipe'] != $old){
     
    		echo '<tr>'."\n"; 
    		echo '<td align="left" ><p><strong>'.$row['equipe'] . ' </strong></p></td>';
    		echo '<td align="left" ></td>';
    		echo '</tr>'."\n";
     
    		$old = $row['equipe'] ;
     
    	}
     
    	echo '<tr>'."\n";
     
    	echo '<td align="left" >'.$row['id_joueur'].'</td>';
     
    	echo '<td align="left" >'.mb_convert_encoding($row['joueur'], "UTF-8", "ISO-8859-1").'</td>';
     
    	echo '</tr>'."\n";
     
    	$i++;
    }
    echo '</table>'."\n";
    mysql_free_result($result);
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  9. #9
    Membre du Club
    Homme Profil pro
    Technicien informatique
    Inscrit en
    Mai 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2011
    Messages : 105
    Points : 55
    Points
    55
    Par défaut
    Super merci.

    Sujet peut-être clos

  10. #10
    Membre du Club
    Homme Profil pro
    Technicien informatique
    Inscrit en
    Mai 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2011
    Messages : 105
    Points : 55
    Points
    55
    Par défaut
    Je reviens vers vous car j'essaie d'intégrer ce code au restant du code du message précédent, j'utilise sur toutes mes autres pages. La couleur change pour chaque enregistrement.

    Je n'arrive pas à le placer le correctement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($var==0) 
    { 
    echo '<tr bgcolor="#d0cdcd">';
    $var=1; 
    }else{ 
    echo '<tr bgcolor="#FAFAFA">';
    $var=0; 
    }
    Merci

  11. #11
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Comme ça ?

    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
     
    <?php
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne. 
     
    $old = ""; // ici on stocke la date du titre de la liste
    $i = 0;
     
    while($row = mysql_fetch_array($result)) {
     
     
    	if($row['equipe'] != $old){
     
    		echo '<tr bgcolor="white">'."\n"; 
    		echo '<td align="left" ><p><strong>'.$row['equipe'] . ' </strong></p></td>';
    		echo '<td align="left" ></td>';
    		echo '</tr>'."\n";
     
    		$old = $row['equipe'] ;
    		$var = 0;
     
    	}
     
    	if ($var==0) { 
    		$color = '#d0cdcd';
    		$var=1; 
    	}else{ 
    		$color = '#FAFAFA';
    		$var=0; 
    	}	
     
    	echo "<tr bgcolor='$color'>"."\n";
     
    	echo '<td align="left" >'.$row['id_joueur'].'</td>';
     
    	echo '<td align="left" >'.mb_convert_encoding($row['joueur'], "UTF-8", "ISO-8859-1").'</td>';
     
    	echo '</tr>'."\n";
     
    	$i++;
    }
    echo '</table>'."\n";
    mysql_free_result($result);
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  12. #12
    Membre du Club
    Homme Profil pro
    Technicien informatique
    Inscrit en
    Mai 2011
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2011
    Messages : 105
    Points : 55
    Points
    55
    Par défaut
    Merci ça fonctionne.

    Par contre j'ai encore une autre. Avec ce code ci-dessous cela me fait trois colonne. L'entete d'équipe (colonne 1) et n° de joueur qui a mon avis est en colonne 1 aussi et le nom du joueur en colonne 3. Ce qui fait que j'ai un espace entre la colonne 1 et 3. J'aimerais que le n° de joueur et le nom du joueur soit cote à cote.

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    <?php
     
    include 'connexion.php';
     
    $var=0;
     
    $select = 'SELECT * FROM mysql_equipe INNER JOIN mysql_licence_joueur ON mysql_equipe.id_equipe_domicile = mysql_licence_joueur.id_equipe ORDER BY abrev, joueur ASC';
     
     
     
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
     
     
     
    $nb_classement =0;// met à zéro la variable nb_classement
     
     
     
    $total = mysql_num_rows($result);
     
    // début du tableau
     
     
     
    echo '<table width="100%" cellspacing="0" >'."\n";
     
     
     
    // première ligne on affiche les titres prénom et surnom dans 2 colonnes
     
     
     
    echo '<tr>';
     
    echo '<td class="gras_titre"></td>';
     
    echo '<td class="gras_titre"></td>';
     
    echo '</tr>'."\n";
     
     
     
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne. 
     
     
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne. 
     
    $old = ""; // ici on stocke la date du titre de la liste
    $i = 0;
     
    while($row = mysql_fetch_array($result)) {
     
     
    	if($row['equipe'] != $old){
     
    		echo '<tr bgcolor="white">'."\n"; 
    		echo '<td align="left" ><p><strong>'.$row['equipe'] . ' </strong></p></td>';
    		echo '<td align="left" ></td>';
    		echo '</tr>'."\n";
     
    		$old = $row['equipe'] ;
    		$var = 0;
     
    	}
     
    	if ($var==0) { 
    		$color = '#d0cdcd';
    		$var=1; 
    	}else{ 
    		$color = '#FAFAFA';
    		$var=0; 
    	}	
     
    	echo "<tr bgcolor='$color' height='$tdhc'>"."\n";
     
    	echo '<td align="left" >'.$row['id_joueur'].'</td>';
     
    	echo '<td align="left" >'.mb_convert_encoding($row['joueur'], "UTF-8", "ISO-8859-1").'</td>';
     
    	echo '</tr>'."\n";
     
    	$i++;
    }
    echo '</table>'."\n";
    mysql_free_result($result);
     
     
    ?>
    Nom : 2017-02-10 12_37_46-Joueurs.png
Affichages : 844
Taille : 19,5 Ko

    Merci pour votre aide

  13. #13
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Pas possible. Il n'y a que deux TD pour un TR.
    Il faudrait enlever les balises <p></p> dans le premier <td></td>
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

Discussions similaires

  1. [PHP 5.3] php et affichage de données dans un tableau
    Par redoran dans le forum Langage
    Réponses: 1
    Dernier message: 12/03/2012, 14h33
  2. Réponses: 2
    Dernier message: 22/07/2011, 15h44
  3. [MySQL] affichage des données dans un tableau avec mysql et php
    Par fofina dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/10/2007, 14h00
  4. Réponses: 9
    Dernier message: 04/04/2007, 11h16
  5. [Conception] Afficher les données (BDD) dans un tableau en PHP
    Par ox@na dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/09/2006, 15h24

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