Antworten auf deine Fragen:
Neues Thema erstellen

nochmal isset

elo63

Nicht mehr ganz neu hier

Hallo,

bin Anfänger was php angeht, und deshalb verstehe ich auch nicht so ganz fogende Zeile, die ich aus einem Buch habe.

Code:
if (isset($_POST['Anrede']) && isset($_POST['Name'])&& $_POST['Name'] != "")
Da in der ersten und zweiten Variablen geprüft wird ob die vorhanden sind verstehe ich noch und das in der dritten geprüft wird ob die zweite leer ist auch.

Aber dennoch verhält sich die logik merkwürdig, nehme die letzte Prüfung mal raus, und lasst es durchlaufen, dann kommt der Text Bitte füllen Sie alle Felder aus, nur wenn vergessen wurde Herr oder Frau auszuwählen, nicht wenn man Name vergessen hat und das ist komisch.

Und wenn man die abfrage mit allen 3 Bedingungen macht, wird auch geprüft ob Herr oder Frau angeklickt ist, obwohl nur geprüft wird ob Name leer ist, das verstehe ich echt nicht.

Hoffe ich konnte mich verständlich ausdrücken.

Vielen Dank für die Hilfe

elo63


Hier die Formular Seite

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

<head>
    <title>formular</title>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    <meta name="description" content="" />
    <meta name="author" content="" />
    <meta name="keywords" content="" />

</head>

<body>
   <h1>Formular-Seite</h1>
   <form action="auswertung.php" method="post">
   Anrede <input type="radio" name="Anrede" value="m" /> Herr
   <input type="radio" name="Anrede" value="w" /> Frau<br />
   Ihr Name: <input type="text" name="Name"/><input type="submit"/>
   </form>
</body>
</html>
Und hier der php Teil

PHP:
<?php
if (isset($_POST['Anrede']) && isset($_POST['Name'])&& $_POST['Name'] != "")
{
    if ($_POST['Anrede'] == "m")
    {
        echo "Hallo Herr ";
    }
    else
    {
        echo "Hallo Frau ";
    }
    echo "<b>$_POST[Name]</b>, herzlich willkommen\n";
}
else
{
    echo "Bitte f&uuml;llen Sie alle Felder aus";
}
?>
 
Zuletzt bearbeitet:

kleeaar

zwo-eins-risiko!

AW: nochmal isset

also der wert des Eingabefeldes "name" wird ja immer übergeben. nur ist dieser natürlich bei leerem Text =''
daher macht die abfrage isset($_POST['Name']) eigentlich keinen sinn.
Bei einem Ratio-Button, sofern nichts ausgewählt wurde, wird diese variable auch nicht übergeben (wie es scheint...)


LG
 

holgermerz

Nicht mehr ganz neu hier

AW: nochmal isset

Hallo,
wenn du prüfen möchtest, ob alle Felder ausgefüllt sind, nimm am besten den !empty. Also z.B. if (!empty($_POST[..])) ..

isset verwendet man eigentlich nur bei Radio-Button, Checkboxen oder Submit-Button.

So kannst du z.B. einen Submit-Button mit

if (isset($_POST[name-des-buttons])) abfragen, ob dieser angeklickt (submittet) wurde.
 

elo63

Nicht mehr ganz neu hier

AW: nochmal isset

Hallo,

vielen Dank für die Antwort, aber mir geht es darum das beispiel aus dem heft zu kapiere.

Also so wie meine Frage war, weil ich das irgendwie nicht kapiere.

Dennoch vielen Dank

elo63
 

Duddle

Posting-Frequenz: 14µHz

AW: nochmal isset

Der Browser übermittelt ein input von type="radio" nur, wenn eine Option davon gesetzt ist. Deshalb existiert $_POST['Anrede'] nicht, wenn da nichts angeklickt ist. Hingegen $_POST['Name'] wird immer übertragen, auch wenn es leer ist. Deshalb musst du auf Leerheit überprüfen um Fehler abzufangen.


Duddle
 

elo63

Nicht mehr ganz neu hier

AW: nochmal isset

Hallo,

vielen Dank, also liegt der Unterschiede zwischen radio button und textfeldern.

gruß

elo63
 

rider03

Noch nicht viel geschrieben

AW: nochmal isset

Hallo,

ich bin auch sicher, dass die zweite Bedingung deiner if-Abfrage überflüssig ist, weil ja der Input eines Textfeldes immer übertragen wird, auch wenn es ein leerer String ist. Das bedeutet, das die Variable $_POST['Name'] beim Übertragen immer gesetzt ist. Du brauchst also nicht mit isset abfragen, ob sie gesetzt ist.
Bei den Radio-Buttons wird aber, wenn keiner ausgewählt wurde, nichts übertragen. Es würde also in dem Fall die Variable $_POST['Anrede'] nicht existieren. Wenn du dann versuchtest, ihren Wert abzufragen, ohne vorher mit isset zu prüfen, ob sie überhaupt gesetzt wurde, dann gäbe php eine Warnung aus, was sich im Begrüßungstext auch nicht so schick macht.
Das könntest du aber verhindern, indem du einen Radio-Button vorbelegst. Also entweder
<input type="radio" name="Anrede" value="m" checked="checked" /> Herr oder
<input type="radio" name="Anrede" value="w" checked="checked"/> Frau je nach höherer Wahrscheinlichkeit.
Dann könntest du dir auch ersparen, $_POST['Anrede'] mit isset zu überprüfen, weil ja dann auch sichergestellt wäre, dass die Variable existiert. Wenn der Benutzer nichts ausgewählt hätte, dann hätte sie den vorbelegten Wert.

Gruß

rider03
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.450
Mitglieder
67.556
Neuestes Mitglied
Ggirl
Oben