Version complète: sur le forum Webmaster Hub : probleme sur les dates.
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
ruicosta
bonjour a tous .
dans un formulaire j ai un champs pour mettre une date , et je precie dans le champs que elle doit etre sous la forme jj/mm/aaaa.
mais au niveau de ma table ds ma bdd la date est definie autant que 0000-00-00.

ma question:

est ce qui il ya un moyen de convertir la date jj/mm/aaaa en la forme de ma table ou bien la magie SQL peut resoudre le probleme?

sinon je vais opter pour une solution plus simple .
merci d'avance.
Dan
Salut Ruicosta,

Tu ne précises pas si tu as PHP à disposition. Mais si c'est le cas, un simple ereg_replace suffit.
Essayes-ceci:
CODE
<?php
$date="26/03/1951";
$datesql=ereg_replace("([0-9]{2})/([0-9]{2})/([0-9]{4})","\\3-\\2-\\1",$date);
echo $datesql;
?>


wink.gif Dan
ruicosta
merci DAN ca marche et ca me fait plaisir .
mais ca te derrange pas si tu m explique un peu le fonctionnement. je sais que c'est trop demandé surtout a une heure pareille .
et pour ne pas oublier ;je programme en php. u_idea_bulb02.gif
merci encore une fois.
ruicosta
c bon je pence que j ai compris le truk merci a toi DAN .
ruicosta
resalut DAN .
je voulais essayer le meme principe pour convertir dans l autre sens cad de la forme 0000-00-00 a celle de jj/mm/aaaa. wacko.gif mais j y arrive pas blush.gif

alors tu fera comment ?
merci whistling.gif
ruicosta
CODE
<?
$date="2001-02-02";
$datesql=ereg_replace("([0-9]{4})-([0-9]{2})-([0-9]{2})","\\3/\\2/\\1",$date);
echo $datesql;
?>

c bon j aiessayé ca et ca marche. c t une question de logique.
merci encore une fois .
ruicosta
encore une chose est ce qu on peu convertir les dates avec une requete cad je cherche la commande SQL.
merci .
ruicosta
CODE
<?
$select = "SELECT DATE_FORMAT(date,'%d/%m/%Y') AS date FROM concours_stats";
$query = mysql_query($select);
$res=mysql_fetch_array($query);
echo $res["date"];
?>


c bon j ai encore trouvé .
mais la plus j avance ds mon programme plus je rencontre de petits problemes.
Ma question:

ds une boucle if je voudrai avoir comme condition une verification de date cad:
if ( la date du champs corresponde au format jj/mm/aaaa) {... ?
merci.
Dan
Ruicosta,

J'ai honte d'interrompre ton quasi monologue wink.gif

preg_match est ton ami pour faire un test sur les dates:
CODE
<?php
$date="26/03/1951";
if (preg_match("#^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$#",$date))
print "OK";
else
print "mauvais format";
?>

Dan
ruicosta
biggrin.gif ca marche DAN. merci .

just une chose a rajouter , le php je l ai apris sur ce forum B)
ruicosta
rebonjour a tous
j ai encore 2 questions c que mon programme verifie la forme jj/mm/aaaa.
mais si le mec entre 10/02/0000 par exemple ca marchera tjs .
1) alors je voudrai savoir si on peut virer des dates de ce genre ou bien existe il un moyen de limiter les jj et mm et aaaa dans des intervalle?

2) est ce que je peut faire
CODE
if (preg_match("#^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$#",$date1) <= preg_match("#^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$#",$date2)){...}


merci.
ruicosta
CODE
<?
$champ_date="5-09-1999";

$explode=explode("-",$champ_date);

$jour = $explode['0'];
$mois = $explode['1'];
$annee = $explode['2'];

echo "Jour =".$jour;
echo "<br>Mois =".$mois;
echo "<br>Annee =".$annee;

if ($jour<0||$jour>31)echo "<br>La variable jour n'est pas valide.";
if ($mois<0||$mois>12)echo "<br>La variable mois n'est pas valide.";
if ($annee<1999||$annee>2004)echo "<br>La variable annee n'est pas valide.";
?>

voila j'ai déja trouvé la réponse c'est sur
CITATION
Forum Webmaster Hub -> Création et exploitation de Sites Internet -> Les langages du Net -> Asp, Java, Cfm, ...
dans vérification d'une date.
@+
-ZN-
Essayons d'aborder ton probleme sous un autre angle:

Tu peux sinon utiliser des combo boxes html, tu verifies le contenu en Javascript ...
attends je dois avoir ca dans ma bibliotheque wink.gif

CODE
function validDate(day,month,year)
{
indic=0
if ( month=="" || day=="" || year=="")
    {indic=1}

if ( (month==4 || month==6 || month==9 || month==11) && day == 31) // 30 days months
    {indic=1}

if (month==2 && (year % 4)!=0 && day > 28) // non bissextile
    {indic=1}
    
if (month==2 && (year % 4)==0 && day > 29) // bissextile
    {indic=1}

return(indic)    
}

Si indic==0 ta date est valide! sinon elle est fausse, tu ne lances pas ton form.submit() mais un alert("veuillez modifier la date svp")


Puis tu changes le format de ta date avec une autre fonction Javascript du style:
CODE
function returnDate(day, month, year)
{
myDate= (year + "-" + month + "-" + day)    
return myDate    
}

tu stockes cette valeur dans une variable de type "hidden"
lorsque tu submit() ton formulaire la date est prete a etre stockee dans ta base mysql wink.gif

puis dans l'autre sens si tu veux convertir une date mysql en language comprehensible (arf) tu utilises 2 p'tites fonctions php du style:
CODE
function convertMonthFormat($m)
{
if($m==1){ return "Jan";}
if($m==2){ return "Feb";}
if($m==3){ return "Mar";}
if($m==4){ return "Apr";}
if($m==5){ return "May";}
if($m==6){ return "Jun";}
if($m==7){ return "Jul";}
if($m==8){ return "Aug";}
if($m==9){ return "Sep";}
if($m==10){ return "Oct";}
if($m==11){ return "Nov";}
if($m==12){ return "Dec";}
}

//Changes the date format yyyy-mm-dd -> dd mmm yyyy
function convertDate($myDate)
{
list($year, $month, $day) = split("-", $myDate, 3);
$textMonth=convertMonthFormat($month);
$newDate=$day." ".$textMonth." ".$year;
return $newDate;
}



Voili voilou, attention c'est du code 100% maison y'a p'tet des erreurs biggrin.gif

bon courage dans ton aprentissage!
ruicosta
Merci -ZN- je suis sur que tout les débutants comme moi qui vont passés par la ,vont beaucoup apprendre .
Merci à tous. B)
-ZN-
Heu ... c'est assez comprehensible mes explications?
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.