Page 1 sur 1

Notice: Undefined index: champform in

Posté : 14 juin 2006, 11:16
par bcdvd
Bonjour ;

J'ai un probleme sur une page qui me sert à créer des dossiers sur mon serveur. Voici le code :
<form id="form1" name="form1" method="POST">
  <label></label>
  <label>
  <input name="champform" type="text" id="champform" />
  <input type="submit" name="Submit" value="Envoyer" />
</label>
<?php  
$rep=$_POST['champform']; 
if(!file_exists($rep)) mkdir ("./$rep", 0777);
?>
</form>
En fait tout marche bien mais au premier lançement de ma page j'ai un message d'erreur du type :

Code : Tout sélectionner

Notice: Undefined index: champform in c:\web\sim\2.php on line 18
Je pense qu'il faut déclarer "champform" mais si c'est ça je n'arrive pas à trouver le code qui va bien

Si quelqu'un à une idée je suis preneur

Merci d'avance à tous

Posté : 14 juin 2006, 11:19
par Ryle
C'est parce que tu appelle l'index 'champform' de $_POST sans te soucier de vérifier si celui-ci existe (sur les version récentes de php cela génère un warning lorsqu'ils ne sont pas définis). Quand tu arrives sur le formulaire par l'url, ton $_POST ne contient rien, d'où le message.

Il te suffit donc juste de tester si l'index est défini avec isSet() pour pouvoir l'utiliser :
if (isSet($_POST['champform'])) { // l'index est bien défini
  $rep=$_POST['champform']; 
  .. 
}
else { // éventuellement
  ..
} 

Posté : 14 juin 2006, 11:20
par zeus
C'est juste qu'au 1er chargement de ta page, comme tu n'as pas encore validé le formulaire, champform est vide.

Pour éviter l'erreur, il faut que tu testes si ce champs existe ou non avec isset.
<?php
  //test l'existence de champform
  if (isset($_POST['champform'])) {
    $rep=$_POST['champform'];
    if(!file_exists($rep)) 
      mkdir ("./$rep", 0777);
  }
?> 
D'une manière générale, il faut toujours tester l'existence des valeurs saisies dans un formulaire ;)

Posté : 14 juin 2006, 11:28
par bcdvd
ca marche super bien, merci a vous 2

Cordialement