1) Le if (isset($_POST['quelquechose'])
Quand dans une page html noimmee index.html tu envoies un formulaire avec
<html>
<form method='post' action ='verifier.php'>
tapez un mot :<input type = 'text' name= 'mot'>
<button type ='submit'>ok</button>
</html>
, c'est la ligne
<button type ='submit'> ou, comme tu écris,
<input type='submit'> qui suspend les opérations.
Tant que tu n'actives pas le bouton en question, il ne se passe plus rien.
Quand tu actives ce bouton, la page verifier.php est activée
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang = "fr">
<META http-equiv = 'Content-Type' content = 'text/html; charset = utf-8'>
<?PHP
print_r($_POST); // juste pour savoir ce qui se passe
if (isset ($_POST['mot'])):
$mot = $_POST['mot'] ;
else:
$mot = "rien";
endif;
if ($mot == "") $mot ="vide";
print "voici votre mot $mot";
?>
les if successifs testent une fois et on passe à la suite...
isset ($qqch) signifie que $qqch a été défini ou déclaré, mais pas s'il contient quelque chose.
Le premier if (isset($_POST['mot'])) ou
$mot = isset($_POST['mot'])? $_POST['mot'] : ""
permet de s"assurer d'une valeur pour mot au cas en particulier où on aurait abouti sur cette page sans passer par le chemin normal
Les valeurs d'un seul formulaire sont pasées à la page qu'il cible par son action=
2) Dans ton cas:
avec ce code :
<?PHP
echo '<form id="Input_file" method="post" action="">
<p>Please, enter the html file to be processed:</p>
<p><input type="text" name="file_name" /></p>
<p><input type="submit" value="OK" name="OK_Input_File" /></p>
</form>';
if (isSet($_POST['OK_Input_File'])):
echo '<form id="Output_file" method="post" action="">
<p>Enter the name of the output file</p>
<p><input type="text" name="output_file_name" /></p>
<p><input type="submit" value="OK" name="OK_Output_File" /></p>
</form>' ;
endif;
?>
comme action ='', la page s'affiche correctement la première fois et attend le clic sur le bouton OK_input sans afficher le deuxième formulaire
Quand ce bouton est cliqué la page est rechargée et j'obtiens deux formulaires. Si je remplis le second, la page se recharge et on repasse normalement au premier. Au passage j'ai perdu le nom du fichier d'entrée
Pour moi je ferais :
<?PHP
$file_name = isset($_POST['file_name'] )? $_POST['file_name'] : "";
$passage = isset($_POST['passage']) ? $_POST['passage'] : 1;
switch ($passage):
case 1:
print "<form id='Input_file' method='post' action=''>
<p>Please, enter the html file to be processed:</p>
<p><input type='text' name='file_name' value = '$file_name'/></p>
<p><input type='hidden' value='2' name='passage' /></p>
<button type='submit'>OK</button>
</form>";
break;
case 2:
$file_name = isset($_POST['file_name'] )? $_POST['file_name'] : "";
print "$file_name";
print "<form id='Output_file' method='post' action=''>
<p><input type='text' name='file_name' value = '$file_name'/></p>
<p>Enter the name of the output file</p>
<p><input type='text' name='output_file_name' /></p>
<p><input type='hidden' value='3' name='passage' /></p>
<button type='submit'>OK</button>
</form>'";
break;
case 3:
$f_entree = $_POST['file_name'];
$f_sortie = $_POST['output_file_name'];
print "$f_entree => $f_sortie";
break;
endswitch;
?>