Contrôle d'un champ time() dans un formulaire

Eric J51
Invité n'ayant pas de compte PHPfrance

25 sept. 2012, 16:00

Bonjour, je suis débutant :-). J'ai créé un formulaire pour faire des réservations dans un restaurant. Un des champs est l'heure de réservation. Je voudrais contrôler ce champ pour empêcher des rigolos de taper par exemple 26 heure 82. Je voudrais donc limiter ce champ à un format du genre 19:30 et en restant entre 12 et 21 (heures min et max pour une réservation). Pour le champ date j'ai déjà un calendrier qui s'ouvre. Existe-t-il pour l'heure quelque chose de comparable à ce calendrier? D'autres suggestions sont les bienvenues, merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 sept. 2012, 16:15

salut,


il existe plusieurs possibilités :
- avec [ur=http://jqueryui.com/l]JQuery UI[/url] tu peux utiliser le controle datepicker
- Avec HTML 5 tu peux utiliser un champs de type date ou datetime (datetime à mon avis).

Cela ne t'éviteras pas de vérifier la chose en php, car tu ne peux être certain de ce qui se passe coté client.

pour cela tu peux utiliser pour cela checkdate peux pratique
ou la classe dateTime et gérer l'erreur avec getlasterror


@+
Il en faut peu pour être heureux ......

Invité
Invité n'ayant pas de compte PHPfrance

25 sept. 2012, 16:25

Merci pour ton aide. J'ai l'impression de pouvoir contrôler mon format (00:00) en utilisant ( !preg_match('/^([0-9]){1,2}+:([0-9]){1,2}+$/', $hour)), mais je n'ai toujours pas de contrôle sur les valeurs supérieures à 24.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 sept. 2012, 17:18

checkdate ou des if sur les valeurs (explode pour séparer une chaine).
Il en faut peu pour être heureux ......

Eléphant du PHP | 343 Messages

25 sept. 2012, 17:52

A tester:
<?php
$hour= "15:59";
if(preg_match('/^([0-9]){1,2}+:([0-9]){1,2}+$/', $hour))
{
$explode= explode(":", $hour);
$heure= $explode[0];
$minute= $explode[1];

	if($heure<1 OR $heure>23 OR $minute<0 OR $minute>59)
	{
		echo "pas ok";
	}
	
	else echo "ok";

} 
else echo "prob de format";
?>
Développeur web

Eléphanteau du PHP | 16 Messages

25 sept. 2012, 20:48

Merci pour ta proposition, mais malheureusement ça ne marche pas, je peux toujours insérer 26:82 (exemple)

Eléphant du PHP | 343 Messages

25 sept. 2012, 21:51

Je viens de tester et 26:82 me retourne "pas ok".
Comment tu as intégré ça dans ton code?
Développeur web

Eléphanteau du PHP | 16 Messages

26 sept. 2012, 10:28

Merci pour ton aide, mais en fait j'ai choisi une autre option: celle de créer un menu déroulant et ça correspond exactement à ce que je veux faire.
Pour ton info, j'avais bêtement fait un copier-coller de ton code, mais en enlevant les lignes "echo", car j'avais un message d'erreur ailleurs.
Résultat peut être vu à http://www.caboulis.ch/french/test_reserver_php.php
Encore merci et bonne journée.

Eléphant du PHP | 343 Messages

26 sept. 2012, 15:40

Ça n’empêche pas la vérification, c'est modifiable les listes déroulantes ;)
Développeur web