Accueil > Forum > > > > equivalent du viewstate en php ?
equivalent du viewstate en php ?
mercredi 6 octobre 2004 à 09:57:19 |
equivalent du viewstate en php ?

alce
|
Bonjour ! Certains d'entre vous savent-ils s'il existe une classe (en cours de développement ou non) permettant de simuler un équivalent du "viewstate" en ASP.Net ? C'est une fonctionnalité qui permet de collecter les données d'un formulaire d'une page et de les renvoyer automatiquement en cas de rechargement (du par exemple à une erreur de remplissage). Ca permet de gagner du temps en programmation sans avoir à gèrer la re-saisie d'informations... Merci !
|
|
jeudi 14 octobre 2004 à 18:38:26 |
Re : equivalent du viewstate en php ?

phanatic
|
################## CPhanaticFormHTML.class.php ################## <?php /** * class représentant un formulaire HTML */ abstract class CPhanaticFormHTML { /** @var array liste des champs enregistrés*/ private $registerInputs=array(); /** @var array liste des methodes de validation */ private $inputValidationMethods=array(); /** @var array liste des messages d'erreur */ private $inputErrorMessages=array(); /** @var string nom du formulaire */ private $formName; /** @var boolean comportement sur la validation */ private $cleanOnValidat; /** * @param string $formName identifiant du formulaire ( unique pour une session ) * @param boolean $cleanOnValidat deternime si l'etat du formulaire doit être sauvegardé aprés sa validation */ function __construct($formName="_DEFAULT", $cleanOnValidat=TRUE){ $this->formName = $formName; $this->cleanOnValidat = $cleanOnValidat; if(empty($_SESSION[$this->formName])){ $this->initialize(); $_SESSION[$this->formName] = "ready"; } } /** * enregistrement d'un champ de formulaire * @param string $inputName nom du champ ( nom HTML ) * @param string $validationMethodeName methode qui sera appelée pour valider le champ : public boolean methodName(string $value) * @param string $errorMessage message renvoyé en cas d'erreur sur le champ */ protected function resigsterInput($inputName,$validationMethodeName, $errorMessage){ if(!in_array($inputName, $this->registerInputs)){ $this->inputValidationMethods[$inputName] = $validationMethodeName; $this->inputErrorMessages[$inputName] = $errorMessage; } } /** * netoyage de la session */ public function clean(){ foreach($this->registerInputs as $input){ $validValueInputName = $this->formName . "_" . $inputName . "_VALUE"; $validMessageInputName = $this->formName . "_" . $inputName . "_MSG"; if(!empty($_SESSION[$validValueInputName])){ unset($_SESSION[$validValueInputName]); } if(!empty($_SESSION[$validMessageInputName])){ unset($_SESSION[$validMessageInputName]); } } } /** * teste s'il le formulaire a été posté * @return boolean - true si oui * - false dans tous les autres cas */ public function isPosted(){ return !empty($_POST[$this->formName]); } /** * obtenir la valeur d'un champ * @param string $inputName nom du champ ( nom HTML ) * @return string */ public function getInputValue($inputName){ $validInputName = $this->formName . "_" . $inputName . "_VALUE"; if(array_key_exists($validInputName,$_SESSION)){ $_SESSION[$validInputName] = ""; } return $_SESSION[$validInputName]; } /** * définir la valeur d'un champ * @param string $inputName nom du champ ( nom HTML ) * @param string $inputValue valeur du champ */ public function setInputValue($inputName, $inputValue){ $validInputName = $this->formName . "_" . $inputName . "_VALUE"; $_SESSION[$validInputName] = $inputValue; } /** * obtenir le message d'un champ * @param string $inputName nom du champ ( nom HTML ) * @return string */ public function getInputMessage($inputName){ $validInputName = $this->formName . "_" . $inputName . "_MSG"; if(array_key_exists($validInputName,$_SESSION)){ $_SESSION[$validInputName] = ""; } return $_SESSION[$validInputName]; } /** * définir le message d'un champ * @param string $inputName nom du champ ( nom HTML ) * @param string $inputMessage message du champ */ public function setInputMessage($inputName, $inputMessage){ $validInputName = $this->formName . "_" . $inputName . "_MSG"; $_SESSION[$validInputName] = $inputValue; } /** * teste s'il le formulaire est valide * @return boolean - TRUE si oui * - FALSE dans tous les autres cas */ public function isValidate(){ $result = TRUE; // vider la pile des anciens messages unset($this->messages); $this->messages = array(); //interogation de la classe d'implémentation $cls = new ReflectionClass(get_class($this)); $validatMethod = null; // effecter le travail pour tous les champs enregistrés foreach($this->registerInputs as $input){ if(!array_key_exists($input, $_POST)){ $this->messages[$input] = "Ce champ n'existe pas dans le formulaire !"; $result = FALSE; break; } $validatMethod = $cls->getMethod($this->inputValidationMethods[$inputName]); // teste de la valeur if(!$validatMethod->invoke($this,$_POST[$inputName])){ $this->messages[$input] = $this->inputErrorMessages[$inputName]; $result = FALSE; break; } } //notification de l'évennement de validation if($result){ $this->onValidate(); if($this->cleanOnValidat){ $this->clean(); } } else { $this->onInvalidate(); } return $result; } /** * appeler l'or de la premiere instentiation */ protected function initialize(){ } /** * appeler en cas de non validation ( ne pas faire de redirection ) */ protected function onInvalidate(){ } /** * appeler en cas de validation ( ne pas faire de redirection ) */ protected function onValidate(){ } /* validations prédéfinies */ public static function isNotEmty($string){ return !empty($string); } public static function isUSZipCode($string){ return preg_match("/^[2-9][0-9]{4}([-]{1}[0-9]{4})?$/",$string)); } public static function isUSPhoneNumber($phonenumber){ return preg_match("/^[0-9]{3,3}[-]{1,1}[0-9]{3,3}[-]{1,1} [0-9]{4,4}$/", $phonenumber); } public static function isIPAddress($ip_addr){ $num="(1?\d\d|2[0-4]\d|25[0-5]|[0-9])"; return preg_match("/$num\.$num\.$num\.$num/",$ip_addr); } public static function isEmail($email){ // j'ai la flème .... return !empty($email); } } ?>
################## CMyFormHTML.class.php ################## <?php include_once ("CPhanaticFormHTML.class.php"); class CMyFormHTML extends CPhanaticFormHTML { function __construct(){ parent::__construct("_MYFORMHTML"); $this->resigsterInput("_NAME","isValidateName", ""); $this->resigsterInput("_EMAIL","isValidateEmail", ""); $this->resigsterInput("_PHONE","isValidatePhone", ""); } protected function initialize(){ $this->setInputValue("_NAME","Alce"); } protected function onInvalidate(){ } protected function onValidate(){ } public static function isValidateName($value){ return self::isNotEmpty($value); } public static function isValidateEmail($value){ if(!self::isNotEmpty($value)) return FALSE; if(!self::isEmail($value)) return FALSE; return TRUE; } public static function isValidatePhone($value){ if(!self::isNotEmpty($value)) return FALSE; if(!self::isUSPhoneNumber($value)) return FALSE; return TRUE; } } ?>
################## index.php ################## <?php include_once ("CMyFormHTML.class.php"); $myForm = new CMyFormHTML(); if($myForm->isPosted()){ if($myForm->isValidate()){ // ... } else { // ... } } ?> <html> <head> <title>Sample: CPhanaticFormHTML</title> </head> <body> <form name="_MYFORMHTML" method="post"> <!-- ne pas oublier de déclarer un champ chaché du même nom que le formulaire --> <input type="hidden" name="_MYFORMHTML" value="OK">
<p>name : <input name="_NAME" value=\"<?php=$myForm->getInputValue("_NAME")?>\"> <font color="red"><?php=$myForm->getInputMessage("_NAME")?></font> </p> <p>email : <input name="_EMAIL" value=\"<?php=$myForm->getInputValue("_EMAIL")?>\"> <font color="red"><?php=$myForm->getInputMessage("_EMAIL")?></font> </p> <p>phone : <input name="_PHONE" value=\"<?php=$myForm->getInputValue("_PHONE")?>\"> <font color="red"><?php=$myForm->getInputMessage("_PHONE")?></font> </p> <p> <input type=submit value=Submit name=B1> </p> </form> </body> </html> --- ---
On peut aller beaucoup plus loing, mais la j'ai plus le temps... Dans NOAS (framework PHP5 en dev) la validation des formulaire est un jeu d'enfant.
phanatic
|
|
jeudi 14 octobre 2004 à 20:22:53 |
Re : equivalent du viewstate en php ?

alce
|
ok, merci bien !
Je vais tester ça dès que j'en aurai l'occasion. Ca ressemble pour beaucoup à du php5, non ?
Par contre, je n'ai pas trouvé d'infos sur NOAS sur le net...
Existe t-il quelque chose d'équivalent en php4 ? On ne sait jamais...
|
|
Cette discussion est classée dans : php, equivalent, permet, viewstate
Répondre à ce message
Sujets en rapport avec ce message
equivalent des variables globales et locales C en PHP [ par LaTatadu91 ]
Salut a tous ; je pense que tout est dit dans le titre du post je voudrais savoir l'equivalence en php des variables locales et globales si par exempl
quel est l'equivalent d'un etat acess en php? [ par rachidphp93 ]
bonjour tout le monde, j'ai deja posé cette question ulterieurement, je souhaite creer des etats mai je ne sais
Un equivalent php à form pour envoyer une variable? [ par franco_se ]
bonjourvoila, je voulais savoir s'il existait un equivalant PHP à pour envoyer une variable d'une page a l'autre , car j'utilise une redirection par
priorité [ par anaa21 ]
Bonjour à tous, je suis entrain de developper une application en php et j'ai tableau dynamique en PHP qui me permet d'afficher la liste des produits e
Equivalent du msgbox de VB en PHP [ par JMKPROD ]
Salut à tous!Je pose une nouvelle question de débutant:Existe-il un équivalent du msgbox de VB en PHP?La réponse est surement oui, alors comment l'uti
Formulaire saisie [ par chat blanc ]
Bonjour tout le monde;je suis debutante dans la programmation php/mysql, je voudrai concevoir un formulair web qui me permet de mettre à jour ma base
equivalent de RMI (java) avec php [ par slmdasou ]
Bonsoir tout le monde, tout comme RMI (Remote Method Invocation) qui est une API Java permettant de manipuler des objets distants, je voudrais savoir
equivalent du IsPostBack (asp.net) en php [ par rayan36 ]
salut;svp je cherche l'equivalent du IsPostBack (asp.net) en php.
Equivalent php de fonction asp [ par biniou38 ]
Bonjour, J'ai un bout de code asp, dans ma page php, que je voudrais mettre en php. Mais je bloque sur queleques fonctions pour trouver l'équivalent
programme en php [ par ramedz ]
Bonjour, si vous povez m'aider sur ce programme en php programme de préférence en PHP qui permet d'extraire les soumissionnaires caché ebay.Il devr
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
XML ET PHPXML ET PHP par karouani
Cliquez pour lire la suite par karouani
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|