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 avec array_unique [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 21
    Par défaut Problème avec array_unique
    Bonsoir j'ai un petit souci que je n'arrive pas à résoudre, donc j'aurais besoin de vos lumières.

    Voila j'ai une table ou il y a entre autre un champ date sous le format suivant : jour mois année heure:minute:seconde et un autre champ qui donne un état à la ligne.
    Avec les dates je voudrais créer une liste déroulante qui contient toutes les dates au format mois année et qui ont un état bien défini ex : valide.

    Donc j'ai procédé comme suite:

    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
    $dem_commande_date = mysql_query("SELECT distinct(fk_date_panier) as date
    					    FROM panier_prix
    					    WHERE etat_commande= 'valide'
    					   ORDER BY  id_p_p ASC");
    $rep_commande_date = mysql_fetch_array($dem_commande_date);	
     
    	while($rep_commande_date)
    	{
     
    		$date_panier = $rep_commande_date["date"];  //je récupère la date 
    		$mois = substr($date_panier, 3, 2); // le mois
    		$annee = substr($date_panier, 6, 4); //l'année
     
    		// je crée un tableau contenant les mois de l'année en lettre
    		$mois_lettre = array(  "Janvier",  "Février",  "Mars", "Avril",  "Mai",  "Juin", "Juillet", "Août", "Septembre",  "Octobre", "Novembre", "Décembre")
     
    		// je transforme les mois chiffre en lettre et je crée le nouveau format de date.
    		// mois année
    		$date_final = $mois_lettre[$mois-1]." ".$annee;	
    		//$date_final2 = $mois." ".$annee;	
     
    		// je crée un tableau avec tous les nouveaux formats de date. 
    		$tab_date_final = array($date_final);
     
    		// on enlève les doublons
    		$tab_sans_doub = array_unique($tab_date_final);
     
            print_r($tab_sans_doub);
     
    	$rep_commande_date = mysql_fetch_array($dem_commande_date);	
    	  }
    Le résultat:
    Array([0] => Janvier 2011) Array([0] => Décembre 2010)Array([0] => Octobre 2010)Array([0] => Janvier 2011)
    Comme on peut le voir les doublons ne sont pas supprimés.

    Je sais pas trop comment arranger ce problème et vous?

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    faut déjà mettre tes date au format mois année et les grouper, ensuite y'aura juste besion de parser la date avec strtotime, et pour les date en francais c'est avec strftime

    http://dev.mysql.com/doc/refman/5.0/...functions.html

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 21
    Par défaut
    Merci pour ta réponse stealth35 et pour le lien.

    Voila la requête modifié.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    mysql_query("SELECT DATE_FORMAT(STR_TO_DATE(fk_date_panier, '%d %m %Y %H:%i:%s'), '%m %Y') as ndate 
    					FROM panier_prix 
    					WHERE etat_commande='valide'
    					GROUP BY ndate
    					ORDER BY ndate ASC");
    je sélectionne la date "fk_date_panier" et je lui fait un traitement.
    Comme ma date est déjà au format français j'ai eu un souci avec DATE_FORMAT qui ne comprend que le format anglais on dirait.
    Donc j'ai fais un STR_TO_DATE qui transforme ma date française en ISO, puis un DATE_FORMAT sur le tout pour avoir le format que je voulais.
    Et pour finir un group by sur mon alias "ndate".

    Voila merci encore et en espérant que ça puisse servir à quelqu'un d'autre.

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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