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 :

Problème condition de dates [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 54
    Par défaut Problème condition de dates
    Bonjour à tous.

    J'ai un problème de if, en fait je gère des actions sur un dossier et si la date de l'action que j'ajoute est la plus récente je dois mettre à jour le statut du dossier, sinon le statut du dossier n'est pas mis à jour

    Je commence donc par insérer dans ma bdd l'action (quoiqu'il arrive)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //insertion de l'action dans la bdd
     
    	$insertSQL = "insert into action(ID_TYPE_ACT, NUM_RES, MATR_EMP, NUM_DOS, REF_CON_LOC, DATE_ACT, DESC_ACT, TEL_CON_LOC, DATE_RAPPEL, ACT_PLA) values ('".$_REQUEST["ID_TYPE_ACT"]."','".$_REQUEST["NUM_RES"]."','".$_REQUEST["MATR_EMP"]."','".$_REQUEST["NUM_DOS"]."','".$_REQUEST["REF_CON_LOC"]."','".datefrancais2mysql($_REQUEST["DATE_ACT"])."','".addslashes($_REQUEST["DESC_ACT"])."','".$_REQUEST["TEL_CON_LOC"]."','".datefrancais2mysql($_REQUEST["DATE_RAPPEL"])."','".$_REQUEST["ACT_PLA"]."')";
     
    	$result = mysql_query($insertSQL) or die (mysql_error());

    ceci fonctionne bien mais j'ai préféré mettre la requête au cas ou.

    Puis je cherche la date la plus récente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	$sql2= "select max(DATE_ACT) 
    	from action, contrat c 
    LEFT  JOIN 	locataire On locataire.NUM_DOS = action.NUM_DOS
    LEFT  JOIN 	resultat ON action.NUM_RES = resultat.NUM_RES
    LEFT  JOIN	type_action ON action.ID_TYPE_ACT = type_action.ID_TYPE_ACT
    LEFT  JOIN	employe  ON action.MATR_EMP = employe.MATR_EMP
    LEFT  JOIN	contact_locataire ON  action.REF_CON_LOC = contact_locataire.REF_CON_LOC
    where
      action.NUM_DOS='".$_REQUEST["NUM_DOS"]."'
    and c.NUM_DOS = locataire.NUM_DOS 
    and c.PRINCIPAL = '1'" ; 
     
    	$result3 = mysql_query($sql2) or die (mysql_error());
    Cette requête fonctionne bien (je l'ai testé sur phpmyadmin indépendamment)

    J'ai donc fait une condition if , si la date de l'action que je veux insérer est plus récente alors je mets à jour le statut:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if($_REQUEST['DATE_ACT']>$result3)
    	{	
    	$updateStatutMandat = "update locataire m , statut_action_mandat s 
    	set m.COD_STA_DOS = s.COD_STA_DOS	
    	where s.ID_TYPE_ACT = '".$_REQUEST["ACT_PLA"]."' 
    	and m.num_dos = '".$_REQUEST["NUM_DOS"]."' ";
        //$updateStatutMandat = "update locataire m , statut_action_mandat s set m.COD_STA_DOS = s.ID_TYPE_ACT where s.COD_STA_DOS = '".$_REQUEST["ACT_PLA"]."' and m.num_dos = '".$_REQUEST["NUM_DOS"]."' ";
        $result2 = mysql_query($updateStatutMandat) or die (mysql_error());
     
        $insertSQL = "update  locataire set  DATE_MAJ =   '" .date("Y/m/d H:i:s") ."'  where NUM_DOS='".$_REQUEST["NUM_DOS"]."'";
        $result = mysql_query($insertSQL) or die (mysql_error());   	   	
    	}
    Avec un echo j'ai constaté que l'on rentrait toujours dans la boucle alors j'en viens à la conclusion que mon si déconne mais je n'arrive pas à trouver pourquoi


    Merci pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Y a pas un mysql_fetch_array à faire pour $result3 avant le if ?
    $_REQUEST['DATE_ACT'] est bien au même format que ton $result3 ?

  3. #3
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result3 = mysql_query($sql2) or die (mysql_error());
    $result3 est une ressources et non pas la date que tu cherches à récupérer, il faut parcourir le résultat pour le comparer à ta date...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $row = mysql_fetch_assoc($result3);

  4. #4
    Membre averti
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 54
    Par défaut
    Merci pour vos interventions.

    J'ai modifié mon code selon vos remarques cependant dorénavant il se produit l'inverse, je ne rentre jamais dan la boucle

    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
    $result3 = mysql_query($sql2) or die (mysql_error()); 	
    	$row = mysql_fetch_assoc($result3);
     
    //si la date de la nouvelle action est plus récente que la date max alors on update le statut du mandat	
    	if($_REQUEST['DATE_ACT']>$row)
    	{
    	echo "test affiche"; 	
    	$updateStatutMandat = "update locataire m , statut_action_mandat s 
    	set m.COD_STA_DOS = s.COD_STA_DOS	
    	where s.ID_TYPE_ACT = '".$_REQUEST["ACT_PLA"]."' 
    	and m.num_dos = '".$_REQUEST["NUM_DOS"]."' ";
        //$updateStatutMandat = "update locataire m , statut_action_mandat s set m.COD_STA_DOS = s.ID_TYPE_ACT where s.COD_STA_DOS = '".$_REQUEST["ACT_PLA"]."' and m.num_dos = '".$_REQUEST["NUM_DOS"]."' ";
        $result2 = mysql_query($updateStatutMandat) or die (mysql_error());
     
        $insertSQL = "update  locataire set  DATE_MAJ =   '" .date("Y/m/d H:i:s") ."'  where NUM_DOS='".$_REQUEST["NUM_DOS"]."'";
        $result = mysql_query($insertSQL) or die (mysql_error());   	   	
    	}
    merci pour votre aide

  5. #5
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    et comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(datefrancais2mysql($_REQUEST["DATE_ACT"]) > $row['DATE_ACT']){...}

  6. #6
    Membre averti
    Homme Profil pro
    etudiant
    Inscrit en
    Décembre 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 54
    Par défaut
    Je n'ai pas vraiment compris ton code, cette partie en fait
    $row['DATE_ACT']
    pourquoi mettre 'DATE_ACT' sachant que je souhaite comparer $_REQUEST["DATE_ACT"] au résultat de ma requête sql?

    J'ai tout de même essayer d'appliquer le code mais il me dis que DATE_ACT n'est pas défini, du coup on rentre toujours dans la boucle

    Merci pour ton aide cependant

  7. #7
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Bonjour,

    Remplace par $row[0] ça devrait marcher.

    En fait $row est un tableau avec une case par colonne de ton select, et pour que ce soit plus simple tu peux l'utiliser en mode associatif avec le nom des champs récupéré.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $result3 = mysql_query("SELECT nom, prenom FROM Clients");
    $row = mysql_fetch_assoc($result3);
    echo 'nom : ' . $row['nom'] . '<br />
          prénom : ' . $row['prenom'];

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

Discussions similaires

  1. [oracle][delphi] Problème format de date dans une requete
    Par le_parrain dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h12
  2. probléme avec une date/string dans un CommandText
    Par critok dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/02/2005, 15h30
  3. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 09h18
  4. Interbase - dbExpress -> problème avec les dates
    Par marghett dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/07/2004, 03h55
  5. Requete de suppression avec en condition une date
    Par PrinceMaster77 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/04/2004, 09h23

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