Extraire nombre dans chaîne sql php
2b-webdesign
-
Zep3k!GnO Messages postés 2049 Statut Membre -
Zep3k!GnO Messages postés 2049 Statut Membre -
Bonjour,
Je vous expose mon souci, j'ai une table "programme", avec un champ nommé "Date", où je stocke des chaînes (VARCHAR) de type :
Mardi 2 septembre
Jeudi 14 septembre
je voudrais trier mes données sur le numéro du jour, peut être avec une expression régulière ?
Je vous expose mon souci, j'ai une table "programme", avec un champ nommé "Date", où je stocke des chaînes (VARCHAR) de type :
Mardi 2 septembre
Jeudi 14 septembre
je voudrais trier mes données sur le numéro du jour, peut être avec une expression régulière ?
3 réponses
-
RegExp :
/ ([0-9]+) /
Mais n'aurais-ce pas été plus facile d'utiliser un champ de type DATE ? -
merci mais comment l'inclure dans le ORDER BY ?
Le type DATE ne convenait pas pour diverses raisons, mais j'aurais du le préférer au type varchar c'est vrai -
La il faut passer par PhP,
je t'ai fait un petit script d'exemple à adapter et a compléter ( ne pas oublier de gérer les accents par exemple). En gros l'idée c'est d'utiliser un timestamp pour faire ton tri.
Voici donc le petit bout de code que j'ai fait vite fait :<?php $aInput = Array("Mardi 2 septembre 2000", "Jeudi 14 septembre 2000", "Mardi 15 Janvier 2000"); $sTranslateMonth = Array( "janvier" => "January", "septembre" => "September" ); echo "<pre>".print_r($aInput, true)."</pre>"; $aOuput = Array(); foreach($aInput as $sCurrentDate){ $aDateData = explode(' ', $sCurrentDate); $iTimeStamp = strtotime($aDateData[1]." ".$sTranslateMonth[strtolower($aDateData[2])]." ".$aDateData[3]); $aOuput[$iTimeStamp] = $sCurrentDate; } ksort($aOuput); foreach($aOuput as $key => $sValue){ echo "<br/>Valeur (".$key.") : ".$sValue; } ?>