Problème de calcul de dates

Problème de calcul de dates - PHP - Programmation

Marsh Posté le 18-04-2004 à 10:53:07    

Salut tout le monde ! :hello:
 
J'ai un gros problème de dates :
J'ai une base de données avec des éléments datés et un moteur de recherche pour retrouver les dates de ces éléments.
 
Le but est de taper une date approximative (année seulement, en 4 chiffres) et le moteur recherche dans un intervale +/- 10 ans l'élément correspondant et en affiche les détails et la date (format AAAA-MM-JJ retranscrit à l'affichage au format français).
 
Pour l'instant j'ai ça :
 
echo"La recherche s'est effectuée entre $date01 et $date2<br>";
$query="SELECT * FROM chainon WHERE ctype='$acte' AND cnom LIKE '%$mot%' AND (cdate BETWEEN '$date01' AND '$date2') ORDER BY cnom ASC";
 
Avant d'insérer le critère de dates, le moteur marchait très bien et quand j'enlève ce critère, il remarche. Le problème viend donc bien de la date. Je teste avec une date qui doit donner au moins 10 résultats.
 
Au secours !!
 

Reply

Marsh Posté le 18-04-2004 à 10:53:07   

Reply

Marsh Posté le 18-04-2004 à 12:30:32    

base oracle ? mysql ?
 
en oracle, il faut faire un to_date('$date', '$format') pour transformer une chaîne de caractères en date :)

Reply

Marsh Posté le 18-04-2004 à 12:33:40    

en base mysql...
 
Merci de m'aider

Reply

Marsh Posté le 18-04-2004 à 12:35:10    

bah regarde ce qu'il faut faire en mysql pour transformer une chaîne de caractères en date (sûrement to_date aussi).
 
Voici un extrait de la doc :
 
http://dev.mysql.com/doc/mysql/en/ [...] tions.html
-> STR_TO_DATE(str,format)
 
et mince, c'est dispo qu'à partir de mySql 4.1.1 ...
 
je te laisse regarder la doc, tu devrais trouver ce que tu cherches :)


Message édité par Beegee le 18-04-2004 à 12:38:57
Reply

Marsh Posté le 18-04-2004 à 12:52:24    

et j'ai le version 4.0.16 mais je vais regarder ton lien.
 
ça fait depuis ce matin 7h que je cherche la solution, mais rien ne passe (j'avais même essayer les adddate, les date(), et autres combinaisons trouvés par ci par là).
 
Bon, je zyeute... Merci encore

Reply

Marsh Posté le 18-04-2004 à 12:53:08    

tchouk tchouk music  
 
désolé.

Reply

Marsh Posté le 18-04-2004 à 13:30:59    

toujours le même problème.  
 
à priori je penses que ça doit venir du format de la date provenant du formulaire. Mais comment convertir une année en date complète ?

Reply

Marsh Posté le 18-04-2004 à 14:11:11    

en l'écrivant '$année-01-01' peut-être ...

Reply

Marsh Posté le 18-04-2004 à 14:23:51    

j'ai déjà essayé, une fois directement dans la requête, une fois dans une variable en dehors, mais rien ne change.
 
j'ai essayé aussi les parenthèses, la concaténation, mais toujours rien !
 
Je vois vraiment pas où chercher !

Reply

Marsh Posté le 18-04-2004 à 14:32:24    

Reprenons depuis le début...
 
Dans mon formulaire j'ai cette ligne qui me permet de récupérer la date approximative recherchée :
 
<br>Date clef : <input type='text' name='date1' size='8'>
 
 
Ce qui renvoie à mon traitement de la requête :
 
 
 
$date01=$date1-10;
$date2=$date1+10;
$datedeb=$date01;
$datefin=$date2;
 
echo"La recherche s'est effectuée entre $date01 et $date2<br>";
 
$query="SELECT * FROM chainon WHERE ctype='$acte' AND cnom LIKE '%$mot%' AND (cdate BETWEEN '$datedeb' AND '$datefin') ORDER BY cnom ASC";
 
$req=mysql_query ($query, $link) or die ("<br>Impossible d'obtenir un lien de la base de données :<br>".mysql_error() );

 
J'ai recopié les variables (date,datedeb,etc...) pour décomposer au maximum les articulations et essayer de trouver d'où vient le problème.
 
Mais je ne vois vraiment pas d'où ça peut venir ! :cry:

Reply

Marsh Posté le 18-04-2004 à 14:32:24   

Reply

Marsh Posté le 20-04-2004 à 14:06:41    

ctype='$acte'
 
En écrivant comme cela, tu recherches la chaine "$acte" et non pas la valeur de ta variable
 
"... ctype='".$acte."' ..."
 


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 20-04-2004 à 14:37:22    

question : c'est quoi le format de ta date en mysql ?
 
sinon peut afficher la requête avant de l'executer genre :  
 
echo"La recherche s'est effectuée entre $date01 et $date2<br>";  
 
$query="SELECT * FROM chainon WHERE ctype='$acte' AND cnom LIKE '%$mot%' AND (cdate BETWEEN '$datedeb' AND '$datefin') ORDER BY cnom ASC";  
 
$req=mysql_query ($query, $link) or die ("<br>Impossible d'obtenir un lien de la base de données :<br>".mysql_error() );  
 
 
PUIS nous faire un copier coller de cette requête

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed