fonction ADDTIME

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 déc. 2005, 15:27

Mais si il veut bien additionner la valeur !

Sauf que toi tu veux faire tout d'un coup, avec 2 requêtes mélangées.
Alors tu fais un SELECT pour récupérer la première valeur, ensuite avec PHP tu génères le code SQL de ta requête UPDATE et tu l'exécutes.

1 - SELECT pour récupérer les heures
2 - traitement du résultat avec PHP, on le stocke dans une $variable
3 - tu crées le code SQL de l'UPDATE, avec ADDTIME(), en insérant avec PHP la variable précédente
4 - tu exécutes le UPDATE

et voilà ;)

Eléphanteau du PHP | 41 Messages

26 déc. 2005, 15:44

Donc cela s'apparenterai en fait à un UPDATE ADDTIME ? et non un SELECT ADDTIME ?

Le pb est le suivant: Quand je fais une requete pour selectionner une valeur dans ma table, elle ne veut meme pas s'executer. Voila ce que je demande:
$sql= "SELECT heures FROM pilotes WHERE callsign IN ('$callsign')";
echo $sql
$result = mysql_query($sql)
	or die ("Execution de la requete impossible");
L'echo me donne:

Code : Tout sélectionner

SELECT heures FROM pilotes WHERE callsign = 'SKT050'
alors qu'il devrait normalement afficher la valeur présente dans la table c'est à dire 01:00:00

Alors étant donné qu'il ne trouve meme pas la valeur, c'est normal que l'addition ne peut pas se faire
Jean-Mark

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 déc. 2005, 15:45

Non, tout est normal, c'est toi qui te mélanges les pinceaux.

Tu affiches bien le code SQL de ta requête : $sql

Ton résultat est dans la ressource renvoyée par mysql_query() : $result
Que tu dois traiter avec une fonction comme mysql_fetch_array ou mysql_fetch_row pour pouvoir manipuler la valeur que tu souhaites récupérer.

Voici un tuto : Interroger une table MySQL

Eléphanteau du PHP | 41 Messages

26 déc. 2005, 15:51

Désolé d'être aussi nul mais comment je peux appliquer cette fonction ?
Je ne sais pas trop l'utiliser :?
Jean-Mark

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 déc. 2005, 15:56

T'excuses pas, on commence tous un jour ou l'autre ;)

Tu peux suivre le tuto que je t'ai donné pour commencer.

Eléphanteau du PHP | 41 Messages

26 déc. 2005, 15:59

Ben là au niveau de ma requête c'est bon. Il me semble qu'elle est correcte. Maintenant si je comprends bien, pour qu'elle soit affichée par mon echo je dois faire un mysql_fetch_array c ça ?
Et donc elle sera reconnue ?
Jean-Mark

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 déc. 2005, 16:22

Explications :
// ça c'est du code SQL, tout seul ça fait rien c'est du bête texte
$sql = "SELECT colonne1 FROM maTable WHERE id = 1";

// là on exécute la requête SQL (le code précédent) dans MySQL, grâce  à la fonction mysql_query()
// le résultat est une "ressource", c a d un truc inexploitable directement
$resultatBrut = mysql_query($sql);

// on va maintenant récupérer chaque ligne de résultat (ici il n'y en a qu'une grâce à la condition donc pas besoin de boucle) dans une variable
// mysql_fetch_array te renvoie un tableau associatif, dont chaque cellule conient le contenu de chaque colonne sélectionnée dans la requête
$resultat = mysql_fetch_array($resultatBrut, MYSQL_ASSOC);

// maintenant tu peux afficher le contenu de la colonne 1 de ta table :
echo $resultat['colonne1'];
Est-ce que c'est plus clair ?

Si tu n'as jamais fait ça, je t'encourage vivement à regarder les tutoriels de base, sur www.phpdebutant.org par exemple, avant de te lancer dans tes manipulations compliquées.

Eléphanteau du PHP | 41 Messages

26 déc. 2005, 16:34

Voila ce que j'ai fait:
//selection de la valeur d'heures deja realisee
$select = "SELECT heures FROM pilotes WHERE callsign IN ('$callsign')";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);

//calcul
$sql = "SELECT ADDTIME ('$total','$duree')";
$result = mysql_query($sql);
	or die ("Execution du calcul impossible");
	
// modification champ heure table pilotes
$sql2 = "UPDATE pilotes SET heures='$result' WHERE callsign='$callsign'";
$result = mysql_query($sql2);
	or die ("Execution de la modif impossible"); 
Jean-Mark

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 déc. 2005, 18:19

Regarde dans la doc ce que renvoie la fonction mysql_num_rows :
http://fr.php.net/manual/fr/function.mysql-num-rows.php
Est-ce vraiment ce que tu cherches ? Je ne crois pas :)

Deuxièment, tu peux utiliser ADDTIME directement dans ta requête UPDATE, pas besoin de faire une requête intermédiaire.

Relis bien les étapes que je t'ai indiqué.

Eléphanteau du PHP | 41 Messages

27 déc. 2005, 12:42

Fin du problème. Début d'un nouveau.

La fonction ADDTIME a été ajoutée depuis mysql 4.1.1
Lycos, qui est mon hebergeur nous provide en 4.0.18

Je vais me rabattre sur une autre solution qu'on m'avait donnée, c'est à dire transformer les valeurs horaires en secondespour les additionner. ça s'annonce ça s'annonce sympathique...

Désolé de vous avoir fait perdre du temps. J'aurais dû vérifier cette info capitale depuis le début.
1000 excuses
Jean-Mark

ViPHP
ViPHP | 649 Messages

27 déc. 2005, 15:38

Désolé de vous avoir fait perdre du temps. J'aurais dû vérifier cette info capitale depuis le début.
1000 excuses
Ça serait plutôt à Lycos à s'excuser :lol:
Image