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 :

Présenter un tableau échelonné


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Par défaut Présenter un tableau échelonné
    bonjours, je ne suis pas une bête MYSQL/PHP et je planche sur un petit problème.

    j'ai une table qui ressemble a la suivate:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    ac_id	titre	desc	jours	mois	annee
    1	act01	desc1	28	Mars	2008
    2	act02	desc2	12	Janvier	2009
    3	act03	desc3	22	mai	2009
    4	act04	desc4	23	mai	2009
    et je cherche a regroupper le contenu pour que cela me donne quelque chose dans le genre de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    2008
         Mars
              act01 - desc01
    2009
         Janvier
               act02 - desc02
         mai
               act03 - desc03
               act04 - desc04
    auriez vous des suggestion?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 12
    Par défaut
    Salut,

    dans ton cas je pense que le plus simple est de réaliser ton tableau avec ton langage coté serveur (php par exemple) :
    * fais une requête du type "select * from ma_table"
    * récupère chaque ligne de ta requête dans un tableau associatif avec une boucle while
    * fais ton tableau final en php (ou autre)

    Espérant que ça aide...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 69
    Par défaut
    Salut,

    Finalement ça aurait été plus simple d'enregistrer le timestamp par exemple dans une colonne date plutôt que de faire des colonnes jour/mois/année. C'est moins lourd et un simple 'oder by date' aurait suffit.

    Enfin c'est l'avis de quelqu'un qui n'est pas une bête non plus.

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Citation Envoyé par Sparktacus Voir le message
    Finalement ça aurait été plus simple d'enregistrer le timestamp par exemple dans une colonne date plutôt que de faire des colonnes jour/mois/année. C'est moins lourd et un simple 'oder by date' aurait suffit.
    Je confirme ! Séparer en trois colonnes complique énormément toutes les comparaisons ou calculs sur les dates !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Par défaut
    d'accord je vais donc esseyer de faire cela autrement. merci pour vos réponses, je travaille justement en php et le probleme c'est que je ne suis pas certain de comprendre la réponse de hjhjhj. lorsque j'essai de faire ma boucle pour afficher que l'année par exemple il me sort ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    2008
    2009
    2009
    2009
    ce que je voudrais, c'est qu'il m'affiche que ceci:
    pour ensuite faire la même requete mais pour le mois de cette année là qui donnerais donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    2008
         Mars
    2009
         Janvier
         mai

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    On va faire plus simple. Disons que tu fais une requête triée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = "SELECT annee, mois, titre, desc
    FROM ta_table
    ORDER BY annee, mois, jour" ;
    Ensuite, tu détectes les changements d'année et de mois au cours de la lecture du résultat :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    echo "<table>" ;
    $resu = mysql_query($sql) or die(mysql_error()) ;
    $old_annee = '' ;
    $old_mois = '' ;
    while ($lig = mysql_fetch_array($resu)) {
    if ($lig['annee'] != $old_annee) 
      echo "<tr><td>$lig[annee]</td><td></td><td></td></tr>\n" ;
    if ($lig['mois'] != $old_mois) 
      echo "<tr><td></td><td>$lig[mois]</td><td></td></tr>\n" ;
    echo "<tr><td></td><td></td><td>$lig[titre] - $lig[desc]</td></tr>\n" ;
    $old_annee = $lig['annee'] ;
    $old_mois = $lig['mois'] ;
    }
    echo "</table>" ;

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Par défaut
    merci beaucoup! on y est presque je crois. voici donc le code que j'ai eu a la fin:

    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
     
    echo "<table>" ;
    $old_annee = '' ;
    $old_mois = '' ;
    $old_jour = '' ;
    $sql = mysql_query("SELECT * FROM activite ORDER BY annee,mois,jour") ;
    while ($lig = mysql_fetch_array($sql)) {
    if ($lig['annee'] != $old_annee) 
      echo "<tr><td>$lig[annee]</td><td></td><td></td></tr>\n" ;
    if ($lig['mois'] != $old_mois)
     
            if ($lig['mois'] == '1'){
     
    	$mois = "janvier";
            }
    	if ($lig['mois'] == '2'){
    	$mois = "fevrier";	
    	}
    	if ($lig['mois'] == '3'){
    		$mois = "mars";
    	}
    	if ($lig['mois'] == '4'){
    		$mois = "avril";
    	}
    	if ($lig['mois'] == '5'){
    		$mois = "mai";
    	}
    	if ($lig['mois'] == '6'){
    		$mois = "juin";
    	}
    	if ($lig['mois'] == '7'){
    		$mois = "juillet";
    	}
    	if ($lig['mois'] == '8'){
    		$mois = "aout";
    	}
    	if ($lig['mois'] == '9'){
    		$mois = "septembre";
    	}
    	if ($lig['mois'] == '10'){
    		$mois = "octobre";
    	}
    	if ($lig['mois'] == '11'){
    		$mois = "novembre";
    	}
    	if ($lig['mois'] == '12'){
    		$mois = "decembre";
    	}
    echo "<tr><td></td><td>$mois</td><td></td></tr>\n" ;
    	echo "<tr><td></td><td></td><td>$lig[jour] - $lig[titre] - $lig[description]</td></tr>\n" ;
    $old_annee = $lig['annee'] ;
    $old_mois = $lig['mois'] ;
    $old_jour = $lig['jour'] ;
    }
    echo "</table>" ;

    qui me donne le résultat suivant:

    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
     
    2008		
    	janvier	
    		28 - activite1 - une petite description
    2009		
    	fevrier	
    		12 - test2 - test2
    	mars	
    		30 - test3 - test3
    	avril	
    		30 - test5 - test5
    	avril	
    		31 - test4 - test4
    	avril	
    		31 - test6 - test6

    donc tout ce met en ordre, il suffirait de réunir les mois ensemble et les jours ensemble aussi.

    pour que cela donne au final:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    2008		
    	janvier	
    		28 - activite1 - une petite description
    2009		
    	fevrier	
    		12 - test2 - test2
    	mars	
    		30 - test3 - test3
    	avril	
    		30 - test5 - test5
     
    		31 - test4 - test4
    		   - test6 - test6
    merci encore pour toute l'aide!

  8. #8
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    A la place de

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<tr><td></td><td>$mois</td><td></td></tr>\n" ;

    il faut utiliser :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($lig['mois'] != $old_mois) echo "<tr><td></td><td>$mois</td><td></td></tr>\n" ;

    afin de n'afficher le mois que s'il est différent.

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/02/2010, 09h12
  2. [SQL] Résultat requête : présenter séparement colonnes d'un même tableau
    Par PuppeT mAsTer dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 04/07/2006, 14h18
  3. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21
  4. transmision de tableau en parametre
    Par Horus dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2002, 11h15
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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