PHP Rocks
[Notice] undefined index: var in ... on line - Druckversion

+- PHP Rocks (https://www.php-rocks.de)
+-- Forum: Knowledge Base (https://www.php-rocks.de/https://www.php-rocks.de/forum/18-knowledge-base.html)
+--- Forum: Fehler, Warnungen und Hinweise (https://www.php-rocks.de/https://www.php-rocks.de/forum/29-fehler-warnungen-und-hinweise.html)
+--- Thema: [Notice] undefined index: var in ... on line (/https://www.php-rocks.de/thema/66-undefined-index-var-in-on-line.html)



undefined index: var in ... on line - Arne Drews - 26.06.2015

Notice: undefined index: var in ...


Häufige Notice bei Verwendung von Formularen


Was ist passiert?
Diese Notice tritt auf in Verwendung eines Array, auf dessen Schlüssel wir zugreifen möchten, der nicht existiert.
In vielen Fällen handelt es sich zwar einfach nur um einen Tippfehler des Schlüsselnamens, aber auch bei Verwendung eines Formulares erhalten viele Einsteiger diese Notice.

Um das nachzustellen, schauen wir uns das folgende minimale "Affen"-Formular an:
PHP-Code:
<?php

echo $_POST['sometext'];

?>
<form name="test" action="" method="post">
    <input type="text" name="sometext" value="" />
    <input type="submit" name="submitted" value="absenden" />
</form> 
Die Fortgeschrittenen unter euch erkennen auf den ersten Blick, was hier passiert. Der erste Aufruf der Seite wirft die beschriebene Notice:
Zitat:Notice: Undefined index: sometext in /var/www/vhosts/php-rocks.de/httpdocs/.../....php on line 3

Um das Problem zu beheben, müssen wir einfach nur abfragen, ob das Formular überhaupt gesendet wurde, bzw. Daten im POST-Kanal vorhanden sind.
Dazu bedienen wir uns - um nicht bei der Abfrage eine ähnliche Notice zu erhalten - der Funktion isset():
PHP-Code:
if ( isset($_POST['submitted']) ) {

 
   echo $_POST['sometext'];


Wenn wir nun keinen Tippfehler gemacht haben, sind wir die ungewünschte Notice los und auch der erste jungfräuliche Aufruf der Seite wird nicht mit einer Notice bestraft.


POST und GET
Häufig tritt dieses Problem auch auf, wenn Formulare bspw. per POST übertragen werden, man aber versucht die Daten aus $_GET zu bekommen.
Dies ist einer der ersten Punkte, die man prüfen sollte, wenn der Fehler in Verbindung mit einem Formular auftritt.


Hinweis

Dies sind nur zwei von vielen Ursachen für eine Notice dieser Art. Erhält man eine solche Notice, kann man also i.d.R. davon ausgehen, daß man einen Vertipper in einem Array-Schlüssel hat oder über einen falschen Kanal auf Formulardaten zurückgreifen möchte.