Bonjour.
Dans ma base de donnée j'ai un champ DatedeCreation. Je voudrai savoir si la date indiqué dans de plus de 1 mois, ou plus de 3 mois. Mais je ne sais pas comment faire!
Pouvez-vous m'indiquer la meilleure solution svp?
Merci bien
Bonjour.
Dans ma base de donnée j'ai un champ DatedeCreation. Je voudrai savoir si la date indiqué dans de plus de 1 mois, ou plus de 3 mois. Mais je ne sais pas comment faire!
Pouvez-vous m'indiquer la meilleure solution svp?
Merci bien
Est-ce que tu veux filtrer les enregistrement surcle critère de date ou bien filtrer les enregistrements d'apres d'autres criteres puis etudier leur date ?
Pourrais-tu nous redonner ton critere parce qu'il manque des mots dans ta phrase ?
Oups en effet il y a un souci dans ma question.
Donc je m'explique mieux:
J'ai une base avec un champs couleur et un champs DateCreation.
Si la DateCreation est entre 1 et 2 mois, couleur = orange
Si la DateCreation est supérieur à 3 mois, couleur = rouge.
J'ai fait le code suivant mais il ya une erreur sur le signe '-' dans mes if (apparement je ne peux pas soustraire le mois récuperé et le mois d'aujourd'hui:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 if(isset($_POST['update'])) { include("connection.php"); $query = "SELECT * FROM offre "; $result = mysql_query($query); while($rs_row=mysql_fetch_array($result)) { $Id = $rs_row['Id']; $Datecrea=split("-" ,$rs_row['DateCreation']); if ($Datecrea[1] - date(m) > 3 ) { $query = "UPDATE offre SET Couleur= 'rouge' WHERE Id = '$Id' " ; } else { if ($Datecrea[1] - date(m) > 2 ) { $query = "UPDATE offre SET Couleur='orange' WHERE Id = '$Id'"; } else { if ($Datecrea[1] - date(m) > 1 && $Datecre[1] - date(d) > 1 ) { $query = "UPDATE offre SET Couleur='orange' WHERE Id = '$Id'"; } } } $result = mysql_query($query); mysql_close(); } }
Mon erreur précise:
Notice: Use of undefined constant m - assumed 'm' in D:\PHP\updateDB.php on line
Il me l'affiche pour chaque if!!
ca serait date('m') et non date(m) mais de toute facon ca ne fonctionnerait pas : date('m') donne le numero du mois.
Regarde plutôt comment tu peux faire directement en SQL :
Par contre je vois eventuellement un probleme de logique : si la couleur est défini selon la date de création, a quoi cela sert-il de stocker et mettre a jour cette couleur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 UPDATE offre SET couleur = 'rouge' WHERE DateCreation > DATE_SUB(CURDATE(), INTERVAL 3 MONTH)
Je veux dire qu'il me suffit de lire la date de création pour savoir quelle couleur doit s'appliquer.
De plus supposons que la mise à jour n'est pas été faite, les couleurs sont fausses.
Merci beaucoup
Je vais essayer directement en sql
Super
Donc voici le code complet pour ceux qui veulent le faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php if(isset($_POST['update'])) { include("connection.php"); $query = "UPDATE offre SET couleur = 'vert' WHERE DateCreation < DATE_SUB(CURDATE(), INTERVAL 1 MONTH)"; $result = mysql_query($query); mysql_close(); include("connection.php"); $query = "UPDATE offre SET couleur = 'orange' WHERE DateCreation < DATE_SUB(CURDATE(), INTERVAL 2 MONTH)"; $result = mysql_query($query); include("connection.php"); $query = "UPDATE offre SET couleur = 'rouge' WHERE DateCreation < DATE_SUB(CURDATE(), INTERVAL 3 MONTH)"; $result = mysql_query($query); } ?>
Salut,
Je suis d'accord avec sabotage, aucun interêt de stocker la couleur en table, car elle ne seras jamais à jour, il faut la déterminer au moment de l'affichage.
Enfin ya peut-être une raison qui m'échappe.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager