Garder la visibilité après un submit

bluephpblue
Invité n'ayant pas de compte PHPfrance

04 oct. 2014, 11:17

Bonjour, je débute et dans ce programme épuré je souhaite garder la visibilité de "hiddenform1" ou "hiddenform2" après avoir appuyé sur submit.
Je n'ai pas trouvé de solutions. Des idées pour éviter qu'ils redeviennent invisible après un submit? Merci pour votre aide.
Guy

debugform.php:
<html>
    <head>
        <title>Hide Form</title>
        <script type="text/javascript">
            function showForm(flag) {
		    document.getElementById('hiddenform1').style.visibility = flag >= 1 ? 'visible' : 'hidden';
			document.getElementById('hiddenform2').style.visibility = flag >= 2 ? 'visible' : 'hidden';
            }
        </script>
        <style type="text/css">
            #hiddenform1 {visibility: hidden}
    		#hiddenform2 {visibility: hidden}
        </style>
    </head>
    <body>
<?php
// define variables and set to empty values
$nb = "";


if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["nb"])) {
    $nb ="";
   } else {
     $nb = test_input($_POST["nb"]);
   }
}

function test_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}
?>
        Enter a number
		<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
            1:<input type="radio" name="nb" value="1" onclick="showForm(1);" <?php if (isset($nb) && $nb=="1") echo "checked"; ?>> &nbsp
            2:<input type="radio" name="nb" value="2" onclick="showForm(2);" <?php if (isset($nb) && $nb=="2") echo "checked"; ?>> &nbsp	
        <br><br>
		<div id="hiddenform1">
			<?php include("fa1.php"); ?>
        </div>
		<div id="hiddenform2">
            <?php include("fa2.php"); ?>
        </div>
		<input type="submit" name="submit" value="Submit">
		</form>
		
<?php
echo "<h2>Your Input:</h2>";
echo $nb;
echo "<br>";
?>
		
    </body>
</html>
fa1.php:
Quantity 1:<input type="number" name="quantity1" value ="100" readonly>
fa2.php:
Quantity 2:<input type="number" name="quantity2" value ="100" readonly>

Nestecha
Invité n'ayant pas de compte PHPfrance

04 oct. 2014, 14:15

Hum vu la page...

En jQuery, avec un simple $('form').on('submit').. tu devrais pouvoir lancer ta fonction affichant les hiddenforms lorsque tu submit, et en utilisant event.preventDefault() ta page ne changera pas et tes forms resteront visibles.

Cependant si tu recharges ta page ca reste du PHP, ca se recharge et se remet à zéro.

Tu peux 'contourner' ce problème mais avec du javascript.

bluephpblue
Invité n'ayant pas de compte PHPfrance

04 oct. 2014, 14:34

Merci Nestacha. Oui, une idée de la function/option à utiliser en javascript?

Nestecha
Invité n'ayant pas de compte PHPfrance

04 oct. 2014, 15:15

Bah...c'est écrit dans mon post x)

Event.preventDefault() empêchera de changer de page.

bluephpblue
Invité n'ayant pas de compte PHPfrance

06 oct. 2014, 10:31

Excellent! Merci Nestecha. :D