Aller au contenu

probleme sur les dates.


Sujets conseillés

Posté

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.

Posté

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

Posté

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.

Posté

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:

Posté

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

Posté

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

Posté

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

Posté

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.

Posté

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

@+

Posté

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!

Posté

Merci -ZN- je suis sur que tout les débutants comme moi qui vont passés par la ,vont beaucoup apprendre .

Merci à tous. B)

Posté

Heu ... c'est assez comprehensible mes explications?

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...