PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 03-08-2010 10:04:02

brisefer
Membre
Inscription : 03-08-2010
Messages : 2

Help ! Créer un tableau selon mois et années

Qui pourrai me dire comment créer un tableau avec des données venant d'une base de données.

En fait ce que je dois faire, c'est extraire les pointages des agents et les afficher selon le mois sélectionné, 1 jour = 1 ligne à savoir que sur la même journée un agent peut pointer (entrer) et dépointer (sortie) plusieurs fois.

Ci-dessous le lien de l'image avec le tableau que j'aimerai obtenir (pas besoin de vous tracasser pour le lokk du tableau, il est déjà fait).

http://www.imagup.com/pics/1280815354.html

ci-dessous le lien d'une copie d'écran de ma BD avec les horaires (juste un test pour le mois de juin)

http://www.imagup.com/pics/1280817273.html

Ci-dessous mon code php qui va chercher la date et sui teste si l'agent à pointé l'année et le mois sélectionné précédemment.
[code : php]
connectbdd($host,$user,$pass,$bdd);
$requete="SELECT * FROM $table2";
$resultat2=mysql_query($requete);
$nb = @mysql_numrows($resultat2); // nombre d'enregistrement
$x = 0; //initialisation de la variable à zéro
$mois_ok = 0; //initialisation de la variable à zéro
$annee_ok = 0; //initialisation de la variable à zéro
while($enregistrement=@mysql_fetch_array($resultat2)){
        $id_agent[] = $enregistrement[3];
        if($id_agent[$x]==$iduser){ //vérifie si l'agent qui se connecte est bien repris dans la base de données des pointages, vérifie si il a bien pointé tel ou tel mois
           $pointage[] = $enregistrement[1]; // ici j'extrais l'heure de ma bd
           $typeentree[] = $enregistrement[2]; // ici j'extrais si l'agent est entré ou sorti
           $moisdate=date("m",strtotime($pointage[$x])); // ici j'extrais le mois de la date en cours
           $anneedate=date("Y",strtotime($pointage[$x])); // ici j'extrais l'année de la date en cours
           if ($valeur_mois == $moisdate){ //je teste si le mois sélectionné est bien repris dans la bd, donc si l'agent a bien pointé ce mois là
                $mois_ok = 1;
           }
           if ($anneedate == $annee){ // vérifie si il y a des pointage pour l'agent l'année sélectionnée
               $annee_ok = 1;
          }
          $x++;
        }
}
mysql_close();
[/code]

Après je ne sais plus, enfin si (voir résultat de la 1ère capture d'écran plus haut), si il y a une entrée et une sortie, mais si il y en a plus je n'arrive pas à les mettres sur la même ligne.

Je vous remercie d'avance.

@mic@lement.

Hors ligne

#2 03-08-2010 13:08:31

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Help ! Créer un tableau selon mois et années

$resultat2=mysql_query($requete);
while($enregistrement=@mysql_fetch_array($resultat2)){


si je comprends bien :

si tu as des millions de pointages, tu imagines un peu le traitement ????


penses avant tout à la clause WHERE de ta requêtes, ce sera bien plus optimisé wink

a++

Hors ligne

#3 03-08-2010 13:10:29

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Help ! Créer un tableau selon mois et années

Crées toi un tableau multidimensionnel avec comme première clé la date (et pas l'heure par contre).
Pour l'utilisation des tableaux cela reste assez basique, donc je te renvois au cours du site : http://phpdebutant.org/article11.php

Hors ligne

#4 03-08-2010 13:19:15

brisefer
Membre
Inscription : 03-08-2010
Messages : 2

Re : Help ! Créer un tableau selon mois et années

Pierrot ==> En fait je trie d'abord ma table sur la date et sur l'utilisateur (ce qui réduit fortement le travail), ensuite je boucle sur le résultat obtenu. Ca ne fait qu'entre 28 à 31 jours par requête !
Donc je ne pense pas que le traitement sera énorme.
Apparemment j'ai oublié de mettre la condition de tri dans l'exemple ici.

xTG ==> j'ai déjà regardé ce cours, mais je n'arrive pas à mettre en place pour obtenir ce que je voudrai avoir, je suis pas un spécialiste des tableaux en php ni même en html smile .

Sur la capture d'écran jointe, j'aimerai que la deuxième ligne s'affiche à la suite de la première afin de ne pas avoir plusieur fois la date en colonne 1.

Merci quand même pour vos réponses.

@mic@lement

Dernière modification par brisefer (03-08-2010 13:20:04)

Hors ligne

#5 03-08-2010 14:48:40

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Help ! Créer un tableau selon mois et années

Eh bien c'est tout simple, je te fais un petit exemple :

<?php
$monTabDebut = array( 0 => array( 'date' => "2007-06-05", 'nom' => "Bertrand"),
                                    1 => array( 'date' => "2007-06-08", 'nom' => "Robert"),
                                    2 => array( 'date' => "2007-06-05", 'nom' => "Sophie"),
                                    3 => array( 'date' => "2007-06-10", 'nom' => "Etienne"),
                                  );
$monTabFin = array(); // Initialisation
// On parcourt notre tableau
foreach($monTabDebut as $tab)
{
  $monTabFin[$tab['date']][] = $tab['nom']; // ajout du nom dans une nouvelle case du tableau positionné dans la clé de la date
}
?>
 

On obtient donc :

array( "2007-06-05" => array( "Bertrand", "Sophie"),
          "2007-06-08" => array( "Robert"),
          "2007-06-10" => array( "Etienne")     
        )

Hors ligne

Pied de page des forums