Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
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 02/02/2011, 04h51   #1
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
Par défaut j'ai une variable qui se réinitialise à 0

Bonjour,

je crée un formulaire dynamiquement dans une vue qui s'appelle XML à partir d'une boucle for et aussi d'une valeur $this-> standard (qui est une valeur que je récupère d'un contrôlleur), puis dans la même page j'essaye de stocker les données dans un fichier XML, mais malheureusement le fichier est vide, je trouve pas les données que j'ai saisie dans le formulaire, parceque tout simplement quand je valide le formulaire la page se rafraichie et donc je perd la valeur de $this->standard (qui est une valeur que je récupère d'un contrôlleur) et se réinitialise avec 0.... sinon comment maintenir la valeur de cette variable malgré le rafraichissement de la page :

vue XML
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
32
33
34
35
36
<html><body>
 
<form method="post" action="xml">
 
<?php for($i=0; $i < $this->standard ; $i++){ ?>
 
      Nom  :   <input type="text" name="name[]"/> 
 
 
      Prenom :  <input type="text" name="surname[]"/> 
 
 
<?php } ?>
 
  <input type="submit" value="Go" />
 
</form>
 
<?php
           if ( ! empty($_POST) ) {
             $xml = '<?xml version="1.0" ... ?>' ;
           for($i=0; $i < $this->standard ; $i++){
             $xml .= '<utilisateur>' ;
             $xml .= '<nom>' . htmlentities($_POST['name'][$i]) . '</nom>' ;
             $xml .= '<prenom>' . htmlentities($_POST['surname'][$i]) . '</prenom>' ;
             $xml .= '</utilisateur>' ;
            }
             if(@file_put_contents('utilisateur.xml', $xml))
	echo '<p>XML enregistré !</p>' ;
else
	echo '<p>Erreur ! XML non enregistré !</p>' ;
 
 
}
?>
 </body></html>
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 09h57   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
$this donc ton code c'est une méthode (même si ça n'y ressemble pas)
$this donc objet à rendre persistant.
persistant donc option de facilité $_SESSION.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 14h52   #3
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
Peux tu m'expliquer un peu comment faire stp
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 16h45   #4
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
Dans ton controller, crée la méthode init , qui est l'équivalnt du constructeur dans les Controllers ZF, dedans crée une gestion de Session.

Code :
1
2
3
4
5
6
7
8
 
 
private $_session
public function init(){
 
$this->_session = new Zend_Session_Namespace();
 
}
Ensuite, tu mets ton code en session

Code :
1
2
3
4
5
 
 
$this->_session->standard = $standard;
 
$this->view->standard = $this->_session->standard
Si tu instancie un objet de session, tu pourras alors récupérer tes données.
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 16h55   #5
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
Bonjour,

merci pour votre réponse, sinon le

Code :
1
2
3
4
 
$this->_session->standard = $standard;
 
$this->view->standard = $this->_session->standard
je dois le mettre dans ma vue ?
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 16h57   #6
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
controller
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 17h22   #7
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
Voilà j'ai 2 vues, avec un seul contrôleur, dans la vue 1 je transfert une veriable vers le controleur, puis je récupère la valeur dans une autre vue avec $this->standard

dans ma vue1
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<html><body>
<form method="post" action="parametre/xml">
Nombre : <input type="text" name="chiffre" size="12"><br>
 
<input type="submit" value="OK">
</form>
 
<?php
 
       // Démarrage de la session
 
 //Récuperation du nombre ou 0 si non saisi
global $chiffre;
$chiffre =(isset($_POST['chiffre']))?$_POST['chiffre']:0;
 
?>
                </body></html>
dans mon contrôleur j'ai :

Code :
1
2
3
4
5
6
7
8
 
public function xmlAction()
    {
 
 $this->view->standard = $this->_getParam('chiffre', 1);
 
        // action body
    }
et dans l'autre vue 2:

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
32
33
34
35
36
37
38
 
 
<html><body>
 
<form method="post" action="xml">
 
<?php for($i=0; $i < $this->standard ; $i++){ ?>
 
      Nom  :   <input type="text" name="name[]"/> 
 
 
      Prenom :  <input type="text" name="surname[]"/> 
 
 
<?php } ?>
 
  <input type="submit" value="Go" />
 
</form>
 
<?php
           if ( ! empty($_POST) ) {
             $xml = '<?xml version="1.0" ... ?>' ;
           for($i=0; $i < $this->standard ; $i++){
             $xml .= '<utilisateur>' ;
             $xml .= '<nom>' . htmlentities($_POST['name'][$i]) . '</nom>' ;
             $xml .= '<prenom>' . htmlentities($_POST['surname'][$i]) . '</prenom>' ;
             $xml .= '</utilisateur>' ;
            }
             if(@file_put_contents('utilisateur.xml', $xml))
	echo '<p>XML enregistré !</p>' ;
else
	echo '<p>Erreur ! XML non enregistré !</p>' ;
 
 
}
?>
 </body></html>
mais comment fusionner ma méthode avec votre solution ?
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 17h23   #8
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
parceque dans votre solution vous prenez pas en considération la valeur chiffre de la vue 1
maserati est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 02h41   #9
Membre du Club
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 45
Points : 45
c'est bon j'ai trouvé, pour réuperer la variable, j'ai fait cela:
Code :
$this-> var= count($_POST['name']);
Merci tous pour vos réponse
maserati 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 07h25.


 
 
 
 
Partenaires

Hébergement Web