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 :

Sort array date [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut Sort array date
    Bonjour,

    j'ai 4 champs date :

    • date_offre
    • date_compromis
    • date_csp
    • date_acte


    sur chacune de mes lignes d'une liste.

    Je souhaite pour chacune des 4 dates, ressortir à la validation du formulaire la date la plus proche pour l'ensemble des lignes.

    Faut-il un tableau array pour chaque date ou au contraire un tableau contenant toutes les dates ?

    Comment puis-je faire pour trier par date chacune de mes entrées Date puis sortir uniquement la plus proche ?

  2. #2
    Membre régulier Avatar de vrd-74
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 76
    Points : 102
    Points
    102
    Par défaut
    Bonjour

    Convertir les dates en timestamp avec mktime, les mettre dans un array que tu trieras avec sort devrait faire l'affaire.

    Mais montre nous un extrait de ton code, je ne suis pas sûr de bien avoir compris ce que tu souhaites faire.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut
    bonjour,

    voici mon code, je converti au préalable la date en format YYYY-mm-dd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    array_push($liste_offre_objets_date_instruire,date_sens_anglais($_POST['date_offre_instruire'][$i]));
    array_push($liste_offre_objets_date_compromis,date_sens_anglais($_POST['date_compromis_instruire'][$i]));
    array_push($liste_offre_objets_date_csp,date_sens_anglais($_POST['date_csp_instruire'][$i]));
    array_push($liste_offre_objets_date_acte,date_sens_anglais($_POST['date_acte_instruire'][$i]));

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(is_array($liste_offre_objets_date_instruire))  maj_entite_offre_date(ENTITE_VENDEUR,$id,$id_offre,'date_offre',$liste_offre_objets_date_instruire);
    if(is_array($liste_offre_objets_date_compromis))  maj_entite_offre_date(ENTITE_VENDEUR,$id,$id_offre,'date_compromis',$liste_offre_objets_date_compromis);
    if(is_array($liste_offre_objets_date_csp))  maj_entite_offre_date(ENTITE_VENDEUR,$id,$id_offre,'date_csp',$liste_offre_objets_date_csp);
    if(is_array($liste_offre_objets_date_acte))  maj_entite_offre_date(ENTITE_VENDEUR,$id,$id_offre,'date_acte',$liste_offre_objets_date_acte);
    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
    function maj_entite_offre_date($id_entite,$id,$id_offre,$date,$liste) {
        array ($liste);
     
        function Datesql_toTime($date) {
            list($year, $month, $day) = explode('-', $date);
        }
     
        function sortByTime($a, $b) {
            $a = Datesql_toTime($a);
            $b = Datesql_toTime($b);
            if($a == $b) {
                return 0;
            }
            return $a < $b ? -1 : 1 ;
        }   
     
        usort($liste, 'sortByTime');
     
        echo "<br>";
        print_r($liste);
     
        echo $sql = "UPDATE vendeur_offres SET ".$date."='".$liste[0]."' 
        WHERE id_vendeur='".$id."' AND id_offre='".$id_offre."' ;";
        mysql_query($sql);
    }

    Je souhaite récupérer uniquement la date la plus ancienne pour chacun de mes 4 types de dates


    et voici le resultat : Il me ressort la date du 01 Juillet après celle du 6 aout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Array ( [0] => 2013-09-19 [1] => 2013-09-30 ) UPDATE vendeur_offres SET date_offre='2013-09-19' WHERE id_vendeur='7202' AND id_offre='8' ;
    Array ( [0] => 2013-09-24 [1] => 2013-08-01 ) UPDATE vendeur_offres SET date_compromis='2013-09-24' WHERE id_vendeur='7202' AND id_offre='8' ;
    Array ( [0] => 2013-08-06 [1] => 2013-07-01 ) UPDATE vendeur_offres SET date_csp='2013-08-06' WHERE id_vendeur='7202' AND id_offre='8' ;
    Array ( [0] => 2013-09-02 [1] => 2013-09-29 ) UPDATE vendeur_offres SET date_acte='2013-09-02' WHERE id_vendeur='7202' AND id_offre='8' ;

  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
    Si tes dates sont au format YYYY-mm-dd, tu peux les trier alphabétiquement sans avoir besoin de les convertir en objet Datetime.

    (dans ce que tu as fais, Datesql_toTime() n'a pas de retour donc ça ne peut pas marcher).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut
    Merci, il fallait en effet modifier la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // genere un timestamp date sql
    function Datesql_toTime($date) {
    	list($year, $month, $day) = explode('-', $date);			
    	return mktime(0, 0, 0, $month, $day, $year);
    }
    et ça fonctionne.

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

Discussions similaires

  1. Sort array javascript (par un autre)
    Par lokomass dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/09/2014, 15h48
  2. [Flex4] Quick Sort & array associatif
    Par siriu dans le forum Flex
    Réponses: 0
    Dernier message: 19/11/2010, 16h56
  3. Tri avec sort par date et heure
    Par oumokhtar dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 08/09/2009, 01h22
  4. [vbscript] sort array
    Par totoche dans le forum ASP
    Réponses: 6
    Dernier message: 23/05/2005, 21h59

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