nino75 Posté 28 Avril 2010 Posté 28 Avril 2010 Bonjour à tous, je souhaite afficher la dernière action faite sur une anomalie, voici comment j'ai procédé: $req=mysql_query("SELECT action_trans FROM liste_action WHERE Nano= ". $list['Nano'] . " ORDER BY DATE_FORMAT(liste_action.date_a,'%Y-%m-%d')") or die("Connexion impossible"); $d = mysql_fetch_array($ren,MYSQL_BOTH); or ça ne fonctionne pas, car ça me donne toujours la première action et non pas la dernière, j'ai tenté de trier par 'ASC' ou 'DESC LIMIT 1' mais ça n'a rien changé. j'ai essayé aussi avec cette requête: $req = mysql_query("SELECT DISTINCT action_trans FROM liste_action WHERE Nano= ". $list['Nano'] . " AND date_a=(SELECT DISTINCT MAX(DATE_FORMAT(date_a,'%Y-%m-%d-')) FROM liste_action WHERE Nano= ". $list['Nano'] . ")") or die("Connexion impossible"); ça donne toujours le même résultat et sans aucune erreur. pouvez-vous m'aider s.v.p. ps: je précise que la date est codée sous le format varchar. merci.
jcaron Posté 28 Avril 2010 Posté 28 Avril 2010 Sans DESC LIMIT 1 c'est assez normal. Si tu nous donnais un exemple des lignes pour une valeur donnée de Nano et ce que tu obtiens, ça aidera probablement. Quel est exactement le format de tes dates/heures dans date_a? Jacques.
nino75 Posté 28 Avril 2010 Auteur Posté 28 Avril 2010 voici un exemple de ligne dans la base: Nano Resp_ac Date_a Type_ac ac inter trans Action-tras Date_s Heure 4 AToto 26/03/2010 A distan Appel Client 26/03/2010 00:00:00 4 AToto 27/03/2010 A distan Control Jean Atoto Control 29/03/2010 00:00:00 4 AToto 02/03/2010 A distan Integre Jean Ajean Fait 26/03/2010 00:00:00 4 AToto 26/04/2009 A distan Le point Jean Anino 26/03/2010 00:00:00 AToto 12/07/2010 A distan Reconstruire Jean Le point 26/03/2010 00:00:00 lorsque j'exécute ma requête, c'est l'action_trans "Fait" qui s'affiche et non pas "Le point". merci encore pour votre aide.
nino75 Posté 28 Avril 2010 Auteur Posté 28 Avril 2010 le tableau ne s'affiche, je vais essayer de détailler mon exemple. sur ma base j'ai plusieurs colonnes, celles qui m'intéressent pour cet exemple est date_a avec des valeurs sous cette forme 22/04/2009, l'autre colonne est "action_trans" qui peut avoir des cases vides ou des string comme "controle les donnees", mon souci est que je n'arrive pas à afficher la case correspondant à la dernière date sur tous les Numéro d'anomalie. pour voir si ça fonctionne bien j'ai essayé d'afficher juste la dernière date en fonction d'un numéro d'anomalie, voici la requête: $ren=mysql_query("SELECT date_a FROM liste_action WHERE Nano= ". $list['Nano'] . " ORDER BY DATE_FORMAT(date_a,'%Y%m%d') DESC LIMIT 1") or die("Connexion impossible"); $dn = mysql_fetch_array($ren,MYSQL_BOTH); print_r($dn); il m'affiche la première date. merci.
jcaron Posté 28 Avril 2010 Posté 28 Avril 2010 C'est assez normal, tu passes à date_format une date à une format qu'il ne comprend pas. Il faut que la date soit au format annee-mois-jour. Bref, il te faut utiliser str_to_date (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date) pour convertir cette date à un format qu'il comprend. Jacques.
nino75 Posté 28 Avril 2010 Auteur Posté 28 Avril 2010 effectivement c'est bien ça, merci Jacques pour votre aide.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant