Bonjour tout le monde
Une petite question, mais qui est en train de m’empoisonner d’autant qu’il me semble que la solution doit être toute bête …
Je voudrais tout simplement qu’une instance de classe reste en mémoire lorsqu’on passe d’un formulaire à un autre.
Mettre tout le code sur lequel je travaille serait fastidieux, voici donc une modélisation :
<html><title>question.php</title><head></head><body><?php
$UC = new UneClasse() ;
if($_POST['Etape']=='')
{
echo "Point de départ<br>" ;
echo "<form action='#' method=post>" ;
echo "<select name='choix'>" ;
echo "<option value='choix 1'>Choix 1</option>" ;
echo "<option value='choix 1'>Choix 1</option>" ;
echo "</select>" ;
echo "<input type=hidden name='Etape' value='Première'>" ;
echo "<input type=submit>" ;
echo "</form>" ;
}
if($_POST['Etape']=='Première')
{
echo $_POST['Etape'] . " étape" ;
$UC->UneVariable=$_POST['choix'] ;
echo "<form action='#' method=post>" ;
echo "<input type=hidden name='Etape' value='Seconde'>" ;
echo "<input type=submit>" ;
echo "</form>" ;
}
if($_POST['Etape']=='Seconde')
{
echo $_POST['Etape'] . " étape<br>" ;
echo "La propriété de la classe est " . $UC->UneVariable . "<br>";
}
class UneClasse
{
public $UneVariable ;
function UneClasse()
{
echo "Une classe a été créé<br>" ;
}
}
?></body></html>
Lors du premier formulaire, on fait un choix dans la liste déroulante. Lors du deuxième formulaire, on récupère le choix sélectionné et on le stocke dans la propriété de l’objet. Mais, quand on arrive au troisième formulaire, l’objet a été réinitialisé et sa propriété est perdue !
Il doit quand même avoir moyen de garder cette valeur, non ?
Alors évidemment, si le problème était aussi simple, je mettrais cette valeur dans une balise hidden et puis voilà. Ce qui se passe, c’est que dans le vrai script, les choix successifs déterminent l’affichage des prochains formulaires et qu’il faut une flopée de balises hidden pour les gérer, d’autant que c’est tout plein de conditionnels. Ce serait tellement plus simple dans une classe !! (et, j’ose à peine le dire, tellement plus class …)
Si vous avez une solution …
Merci !
Configuration: Windows XP
Opera 9.23