IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

recherche par date [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Par défaut
    Bonjour alors voila, je voudrais faire un formulaire ou l'utilisateur selectionne un date de debut et une date de fin. Ceci dans un historique je fais donc ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    	<h2> Recherche par date : </h2>
    	<form action="recherche.php" method="POST">
    	Du : <SELECT name='i' Size='1'>
    		<?php
    			for($i=1; $i<=31;$i++)
    			{	       //Lister les jours
    				if ($i < 10)
    				{		       //Lister les jours pour pouvoir leur ajouter un 0 devant
    					echo "<OPTION>0$i<br></OPTION>";
    				}
    				else 
    				{
    					echo "<OPTION>$i<br></OPTION>";
    				}
                }
    			?>
    		</SELECT>
    		<SELECT name="d" Size="1">
    		<?php
    			for($d=1; $d<=12;$d++)
    			{	       //Lister les mois
    				if ($d < 10)
    				{		       //Lister les jours pour pouvoir leur ajouter un 0 devant
    					echo "<OPTION>0$d<br></OPTION>";
    				}
    				else 
    				{
    					echo "<OPTION>$d<br></OPTION>";
    				}
                }
    		?>
    		</SELECT>
    		<?php
    		$date = date('Y');		 //On prend l'année en cours
     
    		echo '<SELECT name="y" Size="1">';
    		for ($y=$date; $y<=$date+10; $y++)
    		{	       //De l'année 2000 à l'année actuelle
    			echo "<OPTION><br>$y<br></OPTION>";
    		}
    		echo "</SELECT>";
    		?>
    		Au <SELECT name='i2' Size='1'>
    		<?php
    			for($i=1; $i<=31;$i++)
    			{	       //Lister les jours
    				if ($i < 10)
    				{		       //Lister les jours pour pouvoir leur ajouter un 0 devant
    					echo "<OPTION>0$i<br></OPTION>";
    				}
    				else 
    				{
    					echo "<OPTION>$i<br></OPTION>";
    				}
                }
    			?>
    		</SELECT>
    		<SELECT name="d2" Size="1">
    		<?php
    			for($d=1; $d<=12;$d++)
    			{	       //Lister les mois
    				if ($d < 10)
    				{		       //Lister les jours pour pouvoir leur ajouter un 0 devant
    					echo "<OPTION>0$d<br></OPTION>";
    				}
    				else 
    				{
    					echo "<OPTION>$d<br></OPTION>";
    				}
                }
    		?>
    		</SELECT>
    		<?php
    		$date2 = date('Y');		 //On prend l'année en cours
     
    		echo '<SELECT name="y2" Size="1">';
    		for ($y2=$date2; $y2<=$date2+10; $y2++)
    		{	       //De l'année 2000 à l'année actuelle
    			echo "<OPTION><br>$y2<br></OPTION>";
    		}
    		echo "</SELECT>";
    		?>
    		<input type="submit" value="Rechercher"><br/>
    		</form>
    	<a href="index.php"> Retour </a></center>
    	</body>
    </html>
    J'ai bien mes listes deroulantes et dans ma bdd j'ai une date qui est le 2011-02-03

    je test alors ma recherche pour afficher cet evenement voici le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    <html>
    	<head>
    		<title> Remises </title>
    		<link rel="stylesheet" type="text/css" href="style.css">
    	</head>
    	<body style="background-color:lightblue">
    	<center>
    	<?php
     
    	if (isset ($_POST['d']))
    	{
    		$d=$_POST['d'];
    	}
    	else
    	{
    		$d="";
    	}
     
    	if (isset ($_POST['i']))
    	{
    		$i=$_POST['i'];
    	}
    	else
    	{
    		$i="";
    	}
     
    	if (isset ($_POST['y']))
    	{
    		$y=$_POST['y'];
    	}
    	else
    	{
    		$y="";
    	}
     
    	if (isset ($_POST['d2']))
    	{
    		$d2=$_POST['d2'];
    	}
    	else
    	{
    		$d2="";
    	}
     
    	if (isset ($_POST['i2']))
    	{
    		$i2=$_POST['i2'];
    	}
    	else
    	{
    		$i2="";
    	}
     
    	if (isset ($_POST['y2']))
    	{
    		$y2=$_POST['y2'];
    	}
    	else
    	{
    		$y2="";
    	}
     
    	$debut= $y."-".$d."-".$i;
    	$fin= $y2."-".$d2."-".$i2;
    	$debut=date($debut);
    	$fin=date($fin);
    	echo $debut;
    	echo $fin;
     
    	$link = mysql_connect ('localhost', 'root', '');
    	mysql_select_db('anomalies', $link);
     
    	$sql = 'SELECT id, ean, design, rayon, pvc, tel, brii, tract, valide FROM anomalies WHERE ojd BETWEEN \'$debut\' AND \'$fin\' ORDER BY id DESC;';
    	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    	?>
    	</body>
    </html>
    mais rien ne s'affiche, je tente alors un echo $debut et un echo $fin et ils s'affichent correctement. que faire...?

    Petit details en plus, j'ai modifié un peu mon script et maintenant ca s'affiche , enfin ca affiche tout sauf ce que je veux ^^

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut
    Bonjour,

    As-tu déjà essayer ta requête dans un requêteur SQL ?
    Ensuite peux tu faire un juste après l'écriture de ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT id, ean, design, rayon, pvc, tel, brii, tract, valide FROM anomalies WHERE ojd BETWEEN \'$debut\' AND \'$fin\' ORDER BY id DESC;';
    ce qui permettra d'y voir plus clair sur ta requête.

    Cordialement.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Par défaut
    apres l'echo il m'affiche la requete ^^

    SELECT id, ean, design, rayon, pvc, tel, brii, tract, valide FROM anomalies WHERE ojd BETWEEN 'date($debut)' AND 'date($fin)' ORDER BY id DESC;

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut
    Ok normal que cela ne fonctionne pas vu que les variable $debut et $fin ne corresponde pas à des valeurs.

    Pourquoi utilise-tu la fonction date ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Par défaut
    parceque j'ai 6 chaines $d,$i,$y et $d2,$i2,$y2

    et je veux les mettre en format date (format dans ma bdd)

    et enfin rechercher les dates comprises entre les variables

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut
    J'ai du mal à comprendre, tu forme déjà la date en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $debut= $y."-".$d."-".$i;
    alors pourquoi utiliser la fonction date() ?

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La fonction date() ne s'utilise pas comme ça, consulte la documentation.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2000] Recherche par date comprise dans un intervalle
    Par polo31 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/04/2020, 16h56
  2. [MySQL] Faire une recherche par DATE
    Par bullrot dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 14/10/2008, 14h38
  3. Faire une recherche par date
    Par ghnawfal dans le forum JSF
    Réponses: 13
    Dernier message: 11/04/2008, 07h35
  4. recherche par date vba excel
    Par fred014 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/03/2007, 13h35
  5. Moteur de recherche par date
    Par Prue dans le forum ASP
    Réponses: 17
    Dernier message: 27/08/2003, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo