Datepicker en français littéraire et retour date format sql

1 message   •   Page 1 sur 1
ViPHP
AB
ViPHP | 5818 Messages

13 févr. 2015, 02:37

Bonjour,

La date saisie affichée sera au format "Samedi 14 Février 2015" et php contrôle le retour pour avoir une date compatible au format sql du type "2015-02-14"
<?php
$form = filter_input(INPUT_POST, 'ok');
if($form)
{
	try
	{
                 if(trim($_POST['date']) == false)
                 {
                      throw new Exception('Date_Vide');
                 }

		$date = new DateTime($_POST['date']);
		$date = $date->format('Y-m-d');
		echo $date;
	}
	catch(Exception $e)
	{
                $erreur = $e->getMessage();
                echo $erreur == 'Date_Vide' ? 'Date vide' : 'Erreur de date';
	}	
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>jQuery UI Datepicker - Localize calendar</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.11.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script>
$(function() 
{		   
	var datepicker = function(picker,destination)
	{
		picker.datepicker({
		monthNames: [ "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" ],
		dayNames: [ "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
		dayNamesMin: [ "Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa" ],
		dateFormat: "DD d MM yy"
		})
		.on('change', function()
		{
			var date = $(this).datepicker( "getDate" );
			date = $.datepicker.formatDate("yy-mm-dd", date);
			destination.val(date);
		})
	}


	var form = $('#form1').find("form");
	var picker = form.find("input[name=picker]");
	var destination = form.find("input[name=date]");	
	datepicker(picker,destination);
});
</script>
</head>
<body>
    <div id = "form1">
        <form ation = "#" method="post">
            <label><span style="text-decoration:underline">Date</span> <input type="text" name="picker" style="width:180px"></label>
            <input name="date" type="hidden"  value="">
            <input name="ok" type="submit" value = "envoyer">
        </form>
    </div>
</body>
</html>
Plus d'infos dans la doc jquery ui datepicker.
En production vous aurez intérêt à rapatrier les fichiers jquery sur votre serveur pour ne pas être dépendant de l'extérieur.

Un autre exemple avec plusieurs champs de dates :
<?php
$form = filter_input(INPUT_POST, 'ok');
if($form)
{
        foreach ($_POST['date'] as $key => $date)
        {
                try
                {
                        if(trim($date) == false)
                        {
                                throw new Exception('Date_Vide');
                        }
                       
                        $d = new DateTime($date);
                        $d = $d->format('Y-m-d');
                        echo 'date '.$key.' = '. $d;
                        echo '<br>';
                }
                catch(Exception $e)
                {
                        $erreur = $e->getMessage();
                        echo $erreur == 'Date_Vide' ? 'date '.$key.' = Date vide' : 'date '.$key.' = Erreur de date';
                        echo '<br>';
                }
        }
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>jQuery UI Datepicker - Localize calendar</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.11.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script>
$(function()
{                  
        var datepicker = function(saisie,envoi)
        {
                saisie.datepicker({
                monthNames: [ "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" ],
                dayNames: [ "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
                dayNamesMin: [ "Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa" ],
                dateFormat: "DD d MM yy"
                })
                .on('change', function()
                {
                        var date = $(this).datepicker( "getDate" );
                        date = $.datepicker.formatDate("yy-mm-dd", date);
                        envoi.val(date);
                })
        }


        var form = $('#form1').find("form");
        var saisie = form.find("input[data-picker=picker]");
        var envoi = form.find("input[data-picker=date]");
       
        if(saisie.length == envoi.length)
        {
                saisie.each(function(i)
                {
                        datepicker($(this),$(envoi[i]));
                       
                });
        }
        else
        {
                alert('Le nombre de champs de saisie ayant l\'attribut data-picker="picker" est différent du nombre de champs d\'envoi des données ayant l\'attribut data-picker="date"')
        }
});
</script>
</head>
<body>
    <div id = "form1">
        <form ation = "#" method="post">
       
            <label><span style=" text-decoration:underline">Date 0</span> <input type="text" data-picker="picker" style="width:180px"></label>
            <input name="date[]" data-picker="date" type="hidden"  value="">
           
            <label><span style=" text-decoration:underline">Date 1</span> <input type="text" data-picker="picker" style="width:180px"></label>
            <input name="date[]" data-picker="date" type="hidden"  value="">
           
             <label><span style=" text-decoration:underline">Date 2</span> <input type="text" data-picker="picker" style="width:180px"></label>
            <input name="date[]" data-picker="date" type="hidden"  value="">
           
           <input name="ok" type="submit" value = "envoyer">

       </form>
   </div>
</body>
</html>
Et bonne fête aux amoureux :wink:

1 message   •   Page 1 sur 1