Page 1 sur 1

selection entre deux dates

Posté : 11 mai 2005, 12:10
par chevaliero
Bonjour,

voila je cherche à extraire les données de ma BDD en utilisant un formulaire avec 2 textbox date1 et date2 (format jj/mm/yyyy). J'envoie ma requête avec les 2 critères dates comme variables.
Mon problème est que j'obtiens tous les enregistrements et je souhaiterais avoir uniquement ceux compris entre les deux dates.

code du formulaire
<html><head> </head><body>
<form name="form1" method="get" action="repdate2.php">
<p>
<input name="date1" type="text">
&agrave;
<input name="date2" type="text">
<br>
<input type="submit" name="Submit" value="envoi">
</p>
</form></body>
</html>

j'envoie la requete (method GET) sur une page appelée repdate2.php

code affichage des données
<?php

// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'tourisme';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );

mysql_select_db($db) or die ('Erreur :'.mysql_error());

$select = "SELECT * FROM test WHERE date1 > '$_GET[date1]' and date2 < '$_GET[date2]' ";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
while($enreg = mysql_fetch_array($result)) {
echo '<a href="fiche.php?date1='.$enreg["date1"].'">'.$enreg['date1'].' - '.$enreg['titre'].'<br><br>';
}

?>

Merci pour votre aide :D

Posté : 11 mai 2005, 12:24
par lamk
SELECT column_name FROM table_name
WHERE column_name
BETWEEN value1 AND value2

essaye comme ça pour ta requête...

selection entre deux dates

Posté : 11 mai 2005, 12:47
par chevalier
Bonjour lamk,

merci de ta réponse.

J'ai déjà procédé à cette requête dans mysql, effectivement cela fonctionne mais uniquement en rentrant les valeurs pour les dates dans le code.
Je souhaite passer les dates comme variables par le formulaire vers la page repdate2.php.

Connais-tu le moyen de remplacer value1 AND value2 par les variables ?

merci d'avance

Posté : 11 mai 2005, 13:06
par rami
Il faut formater tes dates au format Mysql.
Quels types de colonnes a tu utiliser pour tes champs dates? Si c'est le type date, Mysql les stocke ainsi : YYYY-MM-DD (YY-MM-DD fonctionne aussi).

Il faut donc que tu formates tes champs saisis car je suppose que tu les saisis DD/MM/YYYY. ;)

selection entre deux dates

Posté : 11 mai 2005, 13:16
par chevaliero
Voici la structure de la table

CREATE TABLE `test` (
`date1` int(15) default NULL,
`date2` int(15) default NULL,
`dateus` date NOT NULL default '0000-00-00',
`type` varchar(50) NOT NULL default '',
`titre` varchar(200) NOT NULL default '',
`ville` varchar(50) NOT NULL default '',
`lieu` varchar(50) NOT NULL default '',
`heure` varchar(30) NOT NULL default '',
`description` text NOT NULL,
`contacts` varchar(64) NOT NULL default '',
`tel` varchar(64) NOT NULL default '',
`url` varchar(64) NOT NULL default '',
`mail` varchar(64) NOT NULL default ''
) TYPE=MyISAM;

Posté : 11 mai 2005, 13:20
par rami
Premiere chose, essaie d'utiliser les bons type de colonnes sur les champs date1 et date2. Pourquoi les mettre en integer? Si tu peux les changer, fais-le!

Si tu ne peux pas, bon courage à toi pour faire une moulinette qui fait une comparaison de date au format integer ( comparaison des années, puis des mois, puis des jours..).

Si tu peux changer tes champs au format Date, tu n'auras qu'a formater tes dates saisies au format dd/mm/yyyy au format yyyy/mm/dd.

Posté : 11 mai 2005, 14:36
par lamk
tu peux utiliser des variables dans ta requête en utilisant le BETWEEN
$sql="SELECT column_name FROM table_name WHERE column_name BETWEEN ' ".$value1." ' AND ' ".$value2." ' ";
enfin je dis ça mais... essaye :p
je t'ai mis les espaces pour que ça soit plus clair