Bonjour,
Petite question après plusieurs recherches infructueuses :
J’ai une table MySQL qui comporte, entre autres, un champ “date” de type “datetime” (2008-11-03 13:14:07) et un champ “jours en plus” de type int.
J’ai besoin de faire un script qui rajouterait un ou plusieurs jours (jours en plus) à ma date.
L’idée étant tout simplement “d’incrémenter” les jours de ma date en fonction de ma table “jours en plus”.
J’espère avoir été assez clair
Merci d’avance
Fait toi plaisir :
dev.mysql.com…
select DATE_ADD("date", INTERVAL "jours en plus" DAY)
from ...
HEllo
Merci de ton aide.
En fait j’ai lutté une bonne partie de l’apres midi d’hier avec cette fonction que je n’arrive pas à mettre en uvre
Ma table est de ce style :
|------------ Date -----------|-- jours en plus —|
|2008-11-03 13:14:07 | 3 |
|2008-09-27 11:18:57 | 7 |
|2008-03-03 15:14:55 | 1 |
J’ai besoin de faire une requete affichant un tableau de la forme :
|------------ Date -----------|-- jours en plus —| Date + jours en plus |
|2008-11-03 13:14:07 | 3 | 2008-11-06 |
|2008-09-27 11:18:57 | 7 | 2008-10 -03 |
|2008-03-03 15:14:55 | 1 | 2008-03-04 |
Je continue à tester en attendant
genre :
select "date", "jours en plus", DATE_ADD("date", INTERVAL "jours en plus" DAY)
from ...
En fait cela est un poil plus compliqué que ça puisque mon champ date et mon champ jour en plus sont dans deux tables différentes.
|—ID----|------------ Date -----------|
|—1-----|2008-11-03 13:14:07 |
|—2-----|2008-09-27 11:18:57 |
|—3-----|2008-03-03 15:14:55 |
|—ID----|--------jours en plus -----------|
|—1-----|-------3 ------------------------- |
|—2-----|-------7 ------------------------- |
|—3-----|-------1-------------------------- |
Pour le moment je fais une jointure (INNER JOIN) pour afficher un tableau | ID | DATE | Jours en plus, et j’amerai rajouter une colonne à l’affichage calculant donc la date majorée.
Merci de ton aide
ben si tu sais faire les requêtes, tu as tout hein.
En 1 ou 2 requètes (1 requete pour la jointure, une pour la date ou 1 requete pour les 2 besoins ) ?
Je découvre le SQL, sorry…
Ce que j'ai du mal à saisir en fait c'est que la requete DATE_ADD modifie directement mon champ date lors de l'ouverture, hors j'aimerai afficher l'id, la date ET la date majorée ?
Je dois pas être bien reveillé
gné?
Je vais être gentil et te mâcher le boulot :
select A."Date", B."jours en plus", , DATE_ADD(A."date", INTERVAL B."jours en plus" DAY) as maxDate
from table1 A
inner join table2 B on A.ID = B.ID
Quand tu fais un select tu ne modifie rien du tout… tu ne fais que choisir des tuples
Je me suis mal exprimé juste avant, j’ai bien saisie le SELECT
Je vais tester (même si ma requete actuelle s’approche grandement de ce que tu me proposes).
Merci “Sans-Nom”
Edité le 04/12/2008 à 10:54
Voilà ma requète (elle était quasiement identique à la tienne, mais sans le “as maxdate”):
$requete = mysql_query(“SELECT A.ID,A.date,A.date,B.Nom_Contrat,B.Numero_Contrat,B.Duree_Prevue, DATE_ADD(A.‘date’, INTERVAL B.‘Duree_prevue’ DAY) as maxDate FROM B INNER JOIN A ON A.category=B.Numero_Contrat ORDER BY A.ID”) OR die(‘Erreur de la requête MySQL’);
Dure_prevue représentant “les jours en plus”.
J’ai la même erreur de puis hier “Parse error: syntax error, unexpected $end in /var/www/index.php”
Dois je déclarer ce “maxdate” au préalable ?
Edité le 04/12/2008 à 11:22
C’est pas compliqué. En prog, dans tous les cas, tu as plusieurs étapes :
analyse lexicale (déterminer que if est un mot clef, etc)
analyse syntaxique (déterminer que a + b est bien une addition)
analyse sémantique (déterminer que a + b est possible, c’est à dire que a peut être additionné à b, ex: tu ne peux pas additionner une orange avec une pomme, ça n’a pas de sens).
Parse error = problème d’analyse syntaxique (syntax error)
Quand il te dis unexpected $end, c’est qu’il est tombé sur la fin du fichier, donc ton code n’est pas bon. Cherche l’erreur, je ne la vois pas dans ce que tu file.
En revanche, j’ai mis des délimiteurs SQL ("). En SQL ’ sert à délimiter des chaines, donc là ta requête plantera.
Edité le 04/12/2008 à 11:27
J’ai beau retourner ma requète dans tous les sens, je ne comprends pas où il bloque pour me sortir ce $end…
Je vais continuer à chercher…
maxDate doit être déclaré quelque part ?
J’ai crée un champ de type datetime nommé maxDate (vide) dans ma table B, et édité ma requete en conséquence mais toujours rien
Je sais je sais, midi approche, je suis un peu gonflant
Merci
Edité le 04/12/2008 à 12:07
J’ai un petit avancé :
$requete = mysql_query('SELECT glpi_tracking."ID",glpi_tracking."category",glpi_tracking."date",liste_contrats."nom_contrat",liste_contrats."numero_contrat",liste_contrat."duree_prevue",liste_contrats."maxdate", DATE_ADD(glpi_tracking."date", INTERVAL liste_contrats."duree_prevue" DAY) as liste_contrats."maxdate" FROM liste_contrats INNER JOIN glpi_tracking ON glpi_tracking.category = liste_contrats.numero_contrat');
if (!mysql_fetch_row($requete)) {
echo "Aucun enregitrement ne correspond à la requete 2\n";
}
Me retourne : aucun enregistrement ne correspond à la requète.
Je dois donc toucher au but
Fait :
echo 'SELECT glpi_tracking."ID",glpi_tracking."category",glpi_tracking."date",liste_contrats."nom_contrat",liste_contrats."numero_contrat",liste_contrat."duree_prevue",liste_contrats."maxdate", DATE_ADD(glpi_tracking."date", INTERVAL liste_contrats."duree_prevue" DAY) as liste_contrats."maxdate" FROM liste_contrats INNER JOIN glpi_tracking ON glpi_tracking.category = liste_contrats.numero_contrat';
Copie ce qui est affiché dans phpmyadmin, et corrige pas à pas…
Merci pour ton aide (ça fonctionne)
Edité le 04/12/2008 à 14:22