Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PEAR > HTML_quickform
HTML_quickform Forum d'entraide pour la bibliothèque HTML_quickform du framework PEAR, permettant de manipuler des formulaires en PHP. Avant de poster -> tutoriels QuickForm
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/08/2008, 14h36   #1
Invité de passage
 
Inscription : août 2008
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 7
Points : 2
Points : 2
Par défaut Comparer deux dates

Quelqu'un sait comment on pourrait comparer deux dates ?

Une simple comparaison avec un addRule marche si on se contente d'un == ou != mais pas pour un < ou >.
Si quelqu'un a une idée lumineuse, je suis preneuse!

Merci d'avance
Minicodeuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2008, 14h43   #2
Nouveau Membre du Club
 
Développeur informatique
Inscription : août 2007
Messages : 52
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2007
Messages : 52
Points : 37
Points : 37
Pour simplifier la comparaison des dates, ecrit les au format annee mois jour ( par exemple '20081231').
Tu pourras alors utiliser les operateurs < et >
wanagro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2008, 14h59   #3
Invité de passage
 
Inscription : août 2008
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 7
Points : 2
Points : 2
Comment fait on pour, à partir de deux éléments "date", fabriquer des variables de la forme anneemoisjour puisqu'on a pas encore submit le formulaire ?

* ou alors j'ai oublié un épisode ? *

Bon j'ai quand même avancé la dessus : (ajout dans la page où se trouvent mes dates à comparer)
Code :
1
2
3
4
5
6
		$test = $this->controller->exportValue('page3', 'startvalidity');
		$datetempo = $test['Y'].$test['M'].$test['d'];
		$test = $this->controller->exportValue('page3', 'endvalidity');
		$datetempo2 = $test['Y'].$test['M'].$test['d'];
		if ($datetempo > $datetempo2)
			$this->addElement('text', 'test','start>end');
Bien entendu, le résultat est que ca m'ajoute un élément text quand je reviens sur cette page du formulaire et que la condition est vérifiée.
Il faudrait que je puisse faire passer cela en temps que règle mais je ne sais pas comment faire.
Minicodeuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2008, 14h15   #4
Invité de passage
 
Inscription : août 2008
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 7
Points : 2
Points : 2
Eureka j'ai trouvéééééé

J'ai tout d'abord fait un groupe pour mes éléments (date de début et date de fin).
Ensuite j'ai créé ma propre règle (registerRule).

Et le plus beau dans tout cela, c'est que ça marche!

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
[...]
 
$option = array('addEmptyOption' => true);
 
$validity['startvalidity'] =& $this->createElement('date','startvalidity',null,$option);
$validity['endvalidity'] =& $this->createElement('date','endvalidity',null,$option);
$this->addGroup($validity,'validity',$GLOBALS[lStartValidity],' '.$GLOBALS[lEndValidity]);
 
[...]
 
function compare_dates($element_name,$element_value){
    $date1 = $element_value['startvalidity']['Y'].$element_value['startvalidity']['M'].$element_value['startvalidity']['d'];
    $date2 = $element_value['endvalidity']['Y'].$element_value['endvalidity']['M'].$element_value['endvalidity']['d'];
    if ($date1 == '' && $date2 != '')
	return false;
    if ($date1 != '' && $date2 == '')
	return false;
    elseif (strlen($date1) < 6 && strlen($date2) > 6)
	return false;
    elseif (strlen($date1) > 6 && strlen($date2) < 6)
	return false;
    elseif($date1 > $date2)
	return false;
    else
	return true;
}
$this->registerRule('cmp_date','function','compare_dates');
$this->addRule('validity',$GLOBALS['lCmpDate'],'cmp_date');
 
[...]
Minicodeuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h58.


 
 
 
 
Partenaires

Hébergement Web