fonction ADDTIME

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : fonction ADDTIME

par alexbad » 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:

par jemflight » 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

par ouckileou » 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é.

par jemflight » 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"); 

par ouckileou » 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.

par jemflight » 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 ?

par ouckileou » 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.

par jemflight » 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 :?

par ouckileou » 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

par jemflight » 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

par ouckileou » 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à ;)

par jemflight » 26 déc. 2005, 15:16

Donc si je comprend bien je selectionne la première valeur, ensuite je fais l'addition et enfin je fais une update du champ ?
Mais le problème est que il ne veut pas additionner la valeur donc je ne peux pas faire l'update

par ouckileou » 26 déc. 2005, 14:31

ADDTIME additionne effectivement 2 valeurs (date+time) et te renvoie le résultat.
Mais avec un SELECT tu sélectionnes simplement ce résultat, si tu veux mettre à jour une colonne de ta table c'est forcément une requête UPDATE...

par jemflight » 26 déc. 2005, 14:23

Je veux additionner deux valeurs TIME.
L'une vient d'etre récupéré dans un formulaire et l'autre se trouve dans la table1.

j'ai donc essayé la fonction ADDTIME en allant chercher la valeur qui venait d'etre récupérée ($duree) et celle qui se trouve dans la table1.

Tu penses que cela ne convient pas ?

par pjl » 26 déc. 2005, 14:05

Je ne comprends rien.
Tu veux modifier des données dans une table et tu fais un SELECT pour ça !!!!!!!!!!!!!!!!!