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 :

Regrouper les mêmes enregistrements dans un tableau [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut Regrouper les mêmes enregistrements dans un tableau
    Bonsoir, j'ai une table 'news' dans la quelle j'ai un champ "nom" et je souhaiterais regroupé tous les données des gens qui ont le même nom dans un tableau, avec le "nom" affiché en haut du tableau, et répété cette opération pour chaque "nom" différent, tous ca sur la meme page !

    je pense qu'il faut utilisé GROUP BY, mais comment faire pour couper les tableaux par le nom de la personnes concerné ?

    voici ce que j'ai fait pour afficher mon tableau :
    (ps: j'ai aussi réussi à mettre une couleur différente pour chaque ligne )
    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
    <table><tr bgcolor="#FFCC66">
    <th>Modifié</th>
    <th>Fait le</th>
    <th>Identité</th>
    <th>Date de la garde</th>
    <th>Type de garde</th>
    <th>Etat</th>
    <th>Signature</th>
    </tr>
    <?php
    $indice = 0;
    $retour = mysql_query("SELECT * FROM gardes WHERE mois='$nextmois_complet $annee' AND etat='Envoyé' ORDER BY id DESC");
    while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les garde
    {
    $reste = $indice % 2;
    if($reste == 0)
         {
    ?>
    <tr bgcolor="#FFFFFF">
    <td><?php echo '<a href="rediger_garde_rh.php?modifier_garde=' . $donnees['id'] . '">'; ?>Modifie</a></td>
    <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
    <td><?php echo stripslashes($donnees['nom']); ?></td>
    <td><?php echo stripslashes($donnees['date']); ?></td>
    <td><?php echo stripslashes($donnees['creneau']); ?></td>
    <td><?php echo stripslashes($donnees['etat']); ?></td>
    <td><?php echo stripslashes($donnees['signature']); ?></td>
    </tr>
    <?php
    }
    else
         {
    ?>
    <tr bgcolor="#DDDDDD">
    <td><?php echo '<a href="rediger_garde_rh.php?modifier_garde=' . $donnees['id'] . '">'; ?>Modifie</a></td>
    <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
    <td><?php echo stripslashes($donnees['nom']); ?></td>
    <td><?php echo stripslashes($donnees['date']); ?></td>
    <td><?php echo stripslashes($donnees['creneau']); ?></td>
    <td><?php echo stripslashes($donnees['etat']); ?></td>
    <td><?php echo stripslashes($donnees['signature']); ?></td>
    </tr>
    <?
         }
    $indice++;
    } // Fin de la boucle qui liste les garde
    ?>
    </table>

    Merçi pour votre aide

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Tu peux indexer tes enregistrements dans un array d'après le champ nom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $data = array( ) ;
    while ( $tuple = mysql_fetch_array($rs) ) {
        $data[$tuple['nom']][ ] = $tuple ;
    }
    Et ensuite boucler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ( $data as $nom => $tuples ) {
        echo $nom, '<br>' ;
        foreach ( $tuples as $tuple ) {
             // Affichage d'un enregistrement
        }
    }

  3. #3
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Peut-être plus léger pour tes couleurs de ligne :
    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
    <table><tr bgcolor="#FFCC66">
    <th>Modifié</th>
    <th>Fait le</th>
    <th>Identité</th>
    <th>Date de la garde</th>
    <th>Type de garde</th>
    <th>Etat</th>
    <th>Signature</th>
    </tr>
    <?php
    $color = '#DDDDDD';
    $nom='';
    $retour = mysql_query("SELECT * FROM gardes WHERE mois='$nextmois_complet $annee' AND etat='Envoyé' ORDER BY id DESC");
    while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les garde
    {
    	$color = ($color == '#DDDDDD') ? '#FFFFFF' : '#DDDDDD' ;
    	?>
    	<tr bgcolor="<?php echo $color; ?>">
    	<td><?php echo '<a href="rediger_garde_rh.php?modifier_garde=' . $donnees['id'] . '">'; ?>Modifie</a></td>
    	<td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
    	<td><?php echo stripslashes($donnees['nom']); ?></td>
    	<td><?php echo stripslashes($donnees['date']); ?></td>
    	<td><?php echo stripslashes($donnees['creneau']); ?></td>
    	<td><?php echo stripslashes($donnees['etat']); ?></td>
    	<td><?php echo stripslashes($donnees['signature']); ?></td>
    	</tr>
    	<?php
    } // Fin de la boucle qui liste les garde
    ?>
    </table>
    Fred

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    Bonjour, déja merçi d'avance pour votre aide, merçi à toi micetf pour le code des couleur, ca m'allége bien mais par contre j'ai fait ce que tu ma dit seb, j'ai les nom de ma table qui s'affiche en haut de mon tableau mais pa de données , et des messages d'erreur pour chaque colonnes,
    (Notice: Undefined variable: donnees in c:\program files\easyphp1-8\www\aut\liste_garde_rh(cop).php on line 124)

    voici mon code actuel :
    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
    <?php
    $color = '#DDDDDD';
    $nom='';
    $retour = mysql_query("SELECT * FROM gardes WHERE mois='$nextmois_complet $annee' AND etat='Envoyé' ORDER BY id DESC");
    $data = array( ) ;
    while ( $tuple = mysql_fetch_array($retour) ) {
        $data[$tuple['nom']][ ] = $tuple ;
    }
    //while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les garde
    //{
    $color = ($color == '#DDDDDD') ? '#FFFFFF' : '#DDDDDD' ;
    ?>
    <tr bgcolor="<?php echo $color; ?>">
    <td><?php echo '<a href="rediger_garde_rh.php?modifier_garde=' . $donnees['id'] . '">'; ?>Modifie</a></td>
    <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
    <td><?php echo stripslashes($donnees['nom']); ?></td>
    <td><?php echo stripslashes($donnees['date']); ?></td>
    <td><?php echo stripslashes($donnees['creneau']); ?></td>
    <td><?php echo stripslashes($donnees['etat']); ?></td>
    <td><?php echo stripslashes($donnees['signature']); ?></td>
    </tr>
    <?
    foreach ( $data as $nom => $tuples ) {
        echo $nom, '<br>' ;
        foreach ( $tuples as $tuple ) {
             // Affichage d'un enregistrement
        }
    }
    ?>
    peu etre j'ai mal placé le code !!

  5. #5
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Est-ce que la clause
    ORDER BY nom
    ne te permettrait déjà pas de ranger tes enregistrements dans le bon ordre ?
    Fred

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    si mais, mais les erreurs apparaissent, dans chacune des colonnes :
    (Notice: Undefined variable: donnees in c:\program files\easyphp1-8\www\aut\liste_garde_rh(cop).php on... )

    voici le code complet de ma page :

    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
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("pompier");
    //-----------------------------------------------------
    // Vérification 1 : est-ce qu'on veut poster une garde ?
    //-----------------------------------------------------
    if (isset($_POST['nom']) AND isset($_POST['date']) AND isset($_POST['mois']) AND isset($_POST['creneau']) AND isset($_POST['etat']) AND isset($_POST['signature']))
    {
    	$nom = addslashes($_POST['nom']);
        $date = addslashes($_POST['date']);
    	$mois = addslashes($_POST['mois']);
    	$creneau = addslashes($_POST['creneau']);
    	$etat = addslashes($_POST['etat']);
    	$signature = addslashes($_POST['signature']);
     
        // On vérifie si c'est une modification de garde ou pas
        if ($_POST['id_garde'] == 0)
        {
            // Ce n'est pas une modification, on crée une nouvelle entrée dans la table
            mysql_query("INSERT INTO gardes VALUES('', '" . $nom . "', '" . $date . "', '" . $mois . "', '" . $creneau . "', '" . $etat . "', '" . $signature . "', '" . time() . "')");
        }
        else
        {
            // On protège la variable "id_garde" pour éviter une faille SQL
            $_POST['id_garde'] = addslashes($_POST['id_garde']);
            // C'est une modification, on met juste à jour le titre et le date
            mysql_query("UPDATE gardes SET nom='" . $nom . "', date='" . $date . "', mois='" . $mois . "', creneau='" . $creneau . "', etat='" . $etat . "', signature='" . $signature . "' WHERE id='" . $_POST['id_garde'] . "'");
        }
    }
     
    //--------------------------------------------------------
    // Vérification 2 : est-ce qu'on veut supprimer une garde ?
    //--------------------------------------------------------
    if (isset($_GET['supprimer_garde'])) // Si on demande de supprimer une garde
    {
        // Alors on supprime la garde correspondante
        // On protège la variable "id_garde" pour éviter une faille SQL
        $_GET['supprimer_garde'] = addslashes($_GET['supprimer_garde']);
        mysql_query('DELETE FROM gardes WHERE id=\'' . $_GET['supprimer_garde'] . '\'');
    }
    ?>
    <table><tr bgcolor="#FFCC66">
    <th>Modifié</th>
    <th>Fait le</th>
    <th>Identité</th>
    <th>Date de la garde</th>
    <th>Type de garde</th>
    <th>Etat</th>
    <th>Signature</th>
    </tr>
    <?php
    $color = '#DDDDDD';
    $nom='';
    $retour = mysql_query("SELECT * FROM gardes WHERE mois='$nextmois_complet $annee' AND etat='Envoyé' ORDER BY id DESC");
    $data = array( ) ;
    while ( $tuple = mysql_fetch_array($retour) ) {
        $data[$tuple['nom']][ ] = $tuple ;
    }
    //while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les garde
    //{
    $color = ($color == '#DDDDDD') ? '#FFFFFF' : '#DDDDDD' ;
    ?>
    <tr bgcolor="<?php echo $color; ?>">
    <td><?php echo '<a href="rediger_garde_rh.php?modifier_garde=' . $donnees['id'] . '">'; ?>Modifie</a></td>
    <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
    <td><?php echo stripslashes($donnees['nom']); ?></td>
    <td><?php echo stripslashes($donnees['date']); ?></td>
    <td><?php echo stripslashes($donnees['creneau']); ?></td>
    <td><?php echo stripslashes($donnees['etat']); ?></td>
    <td><?php echo stripslashes($donnees['signature']); ?></td>
    </tr>
    <?
    foreach ( $data as $nom => $tuples ) {
        echo $nom, '<br>' ;
        foreach ( $tuples as $tuple ) {
             // Affichage d'un enregistrement
        }
    }
    ?>
    Mais le probléme dois venir de ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
    <td><?php echo stripslashes($donnees['nom']); ?></td>
    <td><?php echo stripslashes($donnees['date']); ?></td>
    <td><?php echo stripslashes($donnees['creneau']); ?></td>
    <td><?php echo stripslashes($donnees['etat']); ?></td>
    <td><?php echo stripslashes($donnees['signature']); ?></td>

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/01/2014, 16h20
  2. [AC-2003] Filtrer les enregistrements dans un tableau
    Par chougadosu dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/06/2010, 13h15
  3. [RegEx] Rechercher des éléments et les enregistrés dans un tableau
    Par arnaudperfect dans le forum Langage
    Réponses: 4
    Dernier message: 21/03/2010, 22h41
  4. Comment attraper tous les noeud d'un même type dans un tableau
    Par lodan dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 01/04/2007, 16h36
  5. Réponses: 15
    Dernier message: 02/12/2005, 17h12

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