Question

colonne MySQL> sdate, MOIS.DECALER (la colonne 2).

sdate est la date de début pour le démarrage du projet et MOIS.DECALER est date de fin de fin de projet.

donc je dois faire la recherche entre eux ..

<strong>Search</strong><br />
<form method="post" action="search.php">
  Start Report Date : <input type="text" name="sdate" />
  End Report Date : <input type="text" name="edate" />
  <input type="submit" name="Submit" value="Search" />
</form>

This is example data in mysql
sdate             Project Name      edate
22 December 2008  project 1         23 December 2008
25 December 2008  project 2         26 December 2008
24 December 2008  project 3         27 December 2008
1  January 2008   project 4         20 January 2008
10 December 2008  project 5         12 December 2008

Alors disons que l'utilisateur est entré sdate (par exemple, le 22 Décembre 2008) et MOIS.DECALER (par exemple, le 30 Décembre 2008).

Il doit afficher

22 December 2008  project 1         23 December 2008
25 December 2008  project 2         26 December 2008
24 December 2008  project 3         27 December 2008

Alors je besoin d'un code php requête SQL qui devrait afficher les entrées se trouve entre ces 2 dates ..

S'il vous plaît aidez-moi ..

Merci beaucoup ..

Était-ce utile?

La solution

en supposant que votre sdate et edate sont de type colonnes MySQL DATE vous pouvez faire ce qui suit:

SELECT  
  Project_Name
, sdate
, edate
FROM your_table 
WHERE 
  sdate <= '2008-12-26'
 AND 
  edate >= '2008-12-26'

ou vous pouvez utiliser DATEDIFF

SELECT  
  Project_Name
, sdate
, edate
FROM your_table 
WHERE 
  DATEDIFF(sdate, '2008-12-26') <= 0
 AND 
  DATEDIFF(edate, '2008-12-26') >= 0

Le premier est plus efficace car MySQL peut comparer toutes les lignes de votre table à une valeur statique. Pour la deuxième solution, il doit calculer la différence pour chaque ligne de votre table.

Si vos colonnes sdate et edate ne sont pas les colonnes DATE, vous êtes hors de la chance et que vous devez les changer d'abord.

Autres conseils

Il semble que d'une simple requête select avec une clause « où » peut faire l'affaire.

Peuso-code:

select sdate, name, edate 
from your_table 
where sdate >= '22 December 2008' and edate <= '30 December 2008'

En aparté, pour aider à l'interface utilisateur, je recommande d'utiliser phps méthode strtotime () ... il fait pour les dates entrer dans très flexibles

Première utilisation mktime () sur l'entrée de l'utilisateur

$time = mktime(format from user);

puis faire

SELECT Project_Name, sdate, edate FROM table WHERE 
  UNIX_TIMESTAMP(STR_TO_DATE(sdate, '%e %m %Y')) <= '$time'
 AND 
  UNIX_TIMESTAMP(STR_TO_DATE(edate, '%e %m %Y')) >= '$time'

Cela devrait fonctionner.

SELECT project_name, sdate, MOIS.DECALER   des projets  OÙ sdate <= $ _POST [ 'MOIS.DECALER']    ET MOIS.DECALER> = $ _POST [ 'sdate']

Vous donne tout projet date de début et de fin qui se chevauchent la date de début du formulaire et la date de fin. (En supposant que la forme sdate et MOIS.DECALER sont dans le format)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top