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 :

Affichage d'un tableau [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Affichage d'un tableau
    Bonjour les spécialistes
    Depuis quelque mois j’apprends à programmer pour créer un site (avec beaucoup de difficultés).j’ai du faire comme les Pokémon a 43ans j’ai du évoluer et passer de mécanicien a informaticien et c’est tres dur !!!
    Aujourd’hui je suis bloqué sur les ARRAY.
    Je dois créer un tableau qui affiche sur 10 ans le nombre de gens qui ont un métier selon leur année de naissance avec comme contrainte si pour une année j’ai 0 personne affecté au métier cela doit me mettre 0
    Voilà le résultat que je désir obtenir

    Ligne Metier/Date 1948 1949 1950 1951 1952 etc.
    1 Mécano 1 0 3 1 0
    2 Soudeur 0 1 1 2 0
    3 Bourrelier 0 0 2 1 1
    etc.

    Pour cela j’ai 2 requêtes SQL
    La première me sert à afficher les métiers une seul fois

    Voilà le résultat de la 2eme requete SQL
    NB nom_metier Annee
    1 Mécano 1948
    3 Mécano 1950
    1 Mécano 1951
    1 Soudeur 1949
    1 Soudeur 1950
    2 Soudeur 1951
    2 Bourrelier 1950
    etc.

    J’arrive à afficher les métiers et les dates par contre je n’arrive pas à faire coller le nombre qui correspond à l’année et aux métiers
    Voilà ce que j’obtiens
    Ligne Metier/Date 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958
    1 ARMEMENT 2 2 1 3 1 2 2 1 1 1 1
    2 MECANIQUE/EL 1 1 1 1 1 2 2 2 1 1 1
    3 MECANIQUE GE 1 2 1 4 6 4 4 1 1 2 1
    4 MECANIQUE/TO 1 7 9 1 3 1 9 6 11 1 1
    5 MECANIQUE/PE
    6 MECANIQUE/BO
    7 MECANIQUE/HY
    8 MECANIQUE/DI
    9 Etc.

    Le detail de mon programme


    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
    <title>Table Metier</title>
    </head>
    <body>                                  
    <?php
    //Pour un affichage des métiers uniques 
    $req1="SELECT DISTINCT nom_metier,num_metier FROM `avoir` AS a
            LEFT JOIN `metiers` AS met ON a.num_metier_metiers = met.num_metier 
            ORDER BY `met`.`num_metier` ASC";
            $res1=mysql_query($req1) or Die ("Requete ".$req1." incorrecte");
            $num_rows1= mysql_num_rows($res1);
     
    //2eme Requete  
    $req2="SELECT DISTINCT COUNT( * ) AS NB, nom_metier, YEAR( `date_naiss_person` ) AS Annee
    FROM `avoir` AS a
    LEFT JOIN `metiers` AS met ON a.num_metier_metiers = met.num_metier
    LEFT JOIN personnes AS p ON a.num_person_personnes = p.num_person
    WHERE date_fin_avoir = '0000-00-00'
    AND YEAR( `date_naiss_person` ) <1959
    GROUP BY `num_metier_metiers` , YEAR( `date_naiss_person` ) ";
                $res2=mysql_query($req2) or Die ("Requete ".$req2." incorrecte");
                $num_rows2= mysql_num_rows($res2);
     
    echo'<body>';
    // -------------------------------------------------------
    //Affichage
    // --------------------------------
    $k=1;
    ?>
    <table border="1" width="400">
    <?php
    // $NbrCol : le nombre de colonnes
    // $NbrLigne : le nombre de lignes
    $NbrCol = 1958;
    $NbrLigne = $num_rows1;
    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // 1ere ligne (ligne 0)
    echo'<thead>';//--entête------------------------------------------------>
    echo'<tr><th>Ligne</th>';//--debut 1ere ligne------------------------------>
    echo'<th style="background:#CCCCCC;">Metier/Date</th>';
    for ($j=1948; $j<=$NbrCol; $j++) {
    echo'<th style="background:#FFFF66;">';
    echo $j; 
    echo'</th>';//--1ere ligne affichage des dates-------------------------->
     }
    echo'</tr>';//--fin 1ere ligne------------------------------------------->
    echo'</thead>';//--fin entête-------------------------------------------->
    echo'<tbody>';//--corps-------------------------------------------------->
    // lignes suivantes:::::::::::::::::::::::::::::::::::::::::::::::::::::
    for ($b=0; $b<=$NbrLigne; $b++) {
    $tableau =mysql_fetch_array($res1);
    echo'<tr>';
    //début 1ere ligne corps---------------------------------------------->
    // 1ere cellule de la 1ere colonne de la 2eme ligne (colonne 0)
    echo'<td style="background:#1cff0f;">';
        echo $k;// affichage du nombre de ligne
    echo'</td>';
    echo'<td style="background:#7bfff4;" >';
            echo $tableau['nom_metier'];//cellule de la colonne suivante affichage du metier requete1
    echo'</td>';
     
        for ($c=0; $c<=10; $c++) {
    echo'<td style="background:#FFFF66;">';
        $tableau2=mysql_fetch_array($res2);
     
    //C’est ici que je coince j’ai tenté avec des if mais sans succès
     
            echo $tableau2['NB'];}
    echo'</td>';
        $k++;
    echo'</tr>';
            }
    echo'</tbody>';
    echo'</table>'; 
        ?>
    j'ai fais des recherches sur beaucoup de site dont
    http://j-reaux.developpez.com/tutori...-tableau-html/
    mais je ne trouve pas la solution a mon pb
    Si quelqu'un pouvez m'aider ou me diriger sur un tuto
    Je vous en remercie d'avance

  2. #2
    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
    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
    <?php
    // on liste les métiers
    while ($row = mysql_fetch_assoc($res1)) {
        $tblMetier[] = $row['nom_metier'];
    }
     
    // on range les résultat de la requête par métier et par année
    while ($row = mysql_fetch_assoc($res2)) {
        $annee = $row['Annee'];
        $metier = $row['nom_metier'];
        $tblData[$metier][$annee] = $row['NB'];
    }
     
    // on construit le tableau
    echo '<table border="1" width="400">'
    // en tête
          echo '<tr>
                <th><td>Métier</th>';
    for ($annee=1948; $annee <=1960; $annee++) {
          echo '<th>' . $annee . '</th>';  
    }
    echo '</tr>';
     
    // pour chaque métier -> 1 ligne
    foreach ($tblMetier as $metier) {
       echo '<tr>
               <td>' . $metier . '</td>';
            //pour chaque année -> 1 cellule
    	for ($annee=1948; $annee <=1960; $annee++) {
    			if (isset($tblData[$metier][$annee])) {
    				$valeur = $tblData[$metier][$annee];
    			}
    			else {
    				$valeur = 0;
    			}
     
    			echo '<td>' . $valeur . '</td>'
    	}
    	echo '</tr>';
    }
    echo '</table>';
    Ecris ton code avec propreté, tu t'y retrouveras mieux.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci a "sabotage"
    il y avait un PB dans le code que j'ai compris et ça marche j'ai les boules car tu m'a fais ça en 5 min et moi je galère depuis longtemps
    De mon coté j'ai encor du boulot pour arriver a ton niveau.....
    alors merci je vais m' efforcer de m’améliorer déjà en comprenant parfaitement ton code et en me l'appropriant pour mon site. Encor merci et bonne continuation et a une prochaine

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

Discussions similaires

  1. [JSP]affichage d'un tableau sur plusieurs pages
    Par MAJIK_ENIS dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 29/08/2005, 11h21
  2. [débutant]problèmes d'affichage dans un tableau
    Par Hastur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 16/08/2005, 12h00
  3. Prob d'affichage d'un tableau resultant d'u...
    Par Yohips dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 08/12/2004, 17h23
  4. [MFC] Affichage d'un tableau
    Par SethPech dans le forum MFC
    Réponses: 7
    Dernier message: 23/02/2004, 15h48
  5. xml-xsl-fo : probleme d'affichage d'un tableau
    Par clindoeil dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 12/12/2003, 12h46

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