Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2011, 01h29   #1
Invité régulier
 
Inscription : janvier 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 21
Points : 5
Points : 5
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 :
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:
Citation:
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?
jounax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 10h10   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2011, 16h58   #3
Invité régulier
 
Inscription : janvier 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 21
Points : 5
Points : 5
Merci pour ta réponse stealth35 et pour le lien.

Voila la requête modifié.


Code :
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.
jounax est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h25.


 
 
 
 
Partenaires

Hébergement Web