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

PHP & Base de données Discussion :

perte de variable Time ? [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Par défaut perte de variable Time ?
    J'y comprends plus rien !
    Autodidacte, je crois avoir lu un peu partout... Et j'ai un souci que je soumets, pour un calcul de temps. Beaucoup de discussions ont été faites, mais je n'ai pas trouvé (ou pas compris, mes neurones sont sans doute fatigués...).
    Mon projet: calculer des temps horaires.
    Dans une table Mysql, j'ai un champ de type Time. Je peux l'afficher et faire des calculs. J'affiche immédiatement sans difficulté. J'enregistre une variable "temps donné" et une autre "temps reçu". Quand je veux faire la différence, le résultat est tronqué (?). Il me semble qu'il n'affiche que les heures. Mon code:
    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
    	$Relire=$bdd->query('SELECT * FROM adherents ORDER BY ANumero ');
    		while ($row=$Relire->fetch(PDO::FETCH_ASSOC)) {
    			$Numero=($row['ANumero']);
    			$Nom=($row['ANom']);
    			$Prenom=($row['APrenom']);
    			echo '<tr><td>',$Numero,'</td><td>',$Nom,'</td><td>',$Prenom,'</td>';
    			// calcul du solde: copie de /includes/calcul_temps_cumule.php
    								// temps donné
    				$ReqTempsDonne_Secondes='SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(EDuree))) FROM echanges WHERE ECandidat='.$Numero;
    				foreach ($bdd->query($ReqTempsDonne_Secondes) as $Ligne){
    					$TempsDonne=$Ligne[0];
    					echo'<td>',$TempsDonne,'</td>';
    					$TotalDesCumulsDonnes=$TotalDesCumulsDonnes+$TempsDonne;
    					}
    								// temps reçu !
    				$ReqTempsRecu_Secondes='SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(EDuree))) FROM echanges,demandes WHERE(echanges.EDemande=demandes.DNumero) AND (demandes.DAdherent='.$Numero.')';
    				foreach ($bdd->query($ReqTempsRecu_Secondes) as $Ligne){
    					$TempsRecu=$Ligne[0];
    					echo'<td>',$TempsRecu,'</td>';
    					$TotalDesCumulsRecus=$TotalDesCumulsRecus+$TempsRecu;
    					}
    								// solde
    				$Solde_secondes=$TotalDesCumulsDonnes-$TotalDesCumulsRecus;
    					echo '<td>',$Solde_secondes,'</td></tr>';

  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
    Par défaut
    le résultat est tronqué (?). Il me semble qu'il n'affiche que les heures. Mon code:
    Comment ça tu n'es pas sûr ? Contrôle tes résultats ligne par ligne pour comprendre d'ou vient ton résultat.

    Par contre il manque des groupements dans tes requêtes puisque tu as une SUM.
    D'ailleurs tu pourrais faire une seule requête au lieu de 3.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT ANumero, ANom, APrenom, SEC_TO_TIME(SUM(TIME_TO_SEC(EDuree))) as temps_donnee, temps_recu
    FROM adherents A
    JOIN echanges E ON A.ANumero = E.ECandidat
    JOIN 
    (SELECT DNumero, SEC_TO_TIME(SUM(TIME_TO_SEC(EDuree))) as temps_recu
    FROM echanges E2 JOIN demandes ON E2.EDemande=demandes.DNumero
    GROUP BY DNumero) D ON D.DNumero = A.ANumero
    GROUP BY A.ANumero
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Mon projet: calculer des temps horaires.
    C'est vague.

    J'enregistre une variable "temps donné" et une autre "temps reçu". Quand je veux faire la différence, le résultat est tronqué (?).
    Un minimum de debug s'impose.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Par défaut format de variable ?
    Merci pour la requête, je vais approfondir mysql...
    J'ai du mal m'exprimer...
    Je fais une requete sur mysql, sur un champ au format Time.
    En retour, j'affiche ma variable $var[0], j'affiche un time Tout va bien.
    J'enregistre $var.
    J'affiche $var: il m'affiche 0.
    Je souhaite faire mes calculs sous php... Cela ne semble pas possible.
    Quant à debug, je ne connais pas sous php.
    ça m'ennuie de prendre un truc tout fait... mais je crois que je vais être obligé.
    En tout cas merci quand même, c'est bon de ne pas se sentir trop seul...

  5. #5
    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
    Par défaut
    J'enregistre $var.
    J'affiche $var: il m'affiche 0.
    Qu'est ce que tu veux dire par "enregistrer" ?

    Je souhaite faire mes calculs sous php... Cela ne semble pas possible.
    Quant à debug, je ne connais pas sous php.
    Tout est possible, il faut juste bien le faire.
    Pour le debug, c'est tout simple. En resumé tu as fais echo $a+$b; et tu nous dis que tu ça ne t'affiche pas ce que tu veux. La première chose à faire est donc de contrôler ce que valent $a et $b.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Par défaut
    mon code (avec la requete telle que, non encore modifiée..):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $TotalDesCumulsRecus="";
    		$ReqTempsRecu_Secondes='SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(EDuree))) FROM echanges,demandes WHERE(echanges.EDemande=demandes.DNumero) AND (demandes.DAdherent=4)';
    		foreach ($bdd->query($ReqTempsRecu_Secondes) as $Ligne){
    		$TempsRecu=$Ligne[0];
    		echo'$TempsRecu =:',$TempsRecu,'</br>';
    		$TotalDesCumulsRecus=$TotalDesCumulsRecus+$TempsRecu;
    		echo '$TotalDesCumulsRecus=:',$TotalDesCumulsRecus;
    		}
    L'affichage :
    $TempsRecu =:04:50:00
    $TotalDesCumulsRecus=:4
    Vous comprenez pourquoi je me dis que c'est peut être un format d'affichage de ma variable? Je l'ai initialisé à "", si je la mets à 0, j'ai le même résultat

  7. #7
    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
    Par défaut
    PHP ne sait pas ce qu'est "04:50:00" à part une chaine de caractères.
    Si tu veux faire des traitements en dehors de la requête, il vaut mieux tout laisser en secondes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Perte des variables de sessions
    Par Dayom dans le forum Langage
    Réponses: 12
    Dernier message: 17/07/2006, 11h04
  2. Réponses: 11
    Dernier message: 11/05/2006, 10h09
  3. [Tableaux] Perte de variables
    Par free01 dans le forum Langage
    Réponses: 1
    Dernier message: 22/04/2006, 02h12
  4. Réponses: 32
    Dernier message: 20/03/2006, 14h23
  5. variable time et date!!
    Par d-a-v-e dans le forum C++
    Réponses: 5
    Dernier message: 09/02/2006, 19h40

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