addition d'horaire

ViPHP
pjl
ViPHP | 2119 Messages

27 déc. 2005, 15:28

as tu visualisée ta requete pour la tester ensuite dans phpMyAddmin par exemple ?
Prend le temps de la relire. Il y a des trucs bizzares dedans.

Mammouth du PHP | 19672 Messages

27 déc. 2005, 15:31

Regarde bien ton code : tu crées un extrait de la requête au préalable que tu inclus sous la forme d'une variable dans la requête qui en fin de compte correspond donc à ceci:
$sql2 = "UPDATE pilotes ".
        "SET heures='(SEC_TO_TIME(TIME_TO_SEC(". $duree .") + (TIME_TO_SEC(". $duree ."))))' ".
        "WHERE callsign='". $callsign ."'";
Pour que ton système ait une chance de foctionner, il faudra que ça ressemble à ceci:
$sql2 = "UPDATE `pilotes` ".
        "SET `heures` = '(SEC_TO_TIME(TIME_TO_SEC(`heures`) + (TIME_TO_SEC('". $duree ."'))))' ".
        "WHERE callsign='". $callsign ."'";
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 41 Messages

27 déc. 2005, 16:04

Cyrano,

la première requete fonctionne très bien. Ce qui est totalement logique en effet puisque la variable qui était présente dans ma requete était redondante.

Cependant la deuxième requete que tu m'as proposée, bien qu'elle me parait ultra logique ne fonctionne pas et justement je ne comprends pas pourquoi.

J'ai l'impression que le fait de transformer l'info deja présente dans la table fait tout buguer...
Jean-Mark

Mammouth du PHP | 19672 Messages

28 déc. 2005, 10:07

Que donne la seconde requête ? resultat erroné, message d'erreur, autre ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

28 déc. 2005, 10:10

On dirait que la valeur n'est pas trouvée

Eléphanteau du PHP | 41 Messages

28 déc. 2005, 10:14

J'vais oublié de me logger.
On dirait donc que la valeur n'est pas trouvée.
//récupération de la valeur temps deja effectuée
$heures = "SELECT heures FROM pilotes WHERE callsign IN ('$callsign')";
$result = mysql_query($heures);
while ($timepilot = mysql_fetch_array($result, MYSQL_NUM));

{
echo $timepilot['heures'];
}

//calcul
$sql = "(SEC_TO_TIME(TIME_TO_SEC(". $duree .") + (TIME_TO_SEC(". $timepilot ."))))";
$res = mysql_query($sql);
echo "$sql";

// ajout du nombre d'heures dans la base pilotes
$secondes = "(TIME_TO_SEC($duree))"; // valeur du formulaire transformee en secondes
$rq =     "UPDATE pilotes ".
        "SET heures='($res)' ".
        "WHERE callsign='". $callsign ."'";

$result = mysql_query($rq)
    or die ("Execution de la requete du calcul impossible");
L'echo me donne:
(SEC_TO_TIME(TIME_TO_SEC(11:00:00)) + (TIME_TO_SEC()))

Il me semble que la 2e valeur devrait apparaitre apres le 2e TIM_TO_SEC
Jean-Mark

Mammouth du PHP | 19672 Messages

28 déc. 2005, 10:15

La valeur de quoi ? Dis, si tu veux un coup de main, faudrait faire un minimum d'effort, on est pas des devins et ma boule de cristal est cassée depuis quelques siecles.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
pjl
ViPHP | 2119 Messages

28 déc. 2005, 10:32

Je sais bien que l'on est dans la section débutant mais il faut quand même prendre le temps de lire et de comprendre son code.
Là, ce n'est plus un problème de PHP mais de logique.
D'un coté, tu supposes qu'ils y a plusieurs valeurs stockées dans un tableau.
while ($timepilot = mysql_fetch_array($result, MYSQL_NUM));

{
echo $timepilot['heures'];
}
de l'autre, tu considères que c'est une seule valeur :
$sql = "(SEC_TO_TIME(TIME_TO_SEC(". $duree .") + (TIME_TO_SEC(". $timepilot ."))))";

Eléphanteau du PHP | 41 Messages

28 déc. 2005, 10:54

:? Désolé de vous faire perdre votre temps :?

Je vais voir si je peux procéder autrement.

Merci pour votre aide
Jean-Mark

ViPHP
pjl
ViPHP | 2119 Messages

28 déc. 2005, 11:18

Ce n'est pas une question de perte de temps.

Il faut prendre le temps de relire et comprendre ton code et celà, personne ne peut le faire pour toi.

Eléphanteau du PHP | 41 Messages

28 déc. 2005, 11:24

C'est ce que j'ai fait et c'est pour ça que j'ai demandé de l'aide car je n'ai pas trouvé d'ou venait le pb
Jean-Mark

Mammouth du PHP | 19672 Messages

28 déc. 2005, 14:27

Bon, reprennons:
- Où en es-tu et sur quelle requête finalement es-tu ?
- Si tu fais afficher la requête générée, elle ressemble à quoi en fin de compte;
- as-tu testé cette requête générée dans phpMyAdmin ? quel est alors le retour ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

28 déc. 2005, 14:35

J'ai deux valeurs TIME
- 1 dans un formulaire que je recupere sans problemes
- 1 dans ma table "pilotes" que je n'arrive pas à recuperer

Pour cette 2e valeur, j'essayes de la recuperer par un SELECT puis un TIME_TO_SEC. La requete fonctionne parfaitement dans phpMyAdmin.

Voilà ma requete actuelle:
//récupération de la valeur temps deja effectuée
$heures = "SELECT heures FROM pilotes WHERE callsign IN ('$callsign')";
$result = mysql_query($heures);
while ($timepilot = mysql_fetch_array($result, MYSQL_NUM));

{
echo $timepilot['heures'];
}

//calcul
$sql = "(SEC_TO_TIME(TIME_TO_SEC(". $duree .") + (TIME_TO_SEC(". $timepilot ."))))";
$res = mysql_query($sql);
echo "$sql";

// ajout du nombre d'heures dans la base pilotes
$secondes = "(TIME_TO_SEC($duree))"; // valeur du formulaire transformee en secondes
$rq =     "UPDATE pilotes ".
        "SET heures='($res)' ".
        "WHERE callsign='". $callsign ."'";

$result = mysql_query($rq)
    or die ("Execution de la requete du calcul impossible");
Voila l'echo qui m'est donné:

Code : Tout sélectionner

Rapport de vol envoyé(SEC_TO_TIME(TIME_TO_SEC(11:00:00)) + (TIME_TO_SEC()))Execution de la requete du calcul impossible
Tu remarqueras que la 1ere valeur est bien recupéré dans le formulaire (11:00:00) mais que la 2e (se trouvant dans ma table "pilotes" ne l'est pas.

Voilà mon pb à ce moment. Je ne vois pas ce qui bug...

Mammouth du PHP | 19672 Messages

28 déc. 2005, 14:39

ça devrait pourtant te sauter au yeux: ta variable $timepilot est un tableau et non une valeur scalaire : en clair, on ne devrait pas voir :
$sql = "(SEC_TO_TIME(TIME_TO_SEC(". $duree .") + (TIME_TO_SEC(". $timepilot ."))))";
Mais
$sql = "(SEC_TO_TIME(TIME_TO_SEC(". $duree .") + (TIME_TO_SEC(". $timepilot['heures'] ."))))";
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

28 déc. 2005, 14:44

Je viens de réaliser autre chose: cette requête est totalement incomplète : il manque à tout le moins le début : SELECT ou UPDATE ou autre chose... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: