begin process at 2012 05 28 22:39:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Class et Objet ( POO )

 > 

equivalent du viewstate en php ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales