ISSET - Problem

wal

Erfahrenes Mitglied
Hallo.

Ich habe eine PHP Seite mit HTML drinnen. Wird die Seite das erste Mal aufgerufen, wird ganz normal der HTML Code ausgegeben. Anschliessend kann man die Felder ausfüllen und auf den Speichern-Button klicken.

Nun wird es spannend:

Die PHP Seite wird erneut aufgerufen und prüft zuerst ob der Speichern-Button gedrückt wurde - soweit ist es ok.

PHP:
<?php
           If (ISSET($_POST['save']))
           { ...

Dann erfolgt die zweite Prüfung, ob das "hidden"-Feld ID noch leer ist oder nicht.

PHP:
           If (ISSET($_POST['id']))
           { ... } else { ... }

Beim ersten Speichern, schreibe ich die eingegeben Daten in die DB. Anschliessend hole ich mir die ID gleich wieder raus und schreibe mir diese in das "hidden"-Feld. So können jetzt weitere Änderungen an den EIngaben durchgeführt und gespeichert werden.

Es wird nun kein neuer Datensatz weggeschrieben, sondern anhand der ID der selbige nur geupdated.

Mein Problem ist nun, wenn der zweite Durchlauf kommt und das "hidden"-Feld eine ID drinnen stehen hat, geht die Verarbeitung trotzdem in den else-Zweig anstatt in den if (isset($_POST['id'])) - Zweig.

Kann isset nicht verwendet werden bei integern?
Ich habe auch mal versucht mittels strval(), aber das hat auch nicht hingehauen ...

Hat jemand eine Idee? Was mache ich falsch?

Vielen Dank für eure Tipps im voraus.
 
Hi
zu allerterst kenne ich die Funktion, wie alle anderen auch, nur in kleingeschrieben, sprich isset().
Desweitern wird, sobald ein hidden Feld abgesendet wird immer ein Wert mitgeschickt.
Du müsstest warscheinlich if( empty($_POST['hidden']) ){} überprüfen ob etwas hineingeschrieben wurde.
Wenn das nicht hilft, poste mal bitte etwas mehr code.
 
Hallo Nord-Süd-Richtung,

sorry das ich mich erst jetzt melde. Dummerweise geht mein IE nicht mehr mit dieser Kategorie. Ich kann hier im Board überall hin (zumindest was ein normal sterblicher User darf), nur bei PHP erhalte ich eine Fehlermeldung.

Aber Gott sei danke habe ich ja noch nen Mac zu hause!! hehehehe
Von daher von zu Hause aus jetzt - vielen Dank für deine Hilfe - hat wunderbar funktioniert - der Tipp mit empty war's!! ;)
Super!
 
Mit isset() prüfst du nur die Existenz einer Variable (genauer: ob dessen Wert ungleich null ist, da null als undefiniert/„ohne Wert“ zu interpretieren ist). Von außen kommende Variablen sind aber niemals undefiniert, da sie immer String-Werte sind und „ohne Wert“ da nur als leere Zeichenkette dargestellt werden kann.
Du müsstest also nur zusätzlich noch prüfen, ob der Variablenwert ungleich einer leeren Zeichenkette ist. Hier empty() einzusetzen, kann auch nach hinten losgehen, da der Zeichenkettenwert '0' von empty() ebenfalls mit true beantwortet wird:
PHP:
$var = '0';
var_dump(empty($var));    // ergibt true
var_dump(isset($var) && $var !== '');    // ergibt false
 
Zurück