Tableau PHP

ghost69
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 2 Avr 2010

Tableau PHP

Message le Ven Avr 02, 2010 21:44

Bonsoir à tous,

Voilà j'ai un soucis. Je fais une simulation d'employé dans une entreprise. Chaque jour cette employé à une certaine production et ceci s'enregistre de la façon suivante dans la table travail de ma base de donnée :

Id_employe Id_employeur production_jour date_production

Chaque jour une nouvelle occurrence est ajoutée et seule la date change. Maintenant j'aimerai afficher dans un tableau la productivité de l'employé avec le détail de chaque jour.

Voilà ma requête :
Code: Tout sélectionner
SELECT * FROM travail WHERE id_employeur = "'.$identre.'" AND date_production BETWEEN "'.$jour1.'" AND "'.$jour5.'" ORDER BY date_production


Et le tableau :

Code: Tout sélectionner
   <h3>Détail Productivité des employés sur les 5 derniers jours</h3>
      
   <table>
      <tr>
         <th>Employé</th>
         <th>Jour 1</th>
         <th>Jour 2</th>
         <th>Jour 3</th>
         <th>Jour 4</th>
         <th>Jour 5</th>
      </tr>

   
<?php
      //On créé la variables jour et jour5
      $jour5 = date("Y-m-d");
      $jour1 = date("Ymd",mktime(0,0,0,date("m"),date("d")-5,date("Y")));
      

      // On sélectionne les employés de l'entreprise en question
      $lire_liste = 'SELECT * FROM travail WHERE id_employeur = "'.$identre.'" AND date_production BETWEEN "'.$jour1.'" AND "'.$jour5.'" ORDER BY date_production';
      
      //id_employe    id_employeur    production_jour    date_production
      $faire_liste = mysql_query($lire_liste);
      
      // On liste dans le tableau.
      while ($liste = mysql_fetch_array($faire_liste))
      {
         //Récupère le pseudo avec l'id
         $pseudo_empl = mysql_query('SELECT pseudo FROM membre WHERE id = "'.$liste['id_employe'].'"') or die(mysql_error());
         while ($recpseudo = mysql_fetch_array($pseudo_empl))
         {
            $lepseudo_empl = $recpseudo['pseudo'];
         }
   
?>         
         <tr>
         <td><?php echo $lepseudo_empl; ?></td>
         <td><?php echo stripslashes($liste['id_employeur']); ?></td>
         <td><?php echo stripslashes($liste['production_jour']); ?></td>
         <td><?php echo stripslashes($liste['date_production']); ?></td>
         </tr>
<?php
      }
      

?>
   </table>


Donc jusque là tout ce passe bien j'ai bien sauf que dans mon tableau j'ai une ligne pour chaque jour, or comme vous le voyez leur de la déclaration de mon tableau HTML, je désire une ligne par employé avec dans la même ligne les 5 jours de travail.

Comment faire ?

Merci d'avance !


Marie-Aude
Modérateur
Modérateur
 
Messages: 11901
Inscription: 5 Juin 2006

Re: Tableau PHP

Message le Ven Avr 02, 2010 22:30

Les requetes "analyse croisées" n'existent pas en natif en mysql. Il faut passer par une première requete, qui trouve les noms de colonnes de la table, et qui va générer une chaine de texte à insérer dans la deuxieme requete

http://dev.mysql.com/tech-resources/articles/wizard/print_version.html

ghost69
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 2 Avr 2010

Re: Tableau PHP

Message le Ven Avr 02, 2010 22:52

En gros dans mon While je met un autre while qui génère la date du jour 2 puis un autre avec la date du jour 3 etc... jusqu'au jour 5 c'est ça ? Et puis quand mes 100 membres se connecte le site explose ? lool

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Tableau PHP

Message le Ven Avr 02, 2010 23:06

Dans ton while, tu stockes les informations dans un tableau de tableaux:

while (...)
{
$production[$liste['id_employeur']][$liste['date_production']] = $liste['production_jour'];
}

Ensuite, tu fais deux boucles imbriquées, l'une sur le premier niveau du tableau (les employés), puis sur le deuxième niveau (les dates). Evidemment il va falloir gérer le cas où tous les employés n'ont pas travaillé tous les jours.

Jacques.


Marie-Aude
Modérateur
Modérateur
 
Messages: 11901
Inscription: 5 Juin 2006

Re: Tableau PHP

Message le Ven Avr 02, 2010 23:36

Non ce n'est pas une imbrication de while. Ce sont des select mysql, pas du php.

Le lien que je t'ai donné est un peu trapu, et en anglais, mais avec un crayon et un papier ça marche assez bien ^^
Et ça gère parfaitement les cas où les employés n'ont pas travaillé un jour donné.


reglisse
WRInaute passionné
WRInaute passionné
 
Messages: 1073
Inscription: 15 Nov 2005

Re: Tableau PHP

Message le Sam Avr 03, 2010 7:25

oui mais on se retrouve avec des requêtes qui consomme pas mal et un site avec un temps de réponse énorme non ?

ghost69
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 2 Avr 2010

Re: Tableau PHP

Message le Sam Avr 03, 2010 11:17

Marie-Aude a écrit:Non ce n'est pas une imbrication de while. Ce sont des select mysql, pas du php.

Le lien que je t'ai donné est un peu trapu, et en anglais, mais avec un crayon et un papier ça marche assez bien ^^
Et ça gère parfaitement les cas où les employés n'ont pas travaillé un jour donné.


Ouais mais pour extraire un résultat un while ou extract est quasi indispensable ^^
Et je ne sais pas si tu as vu comment je gère mon tableau mais ça peut vite être galère pour gérer plusieurs membres ^^

En gros une requête pour chaque jour de travail ?

DadouDuck
WRInaute impliqué
WRInaute impliqué
 
Messages: 910
Inscription: 28 Mai 2007

Re: Tableau PHP

Message le Sam Avr 03, 2010 11:20

Sur des tables correctement indexées le temps de réponse reste correct

ghost69
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 2 Avr 2010

Re: Tableau PHP

Message le Sam Avr 03, 2010 11:28

Normalement m'a table est correctement indexé ^^
Bon ben merci à tous et je reviens si ya des soucis !


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité