Trie date au format texte
Résolu
labourette
Messages postés
657
Date d'inscription
Statut
Membre
Dernière intervention
-
labourette Messages postés 657 Date d'inscription Statut Membre Dernière intervention -
labourette Messages postés 657 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je voudrais pouvoir afficher mes dates dans l'ordre croissant.
Mais malheureusement mes dates dans ma BDD sont aux formats texte.
Cela m'ennuie de changer en format DATE car ça fonctionne très bien en format texte de plus j'ai mis un calendrier Jquery.
existe t-il une fonction mais je ne suis pas trop doué en PHP.
Si quelqu'un pouvait m'aider et me dire ce qu'il en pense.
Je vous remercie beaucoup de votre aide
Je voudrais pouvoir afficher mes dates dans l'ordre croissant.
Mais malheureusement mes dates dans ma BDD sont aux formats texte.
Cela m'ennuie de changer en format DATE car ça fonctionne très bien en format texte de plus j'ai mis un calendrier Jquery.
existe t-il une fonction mais je ne suis pas trop doué en PHP.
Si quelqu'un pouvait m'aider et me dire ce qu'il en pense.
Je vous remercie beaucoup de votre aide
A voir également:
- Trie date au format texte
- Format epub - Guide
- Format factory - Télécharger - Conversion & Codecs
- Hp usb disk storage format tool - Télécharger - Stockage
- Format apfs - Guide
- Transcription audio en texte word gratuit - Guide
17 réponses
Je te propose de créer une petite fonction qui pourrait te permettre de transformer tes dates de format jj/mm/yyyy au format "secondes" de linux:
Cela te permet de renvoyer le nb de secondes écoulés depuis 01/01/1970; Ainsi, tu obtiens tes dates dans l'ordre croissante...
date("U", $madate);
Sinon, autrement, il faut faire une fonction plus complexe, et "fouiller" inutilement dans ta table 2 fois...
Si tu veux plus de détails...
Cela te permet de renvoyer le nb de secondes écoulés depuis 01/01/1970; Ainsi, tu obtiens tes dates dans l'ordre croissante...
date("U", $madate);
Sinon, autrement, il faut faire une fonction plus complexe, et "fouiller" inutilement dans ta table 2 fois...
Si tu veux plus de détails...
Merci de ton aide précieuse ç'est très sympa de pouvoir m'aider il y a trop lomptemps que je galère pour mettre mes dates dans l'ordre croissant.
Merci
Merci
Bonjour
Je reviens sur mon problème que je n'arrive pas à solutionner.
En vous remerciant beaucoup, j'ai vraiment besoin de votre aide.
une petite récap de mon problème
Dans mes formulaires j'ai intégrer beaucoup de date au format texte avec un calendrier jquery qui fonctionne super.
Je ne souhaite pas changer dans ma BDD et mettre au format date.
et pourtant il faut que mes dates qui sont bien entendu au format texte se classe dans un ordre croissant.
Existe t-il une fonction pour la classement des dates?
Merci beaucoup de votre aide.
Je reviens sur mon problème que je n'arrive pas à solutionner.
En vous remerciant beaucoup, j'ai vraiment besoin de votre aide.
une petite récap de mon problème
Dans mes formulaires j'ai intégrer beaucoup de date au format texte avec un calendrier jquery qui fonctionne super.
Je ne souhaite pas changer dans ma BDD et mettre au format date.
et pourtant il faut que mes dates qui sont bien entendu au format texte se classe dans un ordre croissant.
Existe t-il une fonction pour la classement des dates?
Merci beaucoup de votre aide.
une piste:
//si ton_champ_date au format jj/mm/yyyy //on va découper la date en yyyy mm jj et reconcatener tout ça dans le bon ordre, celui compris par mysql et lui donner un surnom qui sert au tri //au besoin vas voir chaque fonction sur G..... $query="SELECT CONCAT('',SUBSTRING(ton_champ_date,7,4),SUBSTRING(ton_champ_date,4,2),SUBSTRING(ton_champ_date,1,2)) as date_format_mysql ORDER BY date_format_mysql ASC ";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour et grand merci pour votre aide.
Malheureusement je ne comprend pas très bien pour ne pas dire pratiquement rien.
Mais ce n'ai pas vos explications c'est ma connaissance en SQL et PHP qui me fait défault.
En effet je débute dans ce domaine c'est pourquoi un peu plus de détail me serait peut-être utile.
Je connait quelques rudiment mais ça s'arrête là.
C'est déjà pour ça que j'ai mis tous les champs de ma table en format texte.
Mais maintenant si je veux aller plus loin avec mes dates, je suis perdu.
Merci encore de votre aide afin que je puisse avancé sur mon site.
Malheureusement je ne comprend pas très bien pour ne pas dire pratiquement rien.
Mais ce n'ai pas vos explications c'est ma connaissance en SQL et PHP qui me fait défault.
En effet je débute dans ce domaine c'est pourquoi un peu plus de détail me serait peut-être utile.
Je connait quelques rudiment mais ça s'arrête là.
C'est déjà pour ça que j'ai mis tous les champs de ma table en format texte.
Mais maintenant si je veux aller plus loin avec mes dates, je suis perdu.
Merci encore de votre aide afin que je puisse avancé sur mon site.
si on fait une requette sql avec un tri sur ton_champ_date qui est au format texte et de plus français je suppose, mysql ne peut pas faire le tri, pour lui il faut qu'il ait la date au format yyyymmdd
par ex: 20100911 est plus petit que 20100912
donc on demande au moment de la requette à mysql de faire une conversion de ce format
idem pour les autres
ensuite on réaboute tout ça par CONCAT
et à la valeur obtenue on lui donne un surnom
et on demande à mysql de trier par rapport à ça
par ex: 20100911 est plus petit que 20100912
donc on demande au moment de la requette à mysql de faire une conversion de ce format
SUBSTRING(ton_champ_date,7,4)coupe la date de ton_champ_date a partir de 7 caracteres et sur une longueur de 4 => année
idem pour les autres
ensuite on réaboute tout ça par CONCAT
et à la valeur obtenue on lui donne un surnom
as date date_format_mysql
et on demande à mysql de trier par rapport à ça
Merci
J'arrive à comprendre un peu demain je regarde ça et je dis ce qu'il en ai.
Encore merci de ta précieuse explication et de ton aide bien sur.
J'arrive à comprendre un peu demain je regarde ça et je dis ce qu'il en ai.
Encore merci de ta précieuse explication et de ton aide bien sur.
$query="SELECT CONCAT('',SUBSTRING(ton_champ_date,7,4),SUBSTRING(ton_champ_date,4,2),SUBSTRING(ton_champ_date,1,2)) as date_format_mysql ORDER BY date_format_mysql ASC ";
attention la requette n'est pas complete
il manque le FROM ta_table
attention la requette n'est pas complete
il manque le FROM ta_table
$query="SELECT CONCAT('',SUBSTRING(ton_champ_date,7,4),SUBSTRING(ton_champ_date,4,2),SUBSTRING(ton_champ_date,1,2)) as date_format_mysql FROM ta_table ORDER BY date_format_mysql ASC ";
ou alors en php:
Essaye un truc du genre.
mysql_connect()... ... // ta connection $SQL = mysql_query('SELECT id,date FROM ta_table')or exit(mysql_error()); while ($donnee = mysql_fetch_array($SQL)){ // on prend toutes les dates $tableau_date = explode('-',$donnee['date']; // on découpe la date $new_date = mktime('0','0','0',$tableau_date[1],$tableau_date[0],$tableau_date['2']); mysql_query('UPDATE ta_table WHERE date="'.$new_date.'" WHERE id='.$donnee['id'])or exit(mysql_error()); }
Essaye un truc du genre.
ok mais avec cette méthode tu UPDATE au nouveau format les valeurs de dates existantes dans la base, et que deviendront les nouvelles entrées ?
Bonjour Alain_42,
Ta méthode me semble bien je commence un peu à comprendre comment je pourrai m'en sortir mais cela reste encore un peu flou.
Pourrais tu encore me guider?
En fait il faut découper la chaine de caractéres qui est "ma date" avec la fonction substring ?
Mon format texte de mon champ date est par exemple
mercredi 25 septembre 2010
Et ma requéte SQL je l'insére dans mon formulaire ?
Merci encore de ton aide.
Ta méthode me semble bien je commence un peu à comprendre comment je pourrai m'en sortir mais cela reste encore un peu flou.
Pourrais tu encore me guider?
En fait il faut découper la chaine de caractéres qui est "ma date" avec la fonction substring ?
Mon format texte de mon champ date est par exemple
mercredi 25 septembre 2010
Et ma requéte SQL je l'insére dans mon formulaire ?
Merci encore de ton aide.
Mon format texte de mon champ date est par exemple
mercredi 25 septembre 2010
alors la methode que je t'ai donnée ne peut pas marcher, il ne faut que des chiffres par ex 13/09/2010
il faut trouver une autre solution en faisant faire le tri via un array php
qu'affiches tu en plus de la date, (quels autres champs de ta table) ?
Et ma requéte SQL je l'insére dans mon formulaire ?
la je ne peut te répondre ne sachant pas ce que tu veux faire
mercredi 25 septembre 2010
alors la methode que je t'ai donnée ne peut pas marcher, il ne faut que des chiffres par ex 13/09/2010
il faut trouver une autre solution en faisant faire le tri via un array php
qu'affiches tu en plus de la date, (quels autres champs de ta table) ?
Et ma requéte SQL je l'insére dans mon formulaire ?
la je ne peut te répondre ne sachant pas ce que tu veux faire
En fait
J'ai mes dates de sortie et j'affiche dans un tableau toutes ses dates via un calendrier jquery et ma date comme je te disais c'est
"mercredi 25 septembre 2010"
et je voudrais les classer dans ce tableau par ordre croissant.
ma table c'est "sortie"
mon champ c'est "date_sortie"
et mon tableau
En te remerciant de l'aide que tu peux m'apporter.
J'ai mes dates de sortie et j'affiche dans un tableau toutes ses dates via un calendrier jquery et ma date comme je te disais c'est
"mercredi 25 septembre 2010"
et je voudrais les classer dans ce tableau par ordre croissant.
<td>Date de la sortie :</td> <td><input id="date_sortie" class="date_input" name="user_date_sortie" size="30" value="<?php echo @$rows->date_sortie ?>" type="text" disabled=""/> <img src="image/calendar.gif" id="monImage4"/></td>
ma table c'est "sortie"
mon champ c'est "date_sortie"
et mon tableau
<table id="ad_list" cellpadding="0" cellspacing="0"> <tr> <th width="20%">Dates<br/>des sorties</th> <th width="20%">Lieu</th> <th width="20%">Commentaire</th> </tr> </table>
En te remerciant de l'aide que tu peux m'apporter.
on est obligé de passer par une étape intermédiaire, on lit la table, on mémorise dans un array à deux dimensions, on travaille sur cet array on le tri et on affiche à partir de cet array trié
je n'ai pas la même méthode que toi pour lire la table mais le résultat est le même
as tu des accents dans les noms des mois ?? si oui ça va poser pb
je n'ai pas la même méthode que toi pour lire la table mais le résultat est le même
as tu des accents dans les noms des mois ?? si oui ça va poser pb
<?php // tri par date au format fr dans un champ type text //et au format mercredi 15 septembre 2010 //taleaux de correspondance mois => numeros $array_mois=array("janvier"=>"01","février"=>"02","mars"=>"03","avril"=>"04","mai"=>"05","juin"=>"06","juillet"=>"07","aout"=>"08","septembre"=>"09","octobre"=>"10","novembre"=>"11","decembre"=>"12"); //connexion BDD $cnx=mysql_connect('localhost','root',''); $db=mysql_select_db('essai_tri'); $query="SELECT * FROM sortie "; $result=mysql_query($query) or die ("Pb avec la requette: ".$query."<br />".mysql_error()); //init de l'array dans lequel on mémorise les resultats ce sera un array à deux dimensions $array_sorties=array(); while($data=mysql_fetch_assoc($result)){ //on decoupe la date mercredi 15 septembre 2010 par rapport à espace $array_date_alpha=explode(' ',$data['date_sortie']); //on transforme le mois en numerique en se basant sur le tableau de correspondance mois=>num mois $mois_format_num=$array_mois[strtolower($array_date_alpha[2])]; //strtolower c'est pour mettre en minuscules avant de lire dans le tableau //on remet toute la date au format yyyymmjj numérique $date_format_numerique=$array_date_alpha[3].$mois_format_num.$array_date_alpha[1]; //on s'en sert comme cle pour l'array $array_sorties[$date_format_numerique]['date_sortie']=$data['date_sortie']; $array_sorties[$date_format_numerique]['lieu']=$data['lieu']; $array_sorties[$date_format_numerique]['commentaire']=$data['commentaire']; } /* ////TEST //Visualisation contenu array echo '<pre>'; print_r($array_sorties); echo '</pre>'; //////// */ //on va trier l'array par rapport aux clefs donc par rapport à cette date numérique ksort($array_sorties); /* ////TEST //Visualisation contenu array trié echo '<pre>'; print_r($array_sorties); echo '</pre>'; //////// */ ?> <table id="ad_list" cellpadding="0" cellspacing="0"> <tr> <th width="20%">Dates<br/>des sorties</th> <th width="20%">Lieu</th> <th width="20%">Commentaire</th> </tr> <?php //on parcours le niveau 1 (les dates num)de l'array trié pour afficher les valeurs correspondantes (lieu, commentaire))contenues dans le niveau 2 ($s_array)) foreach($array_sorties as $cle=>$s_array){ ?> <tr> <td> <input type="text" id="date_sortie" class="date_input" name="user_date_sortie" size="30" value="<?php echo $s_array['date_sortie']; ?>" disabled="" /> <img src="image/calendar.gif" id="monImage4"/> </td> <td> <input type="text" id="lieu_sortie" class="date_input" name="user_lieu_sortie" size="30" value="<?php echo $s_array['lieu']; ?>" disabled="" /> </td> <td> <input type="text" id="commentaire_sortie" class="date_input" name="user_commentaire_sortie" size="30" value="<?php echo $s_array['commentaire']; ?>" disabled="" /> </td> </tr> <?php } ?> </table>
Bonjour et un très grand merci de ta réponse.
Je viens de te lire et demain après-midi je m'y penche dessus.
Je te tiens au courant mais déjà je te remercie du temps passé sur mon problème.
A demain ou Vendredi au plus tard
Encore merci
Je viens de te lire et demain après-midi je m'y penche dessus.
Je te tiens au courant mais déjà je te remercie du temps passé sur mon problème.
A demain ou Vendredi au plus tard
Encore merci
Bonjour
Je suis en train de mettre en place ton script que tu m'as fait tu as dû y passer un bon moment je te remercie
Il y a une petite chose que je ne comprend pas mais je vais essayer d'arriver à le mettre en place dans ma page.
Je te tiens au courant peut-être si ça t'ennuie pas de m'aider le cas échéant ou j'aurai des problèmes.
Encore merci
Je suis en train de mettre en place ton script que tu m'as fait tu as dû y passer un bon moment je te remercie
Il y a une petite chose que je ne comprend pas mais je vais essayer d'arriver à le mettre en place dans ma page.
Je te tiens au courant peut-être si ça t'ennuie pas de m'aider le cas échéant ou j'aurai des problèmes.
Encore merci