IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Mettre à jour une donnée d'après une date [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut Mettre à jour une donnée d'après une date
    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

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    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 ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    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();
    		}
    	}

  4. #4
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    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!!

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    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 :
    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)
    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 ?
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    Merci beaucoup
    Je vais essayer directement en sql

  7. #7
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    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);		
    	}
     
     
    	?>

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Points : 9
    Points
    9
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/07/2014, 10h44
  2. Réponses: 3
    Dernier message: 07/04/2011, 14h38
  3. Réponses: 3
    Dernier message: 13/08/2008, 08h54
  4. Réponses: 3
    Dernier message: 26/09/2007, 14h34
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo