Sql+php

lsamsoumal Messages postés 36 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 27 octobre 2011 - 21 avril 2009 à 12:50
lsamsoumal Messages postés 36 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 27 octobre 2011 - 21 avril 2009 à 17:43
Bonjour tout le monde.
j'ai un petit problème que je me casse la tête pour le résoudre sans arrêt et ca ne marche toujour pas.
Il s'agit d'une table mysql 'presence' ayant comme colonnes 'id_user','nom','date_entree','date_sortie' et 'nb_heurs'.
je veux récupérer ses données et les afficher dans un tableau d'une page php mais je ne veux pas avoir une redondance des champs 'id_user' et 'nom'(un seul utilisateur peux entrer et sortir plusieurs fois).
est ce que quelqu'un peux m'aider???
Merci d'avance.

7 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
21 avril 2009 à 16:56
Bonjour,

que veux tu exactement comme sortie, car si une personne peut entrer et sortir plusieurs fois, tu ne pourra pas ressortir ca juste avec une requete

Le mieux est encore de sortir tes resultats classés par id_user (ou par nom), ensuite tu traite en php :
tant qu'il y a des enregistremets
    indiquer nom_user
    tant que id_user (ou nom_user) EST LE MEME :
        indiquer entree/sortie
       passer a l'enregistrement suivant
    fin tant que
fin tant que
0
lsamsoumal Messages postés 36 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 27 octobre 2011
21 avril 2009 à 17:14
en fait ma table presence est comme suit:
id_user | nom | entree | sortie | nb_heures
01 | Martin |10h00 |12h30 | 2h30
01 | Martin |14h00 |16h30 | 2h30
02 |Jean |08h00 |10h00 | 2h00
02 |Jean |12h00 | 17h00 | 3h00
je veux avoir comme sortie:
id_user | nom | entree |sortie| nb_heures
01 | Martin |10h00 |12h30 | 2h30
| |14h00 |16h30 | 2h30
02 |Jean |08h00 |10h00 | 2h00
| |12h00 | 17h00| 3h00
je ne veux pas de redondance au niveau du id_user et du nom.
Merci pour votre interêt.
0
lsamsoumal Messages postés 36 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 27 octobre 2011
21 avril 2009 à 17:21
je suis fortement désolé
mon dernier message n'est pas du tout clair
j'ai essayé de dessiner deux tableaux l'un de ma table sql et l'autre qui décrit la structure de l'affichage souhaité mais leur affichage dans le message s'est bouleversé.je ne sais pas comment dessiner un tableau dans ce forum...
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
21 avril 2009 à 17:24
directement en SQL, cela risque d'etre bien compliqué pour pas grand chose (je ne vois d'ailleur pas de solution comme ca, a part par une procédure stockée...), puisque de toute façon il faudra le traiter derriere en php pour l'affichage...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lsamsoumal Messages postés 36 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 27 octobre 2011
21 avril 2009 à 17:29
oui il y'a du php derriere pour l'affichage:

<?php
while ($row = mysql_fetch_array($resulta)) {
echo '<tr??>';
echo '<td align="center">'.$row['id_user'].'</td>';
echo '<td align="center">'.$row['nom'].'</td>';
echo '<td align="center">'.$row['entree'].'</td>';
echo '<td align="center">'.$row['sortie'].'</td>';
echo '<td align="center">'.$row['nb_heures'].'</td>';

echo '';
}
?>
Mais mon souci c'est au niveau de la redondance de id_user et nom
la requete utilisée est

$query = "SELECT * FROM `presence` WHERE `entree`='$today' Group by id_user ";
$result = mysql_query($query);
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
21 avril 2009 à 17:35
re,

j'avais compris pour le tableau...

sinon, votre requete ne me semble pas correcte... Vous faite un group by, sans utiliser de fonction d'agregat sur les autres champs.

l'idee que j'avancais dans mon précédent post, etait de recuperer toutes les info en SQL (SELECT * FROM `presence` WHERE `entree`='$today'), puis au moment de l'affichage, sauvegarder dans une variable temporaire le id_user avant de passer a l'enregistrement suivant. si l'enregistrement suivant contient le meme id_user que celui sauvegarde, ne pas afficher le nom, juste les dates entree/sortie. si le id_user est différents, le placer dans la variable temporaire, et afficher nom/entre/sortie
0
lsamsoumal Messages postés 36 Date d'inscription lundi 24 novembre 2008 Statut Membre Dernière intervention 27 octobre 2011
21 avril 2009 à 17:43
j'ai la même idée que vous avez cité mais je plante au niveau de l'affichage je n'arrive pas à réaliser l'idée en lignes de code.
En tout cas merci pour votre support.
Si vous arriviez à m'aider ça serait vraiment sympa.
0
Rejoignez-nous