Problème dans un formulaire

Eléphant du PHP | 55 Messages

21 avr. 2011, 21:30

Bonjour,

Voici mon code :
<html>
<head>
<title>
Ma page de test
</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>


<body>
<?php
$nom="Michel";
$age=17;
$gars=true;
$taille=1.75;
date_default_timezone_set('Europe/Paris');
?>

Bienvenue sur le site de Joe
<br/><br/>

<?php
echo "L'affichage du nom du jour est : ";
echo date("d/m/y H:i:s");
?>

<br/><br/>

<?php
//echo "L'affichage du nom du jour est : date("1")";
?>


<?php
 echo "Nom : $nom <br/>";

 if ($age < 1) 
 {echo "Age : $age an <br/>";}
 else
 {echo "Age : $age ans <br/>";}

 echo "Taille :" . number_format($taille, 1, ',' , ' ');

 echo "<br/><br/>";

 if ($gars==true) 
   {
    echo "Garçon";
   }
  else
   {
    echo "Fille";
   }
?>

<br/>

<form name="inscription" method="post" action="joe001.php">
Pseudo ? <input type="text" name="pseudo"/> <br/>
Ville ? <input type="text" name="ville"/><br/>
<input type="submit" name="valider" value="OK"/>
</form>


<?php
if( !isSet($_POST["pseudo"]) || !isSet($_POST["ville"]) ) // false
 {
  echo "Variable(s) POST non déclarées";
  return;
 } 
 $pseudo=$_POST["pseudo"]; // déclare var locales
 $ville=$_POST["ville"];
 $pseudo = trim($pseudo);
 $ville = trim($ville);
 if(strlen($ville) > 16) $ville = substr($ville, 0, 16); // coupe
 if(strlen($pseudo) > 16) $pseudo = substr($pseudo, 0, 16);
 if( strlen($ville) < 2 || strlen($pseudo) < 2 ) 
  {
  echo "Saisie invalide, remédier";
  return;
  }
 echo "Vous êtes : $pseudo  :  de  :  $ville";
?>

</body>
</html>
Questions :

Quand je lance avec Hapache (local), le formulaire, ben il me sort un message qui est dans le code : "Variable(s) POST non déclarées", ce qui peut être normal car je ne suis pas encore allé via les box de saisie dans la procédure du formulaire, donc les variables ne sont pas encore déclarées (POST), toutefois ce message est ennuyeux, quel serait le moyen d'y remédier (pas d'affichage intempestif au lancement) ?

Par ailleurs, y a-t-il des boîtes de messages (messageBox, InputBox), comment ?

En dernier, comment on remet tout à blanc, les messages écrits, les saisies ?

Merci beaucoup.
.
Cordialement.

Joe.
.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 avr. 2011, 22:51

Il te faut tester si le formulaire a été envoyé ou pas pour savoir si tu dois traiter ou non les données qu'il contient. Le plus simple pour cela est de contrôler la présence d'un champ qui est systématiquement envoyé avec ton formulaire... ça peut être un champ hidden, mais plus simplement on utilise en général un contrôle sur le bouton submit :
if (isSet($_POST['valider'])) { // le formulaire a été envoyé
   ....
}
Quant à la boite de message, je suppose que ce que tu cherches est la balise <textarea> :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 55 Messages

22 avr. 2011, 10:08

Bonjour,

Merci beaucup de ta réponse, en plus ce forum est réconforatant car ça répond, et ça répond vite, ce qui permet d'avancer...

Pour ma dernière question, non, je demande comment gérer les boîtes de dialogue, "message" et "saisie", appelées officiellement dans Windows MessageBox et InputBox, je vais poser spécifiquement cette question, car en fait, écrire des messages c'est bien, mais ensuite il faudrait que le mssage s'efface, sinon ça fait vieille programmation fatiguée, tandis que si on affiche dans des boîte ça s'efface une fois qu'on a effacé la boîte, je crois qu'en javascrip ou autre ?, ça doit s'appler "Alert" ou "halert" ?
.
Cordialement.

Joe.
.