PHP et ADD_TIME
Fermé
samghami
Messages postés
61
Date d'inscription
mercredi 21 mars 2012
Statut
Membre
Dernière intervention
2 mars 2016
-
30 oct. 2012 à 13:29
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 - 31 oct. 2012 à 10:33
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 - 31 oct. 2012 à 10:33
A voir également:
- PHP et ADD_TIME
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Br php ✓ - Forum PHP
- Expert php - Télécharger - Langages
- Php echo image ✓ - Forum PHP
7 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 oct. 2012 à 14:27
30 oct. 2012 à 14:27
oups j'ai pas copier / coller la bonne ligne !
reste à voir le format du champ date_plantation et sa compatibilité avec NOW()
voir http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html
if (NOW() >= DATE_ADD($reponse['date_plantation'], INTERVAL 3 DAY) && NOW() <= DATE_ADD($reponse['date_plantation'], INTERVAL 6 DAY))
reste à voir le format du champ date_plantation et sa compatibilité avec NOW()
voir http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
30 oct. 2012 à 13:50
30 oct. 2012 à 13:50
essayes:
if ($reponse['date_plantation'] >= DATE_ADD($reponse['date_plantation'], INTERVAL 3 DAY) && $reponse['date_plantation'] <= DATE_ADD($reponse['date_plantation'], INTERVAL 6 DAY))
Blunderer
Messages postés
273
Date d'inscription
mardi 17 juillet 2012
Statut
Membre
Dernière intervention
6 décembre 2012
83
Modifié par Blunderer le 30/10/2012 à 14:18
Modifié par Blunderer le 30/10/2012 à 14:18
Ce que je ne comprend pas c'est :
car $reponse['date_plantation'] ne pourra jamais etre >= à DATE_ADD($reponse['date_plantation'], INTERVAL 3 DAY) !
C'est comme si :
admettons que $reponse['date_plantation'] soit égal à 1.
1 >= 1 + 3 ($reponse['date_plantation'] >= DATE_ADD($reponse['date_plantation'], INTERVAL 3 DAY)) est impossible !
Maintenant, je suis.
if ($reponse['date_plantation'] >= DATE_ADD($reponse['date_plantation'], INTERVAL 3 DAY)
car $reponse['date_plantation'] ne pourra jamais etre >= à DATE_ADD($reponse['date_plantation'], INTERVAL 3 DAY) !
C'est comme si :
admettons que $reponse['date_plantation'] soit égal à 1.
1 >= 1 + 3 ($reponse['date_plantation'] >= DATE_ADD($reponse['date_plantation'], INTERVAL 3 DAY)) est impossible !
Maintenant, je suis.
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
30 oct. 2012 à 14:31
30 oct. 2012 à 14:31
DATE_ADD($reponse['date_plantation'], INTERVAL 3 DAY)
c'est du langage SQL çà pas php, il faut que ce soit dans ta requete
$reponse->exec('UPDATE * SET etat = floraison ');
pas de table dans ta requete, et pas de condition
UPDATE rpg_jardin_int SET etat = 'floraison'
WHERE date_plantation BETWWEN DATE_ADD(NOW(),INTERVAL -3 DAY) AND DATE_ADD(NOW(),INTERVAL -6 DAY)
c'est du langage SQL çà pas php, il faut que ce soit dans ta requete
$reponse->exec('UPDATE * SET etat = floraison ');
pas de table dans ta requete, et pas de condition
UPDATE rpg_jardin_int SET etat = 'floraison'
WHERE date_plantation BETWWEN DATE_ADD(NOW(),INTERVAL -3 DAY) AND DATE_ADD(NOW(),INTERVAL -6 DAY)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
Modifié par maka54 le 30/10/2012 à 14:33
Modifié par maka54 le 30/10/2012 à 14:33
et pour la récolte :
UPDATE rpg_jardin_int SET etat = 'recolte'
WHERE date_plantation < DATE_ADD(NOW(),INTERVAL -6 DAY)
UPDATE rpg_jardin_int SET etat = 'recolte'
WHERE date_plantation < DATE_ADD(NOW(),INTERVAL -6 DAY)
samghami
Messages postés
61
Date d'inscription
mercredi 21 mars 2012
Statut
Membre
Dernière intervention
2 mars 2016
1
30 oct. 2012 à 15:43
30 oct. 2012 à 15:43
Voici ma table sql:
Voici le code que j'ai fais, mais qui ne fonctionne pas:
Auriez vous une solution?
-- -- Structure de la table 'rpg_jardin_int' -- CREATE TABLE IF NOT EXISTS 'rpg_jardin_int' ( 'id' int(11) NOT NULL AUTO_INCREMENT, 'joueur' text NOT NULL, 'nombre_plan' int(11) NOT NULL, 'espece' text NOT NULL, 'date_plantation' datetime NOT NULL, 'etat' text NOT NULL, PRIMARY KEY ('id') ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; -- -- Contenu de la table 'rpg_jardin_int' -- INSERT INTO 'rpg_jardin_int' ('id', 'joueur', 'nombre_plan', 'espece', 'date_plantation', 'etat') VALUES (1, 'samghami', 150, 'carrotte', '2012-06-26 10:04:00', 'vegetation'), (2, 'samghami', 200, 'carrote', '2012-10-30 12:06:00', 'vegetation');
Voici le code que j'ai fais, mais qui ne fonctionne pas:
<?php try { $bdd = new PDO('mysql:host=localhost;dbname=xxx', 'xxx', 'xxx'); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } // Si tout va bien, on peut continuer // On récupère tout le contenu de la table jeux_video $reponse = $bdd->query('SELECT * FROM rpg_jardin_int'); // On affiche chaque entrée une à une while ($donnees = $reponse->fetch()) { ?> <p> <?php echo $donnees['joueur']; ?> <br /> <?php echo $donnees['date_plantation']; ?> <br /> <?php echo $donnees['etat']; ?> <br /> <?php echo $donnees['espece']; ?> </p> <?php if (NOW() >= DATE_ADD($donnees['date_plantation'], INTERVAL 3 DAY) && NOW() <= DATE_ADD($donnees['date_plantation'], INTERVAL 3 DAY)) { $bdd->exec('UPDATE rpg_jardin_int SET etat = floraison WHERE etat = vegetation '); } ?> <?php } $reponse->closeCursor(); // Termine le traitement de la requête ?>
Auriez vous une solution?
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
30 oct. 2012 à 16:12
30 oct. 2012 à 16:12
Alors ton code recupere tous les enregistrement de ta table rpg_jardin_int (sans criteres) il risque d'en avoir enormement au fil du temps
tu fais une boucle pour tester si ils doivent passer en floraison
tu fais ton test :
c'est du php et sql mélangé, autrement dit çà ne risque pas de marcher
admettons que le test marche, si c'est ok , tu executes cette requete :
qui sera exactement la meme durant toute ta boucle .... et qui au passage modifiera toutes tes lignes et non pas celle que tu desire (entre 3 et 6 jours)
en résumé,
il ne faut modifier que les enregistrement compris entre 3 et 6 jours et pas de boucle (on modifie tout en une requete :
et peux egalement ajouter la condition etat = 'vegetation' pour limiter les résultats qui serait deja modifiés plutot
description de la requete :
passer etat = floraison, tous les enregistrements dont la date_plantation sont compris entre :
date actuelle - 3 jours et date actuelle - 6 jours
tu fais une boucle pour tester si ils doivent passer en floraison
tu fais ton test :
if (NOW() >= DATE_ADD($donnees['date_plantation'], INTERVAL 3 DAY) && NOW() <= DATE_ADD($donnees['date_plantation'], INTERVAL 3 DAY)) {
c'est du php et sql mélangé, autrement dit çà ne risque pas de marcher
admettons que le test marche, si c'est ok , tu executes cette requete :
$bdd->exec('UPDATE rpg_jardin_int SET etat = floraison WHERE etat = vegetation ');
qui sera exactement la meme durant toute ta boucle .... et qui au passage modifiera toutes tes lignes et non pas celle que tu desire (entre 3 et 6 jours)
en résumé,
il ne faut modifier que les enregistrement compris entre 3 et 6 jours et pas de boucle (on modifie tout en une requete :
UPDATE rpg_jardin_int SET etat = 'floraison' WHERE date_plantation BETWWEN DATE_ADD(NOW(),INTERVAL -3 DAY) AND DATE_ADD(NOW(),INTERVAL -6 DAY)
et peux egalement ajouter la condition etat = 'vegetation' pour limiter les résultats qui serait deja modifiés plutot
UPDATE rpg_jardin_int SET etat = 'floraison' WHERE date_plantation BETWWEN DATE_ADD(NOW(),INTERVAL -3 DAY) AND DATE_ADD(NOW(),INTERVAL -6 DAY) AND etat = 'vegetation'
description de la requete :
passer etat = floraison, tous les enregistrements dont la date_plantation sont compris entre :
date actuelle - 3 jours et date actuelle - 6 jours
samghami
Messages postés
61
Date d'inscription
mercredi 21 mars 2012
Statut
Membre
Dernière intervention
2 mars 2016
1
30 oct. 2012 à 16:21
30 oct. 2012 à 16:21
Excuse moi mais pourrais tu me donner le code final? Depuis ce matin je fais beaucoup de test pour essayer d'avoir du résultat mais cela ne fonctionne pas et je m'embrouille le cerveau...
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
30 oct. 2012 à 16:27
30 oct. 2012 à 16:27
<?php try { $bdd = new PDO('mysql:host=localhost;dbname=xxx', 'xxx', 'xxx'); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $bdd->exec("UPDATE rpg_jardin_int SET etat = 'floraison' WHERE date_plantation BETWWEN DATE_ADD(NOW(),INTERVAL -3 DAY) AND DATE_ADD(NOW(),INTERVAL -6 DAY) AND etat = 'vegetation' "); ?>
voilà le code final, pas besoin de plus
samghami
Messages postés
61
Date d'inscription
mercredi 21 mars 2012
Statut
Membre
Dernière intervention
2 mars 2016
1
30 oct. 2012 à 16:33
30 oct. 2012 à 16:33
Je suis desole mais cela ne fonctionne pas :(
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
30 oct. 2012 à 16:40
30 oct. 2012 à 16:40
peut etre que tu obtient un message d'erreur ?
tu peux aussi tester la requete directement dans phpmyadmin
tu peux aussi tester la requete directement dans phpmyadmin
samghami
Messages postés
61
Date d'inscription
mercredi 21 mars 2012
Statut
Membre
Dernière intervention
2 mars 2016
1
30 oct. 2012 à 16:47
30 oct. 2012 à 16:47
Dans mon script je n'est obtenue aucune erreur mais cela ne fonctionne pas.
Je l'est essayer dans phpmyadmin et cela na pas fonctionner. il me dit l'erreur suivante:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BETWWEN DATE_ADD(NOW(),INTERVAL -3 DAY) AND DATE_ADD(NOW(),INTERVAL -6 DAY) AND ' at line 2
Je l'est essayer dans phpmyadmin et cela na pas fonctionner. il me dit l'erreur suivante:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BETWWEN DATE_ADD(NOW(),INTERVAL -3 DAY) AND DATE_ADD(NOW(),INTERVAL -6 DAY) AND ' at line 2
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
30 oct. 2012 à 16:50
30 oct. 2012 à 16:50
ok, remplace BETWWEN par BETWEEN
c'est une erreur de frappe
c'est une erreur de frappe
30 oct. 2012 à 14:28
:D