Vous n'êtes pas identifié(e).
Pages :: 1
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
$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é
a++
Hors ligne
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
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 .
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
Eh bien c'est tout simple, je te fais un petit exemple :
On obtient donc :
array( "2007-06-05" => array( "Bertrand", "Sophie"),
"2007-06-08" => array( "Robert"),
"2007-06-10" => array( "Etienne")
)
Hors ligne
Pages :: 1