Jump to content

probleme sur les dates.


Recommended Posts

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.

Link to post
Share on other sites

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:

<?php
$date="26/03/1951";
$datesql=ereg_replace("([0-9]{2})/([0-9]{2})/([0-9]{4})","\\3-\\2-\\1",$date);
echo $datesql;
?>

;) Dan

Link to post
Share on other sites

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. :idea:

merci encore une fois.

Link to post
Share on other sites

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: mais j y arrive pas :blush:

alors tu fera comment ?

merci :whistling:

Link to post
Share on other sites

<?
$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 .

Link to post
Share on other sites

<?
$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.

Link to post
Share on other sites

Ruicosta,

J'ai honte d'interrompre ton quasi monologue ;)

preg_match est ton ami pour faire un test sur les dates:

<?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

Link to post
Share on other sites

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

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.

Link to post
Share on other sites

<?
$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

Forum Webmaster Hub -> Création et exploitation de Sites Internet -> Les langages du Net -> Asp, Java, Cfm, ...
dans vérification d'une date.

@+

Link to post
Share on other sites

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 ;)

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:

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 ;)

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:

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 :D

bon courage dans ton aprentissage!

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...