Notice: Undefined index: input in C:\xampp\htdocs\test.php on line 13

Status
Niet open voor verdere reacties.

canstro

Gebruiker
Lid geworden
3 feb 2009
Berichten
134
Code:
<form action="test.php" method="post">
<input type="text" name="input">
<input type="submit" name="ok" value="controleer">
</form>
<?php
$veld=$_POST['input'];

if(isset($_POST['ok'])) {
 if(is_numeric($veld)) {
  echo "Tekst mogen geen nummers zijn!";
 } else {
  echo "ok";
 }
}

?>

Notice: Undefined index: input in C:\xampp\htdocs\test.php on line 13

deze "fout" krijg ik bij bovenstaande code, kan iemand zeggen waarom?
en dit is van een jaar geleden, toen kreeg ik die "fout" nog niet...
 
Er is niet gecontroleerd of $_POST['input'] wel bestaat, en als het formulier nog niet is verzonden, bestaat het ook niet...
 
omdat $_POST['input']; nog geen waarde heeft de eerste keer dat je de pagina bezoekt. Dat krijgt hij pas als je op de knop klikt. Dit moet je dus binnen de isset check doen van 'ok'.
PHP:
<input type="text" name="input">
<input type="submit" name="ok" value="controleer">
</form>
<?php
  if(isset($_POST['ok'])) {

   $veld=$_POST['input'];
   if(is_numeric($veld)) {
    echo "Tekst mogen geen nummers zijn!";
   } else {
    echo "ok";
   }
  }
?>
 
Laatst bewerkt:
nu leer ik het wel hoor. $veld krijgt pas een waarde als de form verzonden is, als da nog niet gebeurd is bestaat de variable gewoon nog niet. De code werkt wel maar is niet echt 'proper'.

Heb ik het zo goed?
 
Was dit vroeger of in een vorige versie van php ook al zo? want het is een stukje code van een jaar geleden ofzo, en toen kreeg ik die "fout" nog niet...
 
Hangt van de server-instelling af, als die ingestelt staat om geen fouten te tonen kan hij er wel zijn maar zie je hem niet :)

Overigens is dit een betere manier om te controleren of een formulier is verzonden:
PHP:
if($_SERVER['REQUEST_METHOD'] == "POST") {

}
Zo controleer je de actie en niet of een veld wel of niet is ingesteld.
 
<input type="text" name="input">
<input type="submit" name="ok" value="controleer">
</form>
<?php
if(isset($_POST['ok'])) {

$veld=$_POST['input'];
if(is_numeric($veld)) {
echo "Tekst mogen geen nummers zijn!";
} else {
echo "ok";
}
?>
 
Dan zou ik er eerder dit van maken:
PHP:
if($_SERVER['REQUEST_METHOD'] == "POST") {
  if(is_numeric($_POST['text'])) {
    echo 'Tekst mag geen nummers bevatten';
  } else {
    echo 'Alles OK <hr />'. $_POST['text'];
  }
} else {

?>
<form action="" method="post">
<input type="text" name="input" />
<input type="submit" name="ok" value="controleer" />
</form>
<?php } ?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan