Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1235 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Peut -on et comment passe -t on un objet d'un formulaire à un autre ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Peut -on et comment passe -t on un objet d'un formulaire à un autre ?

n°719396
neo9205
Posté le 08-05-2004 à 12:30:52  profilanswer
 

:hello:  
Je vais m'expliquer le + simplement possible:
J'ai une page "index.php" et une autre "traitement.php"
 
Dans index.php j'ai fait une classe avec des méthodes.Dans une de ces méthodes, il y a 1 formulaire qui renvoi sur "traitement.php".
 
Puis, dans traitement.php je voudrais pouvoir utiliser des méthodes qui sont dans "index.php".J'ai fait un include de index.php dans traitement.php, et j'ai fait ce genre d'appel :  
 
$toto->actualiser_result();(toto étant l'instance que j'ai passé en champ caché d'1 formulaire à l'autre.
 
Mais j'obtient ça comme erreur:
 
Fatal error: Call to a member function on a non-object in c:\program files\easyphp\www\projetobjet\formulaire.php on line 50
 
Voici le code "allégé":
"index.php":
 

Code :
  1. <script language=javascript>
  2. function go () {
  3.    document.forms[0].submit();
  4. }
  5. </script>
  6. <?
  7. class liste
  8. {
  9. function liste(){}
  10. function buildList()
  11. {
  12.  print("<form action='formulaire.php' method='get'>" );
  13.                 print("<input type=hidden name=toto value=$liste_1>" );
  14.                 print("<a href='javascript:go()'>Cliquez Ici !!</a>" );
  15.  print("</form>" );
  16.         }
  17. }
  18. $liste_1=new liste();
  19. $liste_1->buildList("user",2);
  20. ?>


 
 
fichier traitement.php:

Code :
  1. <?
  2. include("index.php" );
  3. print("<form action='' name=formulaire method='get'>" );
  4. $toto->actualiser_result();
  5. print("</form>" );
  6. ?>


 
Soit c'est mon appel de méthode qui n'est pas correct, soit c'est ma transmission de l'objet d'1 formulaire à l'autre, soit c'est pas possible en php...
 
Merci d'avance pour qui arrivera à me dépanner :sol:


Message édité par neo9205 le 08-05-2004 à 12:33:36
mood
Publicité
Posté le 08-05-2004 à 12:30:52  profilanswer
 

n°719408
alien_nan
Posté le 08-05-2004 à 12:58:57  profilanswer
 

J'ai peut etre pas tout compris, mais :
 
Ta variable toto est envoyée via un get, donc la methode "propre" pour la lire, c $_GET["toto"]
 
Ensuite, dans ta page traitement, comme c'est elle la page destinataire, tu dois pouvoir recuperer toto sans faire d'include non ?
 
Il me semble qu'index.php construit un formulaire, et qd tu cliques, tu arrives sur traitement.php, donc cette page doit connaître toto sans faire d'include (vu que c'est "submité" )
 

n°719413
neo9205
Posté le 08-05-2004 à 13:07:32  profilanswer
 

alien_nan a écrit :

J'ai peut etre pas tout compris, mais :
 
Ta variable toto est envoyée via un get, donc la methode "propre" pour la lire, c $_GET["toto"]
 
Ensuite, dans ta page traitement, comme c'est elle la page destinataire, tu dois pouvoir recuperer toto sans faire d'include non ?
 
Il me semble qu'index.php construit un formulaire, et qd tu cliques, tu arrives sur traitement.php, donc cette page doit connaître toto sans faire d'include (vu que c'est "submité" )


 
Ce n'est pas 1 probleme de $_Get car je travaille sur une vieille version de php donc je récupere via $nom_variable
 
Par contre pour l'include je sais pas si ça changera qq chose de l'enlever ou non.


Message édité par neo9205 le 08-05-2004 à 13:09:02
n°719415
alien_nan
Posté le 08-05-2004 à 13:10:05  profilanswer
 

neo9205 a écrit :

Ce n'est pas 1 probleme de $_Get car je travaille sur une vieille version de php donc je récupere via $nom_variable
 
Par contre pour l'include je sais pas si ça changera qq chose de l'enlever ou non.


 
tu as essayé dans traitement.php un echo $toto; ? (en retirant l'include)

n°719418
neo9205
Posté le 08-05-2004 à 13:13:04  profilanswer
 

alien_nan a écrit :

tu as essayé dans traitement.php un echo $toto; ? (en retirant l'include)


j'ai retiré l'include et  
$toto vaut  
liste_1


Message édité par neo9205 le 08-05-2004 à 13:15:45
n°719419
neo9205
Posté le 08-05-2004 à 13:14:12  profilanswer
 

ça a l'air de passer d'1 formulaire à l'autre mais lors de l'appel d'une méthode ça passe pas

n°719422
alien_nan
Posté le 08-05-2004 à 13:15:25  profilanswer
 

neo9205 a écrit :

Encore plus simplement, je voudrais savoir comment on peut faire pour utiliser des méthodes quyi sont sont situées dans un autre fichier .


 
tu fais un include de ton fichier dans le fichier de destination, et tu appelle les fonctions du premier fichier par leur nom.
 
ex : tu as une fonction test() dans index. php
dans traitement.php, tu fais un include("index.php" );, et si tu appelles la methode test(), il la connaitra.
 
Par contre, c'est un peu différent si tu utilises des classes.
Dans ce cas la , tu fais un include de la classe, tu instancies ton objet et tu appelles la methode en faisant monobjet->ma_methode

n°719423
alien_nan
Posté le 08-05-2004 à 13:16:35  profilanswer
 

Vu que tu poses pas mal de question dans le style, il y a un site : http://www.php.net ou tu devrais trouver pas mal de réponses ;)
 
:hello:

n°719424
neo9205
Posté le 08-05-2004 à 13:18:22  profilanswer
 

alien_nan a écrit :

tu fais un include de ton fichier dans le fichier de destination, et tu appelle les fonctions du premier fichier par leur nom.
 
ex : tu as une fonction test() dans index. php
dans traitement.php, tu fais un include("index.php" );, et si tu appelles la methode test(), il la connaitra.
 
Par contre, c'est un peu différent si tu utilises des classes.
Dans ce cas la , tu fais un include de la classe, tu instancies ton objet et tu appelles la methode en faisant monobjet->ma_methode


 
Ok je suis dans le cas de l'objet,mais...
-Comment fait on un include d'une classe ? (c'est pas comme pour un fichier ?)
-l'instanciation, je la fait ou ?

n°719426
alien_nan
Posté le 08-05-2004 à 13:22:06  profilanswer
 

neo9205 a écrit :

Ok je suis dans le cas de l'objet,mais...
-Comment fait on un include d'une classe ? (c'est pas comme pour un fichier ?)
-l'instanciation, je la fait ou ?


 
Quoiqu'il arrive, que tu travailles avec une classes ou pas, tu dois faire l'include du fichier auquel tu vas faire des references.
Apres, deux cas :
 
1°) tu n'utilises pas les classes : alors si dans index.php, tu as une methode test(), tu l'appelles tel quel dans ton fichier traitement.php (en ayant fait l'include)
 
2°) tu as une classe list dans ton fichier index : alors tu fais l'include de index, tu instancies ton objet en faisant $myObj = new liste(); et apres, tu appelles les methodes de lsite en faisant $myObj->buildList(); par exemple

mood
Publicité
Posté le 08-05-2004 à 13:22:06  profilanswer
 

n°719433
neo9205
Posté le 08-05-2004 à 13:38:36  profilanswer
 

alien_nan a écrit :

Quoiqu'il arrive, que tu travailles avec une classes ou pas, tu dois faire l'include du fichier auquel tu vas faire des references.
Apres, deux cas :
 
1°) tu n'utilises pas les classes : alors si dans index.php, tu as une methode test(), tu l'appelles tel quel dans ton fichier traitement.php (en ayant fait l'include)
 
2°) tu as une classe list dans ton fichier index : alors tu fais l'include de index, tu instancies ton objet en faisant $myObj = new liste(); et apres, tu appelles les methodes de lsite en faisant $myObj->buildList(); par exemple


 
Ok ça devient beaucoup plus clair maintenant :-)  
 
Donc en fait mon instanciation je pourrais la faire dans le 2ème formulaire (traitement.php) et du coup, mon objet serait connu sans probleme dans traitement.php.  
 
Mais le probleme, c'est que cette fameuse instanciation ne doit etre faite qu'UNE SEULE FOIS ! et comme mon 2ème formulaire doit etre toujours rechargé sur lui meme, les instanciation vont en faire de meme...  
 
C'est pour ça que je voulais mettre l'instanciation ds le 1er formulaire et faire passer ensuite l'objet d'1 formulaire à l'autre pour pouvoir le réutiliser ds le 2ème formulaire afin d'appeler une méthode !!

n°719434
alien_nan
Posté le 08-05-2004 à 13:40:47  profilanswer
 

Le fait d'instancier index.php ne construira pas ton formulaire. Pour cela, il faut appeler la function qui créer ton formulaire, donc pas de souci (sauf si tu as mis la creation de ton formulaire dans le constructeur de ta classe)

n°719441
neo9205
Posté le 08-05-2004 à 13:49:45  profilanswer
 

alien_nan a écrit :

Le fait d'instancier index.php ne construira pas ton formulaire. Pour cela, il faut appeler la function qui créer ton formulaire, donc pas de souci (sauf si tu as mis la creation de ton formulaire dans le constructeur de ta classe)


 
Ok je te remercie, je vais voir tout ça et tester  :sol:

n°719662
neo9205
Posté le 08-05-2004 à 22:15:16  profilanswer
 

Pas moyen de passer l'instance crée d'une page à une autre via formulaire :pfff: .On dirait que l'objet passe mais quand j'appelle une méthode avec ,ça marche pas, ça met:
 
Fatal error: Call to a member function on a non-object in c:\program files\easyphp\www\projetobjet\formulaire.php on line 50
 
La valeur passée est : toto=Object


Message édité par neo9205 le 08-05-2004 à 22:18:57
n°719681
belgique
Posté le 08-05-2004 à 23:14:07  profilanswer
 

Tu dois serialiser ton objet et ensuite le desérialiser. gente
 
value=".serialize($liste_1)."
 
Cat si tu fais print("<input type=hidden name=toto value=$liste_1>" );
LA valeur de $liste_1 c'est object.

n°719760
neo9205
Posté le 09-05-2004 à 12:19:40  profilanswer
 

belgique a écrit :

Tu dois serialiser ton objet et ensuite le desérialiser. gente
 
value=".serialize($liste_1)."
 
Cat si tu fais print("<input type=hidden name=toto value=$liste_1>" );
LA valeur de $liste_1 c'est object.


 
Ok l'idée est excellente et ça fonctionne mais il y a juste un petit probleme :
 
Dans index.php, j'instancie la classe et obtient un objet.Je le sérialise et l'amène dans traitement.php.Une fois l'objet arrivé ds traitement.php, je m'en sert pour appeler une fonction membre située dans index.php et là ça le probleme arrive :
 
-Si c'est une fonction membre avec un simple echo "bonjour";  ça fonctionne sans probleme.Par contre si c'est une méthode avec des $this, ça plante.
Apparement dès que je quitte index.php, l'instance est perdue...
 
Auriez vous une idée ?

n°719777
belgique
Posté le 09-05-2004 à 12:47:57  profilanswer
 

Je n'ai jamais trop regardé comment tout celà marchait. Tu peux toujours essayer les sessions aussi ou recréer une instance avec ton objet serializé. Ce que je dis n'est peut être pas correct ;)

n°719781
neo9205
Posté le 09-05-2004 à 12:55:30  profilanswer
 

belgique a écrit :

Je n'ai jamais trop regardé comment tout celà marchait. Tu peux toujours essayer les sessions aussi ou recréer une instance avec ton objet serializé. Ce que je dis n'est peut être pas correct ;)


 
Si si merci c'est une tres bonne idée: les sessions permettraient de conserver tout le temps mon objet et m'éviterais de devoir le repasser à chaque fois d'une page à une autre manuellement ! (ce qui est tres fastidieux !) :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Peut -on et comment passe -t on un objet d'un formulaire à un autre ?

 

Sujets relatifs
formulaire[php-objet]
Crypter le mot de passe dans un fichier .htpasswdRenvoyer un objet
[php] Controler acces intranet par mot de passe Windowsvaraible qui passe pas dans javascript
Envoi de formulaireFormulaire + nom de fichier unique
[VB6] Comment faire passer une valeur d'un formulaire à un autreLiaison formulaire et sous formulaire en VB appliqué à Access
Plus de sujets relatifs à : Peut -on et comment passe -t on un objet d'un formulaire à un autre ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR