liste déroulante de date

Petit nouveau ! | 7 Messages

23 sept. 2005, 11:45

bonjour

Je voudrais avoir une liste déroulante de date à partir d'une colonne date dans ma base mysql et qui s'affiche sous la forme avr-04 par ex

j'ai ce bout de code mais il ne marche pas. Pourriez-vous m'aider

merci
:oops:

Code : Tout sélectionner

<td>Recherche par date :</td> <td> <select name="date"> <?php echo $host; $query="select distinct (ltrim(rtrim)dateart))) from articles order by date desc"; $result = mysql_query($query); for ($i = 0 ; $i < mysql_num_rows($result) ; $i++) { $row = mysql_fetch_row($result); echo "<option value=\"".ereg_replace("\t","",trim($row[0]))."\">".ereg_replace("\t","",trim($row[0]))."</option>\n"; } ?>
Vive la vie au grand air !!!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 sept. 2005, 12:49

Salut, essai comme ceci:
	
  <td>Recherche par date :</td>
  <td>
    <select name="date">
    <?php                 $mois=array("jan","fév","mars","avr","mai","Jun","juin","juil","août","sept","oct","nov","déc");        
        $req="SELECT DATE_FORMAT(dateart, '%c-%y') AS dte FROM articles ORDER BY date DESC";
        $retour = mysql_query($req); 		
				
        while ($row = mysql_fetch_array($retour))
		{
			$mois_ang=explode("-",$row["dte"]);
			$mois_an=$mois[$mois_ang[0]-1].'-'.$mois_ang[1];			
            echo "<option value=\"".$mois_an."\">".$mois_an."</option>";
        }
			
	?>
	</select>

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 7 Messages

23 sept. 2005, 14:03

c'est cool ton truc mais il ne m'affiche rien dans le menu déroulant peut-être y'a t'il une erreur plus loin je te mets le code complet. et je te remercie quand même pour ton aide.

Code : Tout sélectionner

<html> <head> <title>Recherchez vos articles</title> <link type="text/css" rel="stylesheet" href="style.css"/> </head> <body> <?php $host="localhost"; $user="root"; $password=""; mysql_connect($host,$user,$password); mysql_select_db("crcopoitoucharentes"); ?> <table width="100%"> <tr width="100%" height="100%"><td align="center"> <form action="recherche.php" method="get"> <table class="recherche"> <tr> <td>Recherche par mot-clef :</td> <td><input type="text" name="recherche" <?php echo "value=\"".@$_GET['recherche']."\""?>></td> </tr> <tr> <td>Recherche par auteur :</td> <td> <select name="auteur"> <?php echo $host; $query="select distinct (ltrim(rtrim(autart))) from articles order by 1"; $result = mysql_query($query); for ($i = 0 ; $i < mysql_num_rows($result) ; $i++) { $row = mysql_fetch_row($result); echo "<option value=\"".ereg_replace("\t","",trim($row[0]))."\">".ereg_replace("\t","",trim($row[0]))."</option>\n"; } ?> </select> </td> </tr> <tr> <td>Recherche par date :</td> <td> <select name="date"> <? $mois=array("jan","fév","mars","avr","mai","juin","juil","août","sept","oct","nov","déc"); $req="SELECT DATE_FORMAT(dateart, '%c-%y') AS dte FROM articles ORDER BY date DESC"; $retour = mysql_query($req); while ($row = mysql_fetch_array($retour)) { $mois_ang=explode("-",$row["dte"]); $mois_an=$mois[$mois_ang[0]-1].'-'.$mois_ang[1]; echo "<option value=\"".$mois_an."\">".$mois_an."</option>"; } ?> </select> </td> </tr> <tr> <td colspan="2" align="center" class="recherche"><input class="bouton" type="submit" value="Chercher !"></td> </tr> </table> </form> </td></tr> </table> <?php if ((@$_GET['recherche'] != "") || (@$_GET['date'] != "") || (@$_GET['auteur'] != "")) { $query = "select * from articles where (titreart like '%".@$_GET['recherche']."%' or catart like '%".@$_GET['recherche']."%')"; if (@$_GET['date'] != "") { $query = $query." and dateart like '%".trim(@$_GET['date'])."%'"; } if (@$_GET['auteur'] != "") { $query = $query." and autart like '%".ereg_replace("\t","",trim(@$_GET['auteur']))."%'"; } $result = mysql_query($query); if ($result==0) { echo "Erreur ".mysql_errno()." : ".mysql_error(); } else { echo mysql_num_rows($result)." résultat(s) trouvé(s).<br/>"; echo "<table>\n"; echo " <tr><td></td></tr>\n"; echo " <tr>\n"; echo " <th>Titre de l'article</th>\n"; echo " <th>Date</th>\n"; echo " <th>Auteur</th>\n"; echo " <th>Numéro de page</th>\n"; echo " </tr>\n"; for ($i = 0 ; $i < mysql_num_rows($result) ; $i++) { $row = mysql_fetch_row($result); echo "<tr class=\""; if ($i%2==0) { echo "resultatClair"; } else { echo "resultatFonce"; } echo "\">\n"; echo " <td><a href=\"".$row[6]."\" target=\"_blank\">".$row[2]."</a></td>\n"; echo " <td nowrap align='center'><a href=\"".$row[6]."\" target=\"_blank\">".trim($row[3])."</a></td>\n"; echo " <td align='center'><a href=\"".$row[6]."\" target=\"_blank\">".$row[5]."</a></td>\n"; echo " <td align='center'><a href=\"".$row[6]."\" target=\"_blank\">".trim($row[4])."</a></td>\n"; echo "</tr>\n"; } echo "</table>\n"; } } else { echo "Veuillez saisir un critère de recherche."; } ?> </body> </html>
Vive la vie au grand air !!!

Petit nouveau ! | 7 Messages

23 sept. 2005, 17:12

j'ai corrigé ton petit script, j'ai maintenant les mois et les années comme je voulais mais il ne sont pas classées comme je le souhaite, j'ai :

-sept-03
-sept-02
-sept-01
-août-01
-juil-04
...

je voudrais avoir plutôt:
-dec-04
-nov-04
...
-dec-03
-nov-03
-...

je te mets le script modifié:

Code : Tout sélectionner

<td>Recherche par date :</td> <td> <select name="date"> <? $mois=array("jan","fév","mars","avr","mai","juin","juil","août","sept","oct","nov","déc"); $req="SELECT DISTINCT DATE_FORMAT(dateart, '%c-%y') AS date FROM articles ORDER BY date DESC"; $retour = mysql_query($req); while ($row = mysql_fetch_array($retour)) { $mois_ang=explode("-",$row["date"]); $mois_an=$mois[$mois_ang[0]-1].'-'.$mois_ang[1]; echo "<option value=\"".$mois_an."\">".$mois_an."</option>"; } ?> </select>
Vive la vie au grand air !!!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 sept. 2005, 17:16

en changeant la requete peut etre avec les bonnes valeur:
$req="SELECT DATE_FORMAT(dateart, '%c-%y') AS dte FROM articles ORDER BY dateart DESC";
"dateart" correspond bien à un champ de type date (aaaa-mm-jj) ?
Sinon teste la valeur renvoyé par la requete :
echo $row['dte'];
normalement tu devrai avoir un truc du style "9-05" pour septembre 2005.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 7 Messages

23 sept. 2005, 19:33

merci pour ton aide, avec un distinct, j'ai exactement ce que je voulais, mais maintenant cela ne me ramène plus aucun articles de ma base mais je vais chercher.

En plus je voudrais que ça les affiche par numero de page de la plus petite à la plus grande. Je m'y met et je remettrai un message pour l'étape suivante.

Merci

et je peux mettre un résolu ??? :P
comment on fait ?
Vive la vie au grand air !!!