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 :

date différée sur plusieurs commandes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut date différée sur plusieurs commandes
    Bonjour,

    Dans une table commande, il peut y avoir 2 à 3 commande pour un même produit, je cherche à comparer chacune,
    mais je n'arrive par à faire avec ORDER BY,

    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
    	public function getCompare_date_reclamation($date_compare, $date_alert)
    	{   # CURDATE()                  -> Date du jour
    		# DATE_ADD(Date, Intervalle) -> Date avec une expression de temps ajouté.
    		$date_alert = ($date_alert==True)?"-cfg_alerte_reclamation":"";
    		$query = mysql_query('SELECT *, CURDATE() > DATE_ADD(STR_TO_DATE("' . $date_compare .'", "%d/%m/%y" ), INTERVAL cfg_limite_reclamation'.$date_alert.' DAY) FROM configuration, commandes AS cmd WHERE cmd.cmd_date_livraison=0 ORDER BY cmd.prd_id AND cmd.cmd_date ASC');
    		$row = mysql_fetch_array($query);
     
    	    foreach ($row as $value) {
    	    		if ($value == 1) {
    			return TRUE;
    		}
            }
     
     
    	}
    Merci d'avance pour votre conseil.

  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
    La syntaxe est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY colonneA, colonneB
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Merci pour la correction de syntaxe, mais cela ne fonctionne toujours pas

  4. #4
    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
    Tu peux être plus précis que "ne fonctionne pas" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Re,

    En fait ce qui parais simple, je sais pas si c'est la fatigue... me parait complqiué

    je cherche juste à faire un truc du genre group by et savoir si dans toute les commandes d'un produit, il y a une commande supérieur à n jours (INTERVAL cfg_limite_reclamation)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = mysql_query('SELECT CURDATE() > DATE_ADD(STR_TO_DATE("' . $date_compare .'", "%d/%m/%y" ), INTERVAL cfg_limite_reclamation'.$date_alert.' DAY) FROM commandes, configuration WHERE cmd_date_livraison=0 GROUP BY prd_id='.$prd_id.'');

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    je cherche juste à faire un truc du genre group by et savoir si dans toute les commandes d'un produit, il y a une commande supérieur à n jours (INTERVAL cfg_limite_reclamation)
    pour lister les commandes d'un produit de plus n jours, il faut qu'une date, par exemple la date de commande, soit stockée dans la bd.On compare ensuite cette date(+ n jours) avec la date du jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //les commandes de plus 10j
    $sql=" SELECT * FROM Table WHERE DATE_ADD(date_commande, 10 DAY) >CURRENT_DATE()";

  7. #7
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Merci pour les rappels, mais là c'est pas trop le pb, mon premier post montre une méthode avec des attributs et un format de date spécifique,

    group by regroupe des commandes d'un produit, INTERVAL n'est pas argumenté dans votre exemple, il ne sert donc pas

    Mon dernier essai ne fonctionne toujours pas...
    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
     
    	// « Compare » et « vérifie » une date limite de réclamation
    	#  Si « $alerte » vaut True, retourne la date d'alerte (date alerte = date réclamation -n jours)
            public function getCompare_date_reclamation($date_compare, $date_alert, $prd_id)
    	{   # CURDATE()                  -> Date du jour
    		# DATE_ADD(Date, Intervalle) -> Date avec une expression de temps ajouté.
                    # cfg_limite_reclamation => 45 (+n jours)
    		$date_alert = ($date_alert==true)?"-cfg.cfg_alerte_reclamation":""; # Retourne => 3 (-n jours)
    		$query = mysql_query('SELECT CURDATE() > DATE_ADD(STR_TO_DATE("' . $date_compare .'", "%d/%m/%y" ), INTERVAL cfg.cfg_limite_reclamation'.$date_alert.' DAY) FROM commandes AS cmd, configuration AS cfg WHERE cmd.cmd_date_livraison=0 GROUP BY cmd.prd_id='.$prd_id.' ORDER BY cmd.cmd_date ASC');
    		$row = mysql_fetch_array($query);
     
    		if ($row[0] == 1) {
    			return TRUE;
    		}
     
    	}
    cordialement.

  8. #8
    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
    Merci pour les rappels, mais là c'est pas trop le pb
    Un peu quand même

    La remarque d'Armel18 est tout à fait pertinente au contraire.
    Si tu veux toutes les lignes qui repondent à un critère alors ce critère va dans le WHERE pas dans le SELECT
    Actuellement tu compares la date actuelle avec une date fixe fournie en paramètre de la fonction, donc tu obtiendras la même resultat pour toutes les lignes de la fonction ; il y a bien une date en jeu qui est présente dans cette table non ?

    Ensuite GROUP BY ne se syntaxe pas comme tu le fais et qui dit groupement, dit fonction d'aggregation.
    Dans ton cas la fonction d'aggregation peut être un COUNT qui te donnera donc le nombre de lignes repondant au critères par commande.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre actif
    Inscrit en
    Février 2009
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 616
    Points : 249
    Points
    249
    Par défaut
    Bonjour en fait j'ai placé cela dans le select parce que ne fonctionne pas dans le where, j'ai retourné ça plusieurs fois dans tous les sens et continu un peu aujourd'hui,
    merci pour les conseils ou les exemples.
    Cordialement;-)

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

Discussions similaires

  1. Sélectionner des dates courant sur plusieurs mois
    Par Christophe Charron dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/01/2009, 14h03
  2. Réponses: 1
    Dernier message: 01/05/2008, 08h26
  3. Réponses: 14
    Dernier message: 09/02/2008, 15h10
  4. MàJ Formulaire sur plusieurs dates
    Par Sami Xite dans le forum IHM
    Réponses: 2
    Dernier message: 19/02/2007, 16h09
  5. Réponses: 4
    Dernier message: 03/12/2004, 11h18

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