• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Trotz <> in if bedingung Fehlermeldung ausgabe

devilseye

Neues Mitglied
Hallo bin gerade mit youtube am php lernen.
Geht ziemlich gut voran, allerdings tat sich mir nun ein kleines Problemchen auf und zwar wollte ich folgendes Script ausgeben (es handelt sich hierbei um einen Terminfinder der einfachen Art) im Tutorial kommt es ohne eine Fehlermeldung raus ich hab alles zig mal nachkontrolliert aber es kommt immer das selbe dabei raus.

Hier das HTML ------>NICHT VALIDE IST NUR ZUM TESTEN<-------

HTML:
<form name="umf" action="umfragespeichern.php" method="get" enctype="text/html">
    Name:<br />
    <input type="text" name="name" value="" size="20" maxlength="50" />
    <br />
    <br />
    <input type="checkbox" name="tag1" value="X" />
    15.07.10
    <br />
    <input type="checkbox" name="tag2" value="X" />
    01.08.10
    <br />
    <input type="checkbox" name="tag3" value="X" />
    15.08.10<br />
    <br />
    <input type="submit" name="speichern" value="Speichern" />
</form>

Hier das PHP
PHP:
<?php


$name = $_GET['name'];
$name = trim($name);
if ( $name <> "" )
{
    echo "Name: $name";
    echo "<br />";

    $tag1 = $_GET['tag1'];
    if ( $tag1 <> "X" )
    {
        $tag1 = "-";
    }


    echo "Tag1: $tag1";
    echo "<br />";
}
else
{
    echo "<h1>Fehlermeldung...</h1>";
}
 ?>

Ist das hier normal denn eigentlich sollte ja bei nicht aktivierter Checkbox nur ein " - " ausgegeben werden und nicht noch die Notiz

Notice: Undefined index: tag1 in C:\xampp\htdocs\umfragespeichern.php on line 11

Kapier ich nicht tag1 sollte ja definiert sein auch wenn nicht angewählt ist.


Danke schonmal vorweg

LG Devilseye
 
Werbung:
Hallo,

wenn die Checkbox nicht ausgewählt ist, wird sie nicht gesendet.
->
PHP:
    $tag1 = $_GET['tag1'];
    if ( $tag1 <> "X" )
    {
        $tag1 = "-";
    }
ersetzen durch
PHP:
    $tag1 = isset($_GET['tag1']) ? $_GET['tag1'] : 'X';
    if ( $tag1 <> "X" )
    {
        $tag1 = "-";
    }

So wird erst geprüft, ob sie ausgewählt ist und dann entsprechend ein Wert zugewiesen.

Gruß
 
Werbung:
und wenn ich dass nun mit mehreren checkboxen machen will?

so tuts nicht

PHP:
<?php

$vorname = $_GET['vorname'];
$nachname = $_GET['nachname'];
$tag1 = $_GET['tag1'];
$tag2 = $_GET['tag2'];
$tag3 = $_GET['tag3'];
$vorname = trim( $vorname );
$nachname = trim( $nachname );

if ( $vorname <> "" and $nachname <> "" )
{

echo "Vorname: $vorname ";
echo "<br />";
echo "Nachname: $nachname ";
echo "<br />";

$tag1 = isset($_GET['tag1']) ? $_GET['tag1'] : 'X';
    if ( empty ($tag1) )
    {
        $tag1 = " - ";
    }

echo "Tag1: $tag1";
echo "<br />";

$tag2 = $_GET['tag2'];
    if ( empty ($tag2) )
    {
        $tag2 = " - ";
    }

echo "Tag2: $tag2";
echo "<br />";

$tag3 = $_GET['tag3'];
    if ( empty ($tag3) )
    {
        $tag3 = " - ";
    }

echo "Tag3: $tag3";
echo "<br />";

}
if ( $vorname == "" or $nachname == "" )
{

echo "Formular anzeigen";

?>

<form name="umf" action="umfragespeichern.php" method="get" enctype="text/html">
    Vorname:<br />
    <input type="text" name="vorname" value="<?php echo $vorname ?>" size="20" maxlength="50" />
    <br />
    Nachname:<br />
    <input type="text" name="nachname" value="<?php echo $nachname ?>" size="20" maxlength="50" />
    <br />
    <br />
    <input type="checkbox" name="tag1" value="X"
    <?php
    if ( $tag1 == "X" )
    {
    echo "checked= \"checked\" ";
    }
    ?>
    />
    15.07.10
    <br />
    <input type="checkbox" name="tag2" value="X"
    <?php
    if ( $tag2 == "X" )
    {
    echo "checked= \"checked\" ";
    }
    ?>
    />
    01.08.10
    <br />
    <input type="checkbox" name="tag3" value="X"
    <?php
    if ( $tag3 == "X" )
    {
    echo "checked= \"checked\" ";
    }
    ?>
    />
    15.08.10<br />
    <br />
    <input type="submit" name="speichern" value="Speichern" />
</form>

<?php
}
?>
weder wenn mit der isset noch wenn normal mit $_GET gearbeitet wird.

LG devilseye
 
Tag 2 und 3 änderst du genauso wie 1 um...
PHP:
$tag2 = isset($_GET['tag2']) ? $_GET['tag2'] : 'X';
 
Hallo zusammen,
Hallo,

wenn die Checkbox nicht ausgewählt ist, wird sie nicht gesendet.
->
PHP:
    $tag1 = $_GET['tag1'];
    if ( $tag1 <> "X" )
    {
        $tag1 = "-";
    }
Dem Stimme ich zu. Allerdiengs hier:
ersetzen durch
PHP:
    $tag1 = isset($_GET['tag1']) ? $_GET['tag1'] : 'X';
    if ( $tag1 <> "X" )
    {
        $tag1 = "-";
    }
So wird erst geprüft, ob sie ausgewählt ist und dann entsprechend ein Wert zugewiesen.

Gruß
wäre es besser keinen Wert zuzuweisen, da das wert ja aus der Form kommen soll. Dementsprechend die Zeile wie folgt ändern:
PHP:
    $tag1 = isset($_GET['tag1']) ? $_GET['tag1'] : "";
    if ( $tag1 <> "" )
    {
        $tag1 = "-";
    }
Weiterhin sollte eine Prüfung für den Fall gemacht werden, wenn keine der Boxen ausgewählt wurde. Damit soll es funktionieren.

Allgemein am Rande:
Die Daten aus einem Formular sollten mit "post" versendet werden.
PORTAL
 
Werbung:
Zurück
Oben