ei, ei, ei, ich kapier's nicht! Brauche Hilfe bei einem Script auf versch. Fragen ...

wurzelchensen

Grünschnabel
Hallo Computer Wizards :-)

Hier das ganze Script (eingabe.php (ohne ausgabe.php)), die Fragen werden weiter unten folgen:


PHP:
<?php 
$DBHost   = "localhost"; 
$DBName   = "meldung"; 
$DBUser   = "root"; 
$DBPasswd = "root"; 

// Verbindug zu DB-Server herstellen 
mysql_connect($DBHost, $DBUser, $DBPasswd) 
    OR die("Konnte DB-Server nicht erreichen"); 
mysql_select_db($DBName); 

if (isset($_GET["submit"])){ 
// Der Submit - Button wurde gedrückt 
//            -> die Werte müssen überprüft 
// und bei Gültigkeit in die DB eingefügt werden 

  // wir gehen von der Gültigkeit der Daten aus 
  $DatenOK = 1; 

  // es gab noch keine Fehlermeldung 
  $error = ""; 

  if (!isset($_GET["name"])){ 
    // es wurde kein Name eingegeben 
    $DatenOK = 0; 
    $error .= "Es muß ein Name eingegeben werden<br>\n"; 
    $daten["name"] = ""; 
  } 
  else { 
    $daten["name"] = $_GET["name"]; 
  } 

  if (!isset($_GET["eintrag"])){ 
    // es wurde kein Komementar eingegeben 
    $DatenOK = 0; 
    $error .= "Ein Eintrag ohne Komemntar mach nicht viel"; 
    $error .= " Sinn, oder?<br>\n"; 
    $daten["eintrag"] = ""; 
  } 
  else { 
    $daten["eintrag"] = $_GET["eintrag"]; 
  } 

  if ($DatenOK){ 
    // Daten waren OK -> also in DB eintragen 
    mysql_query(sprintf('insert into meldung 
                                (datum,name,eintrag) 
                         VALUES (now(),"%s","%s")', 
            addslashes($daten["name"]), 
            addslashes($daten["eintrag"]))); 
    echo mysql_error(); 

    // Alles eingetragen -> zurück zur Übersicht 
    header('Location: http://'.$_SERVER["HTTP_HOST"]. 
       substr($_SERVER["PHP_SELF"],0, 
          strrpos($_SERVER["PHP_SELF"],'/')) 
       .'/'); 
    // und fertig... 
    die(); 
  } 

} 
else { 
  $daten["name"] = ""; 
  $daten["eintrag"] = ""; 
} 
?> 

<html> 
<head> 
<title>Neuer Eintrag in unser GB</title> 
</head> 
<body> 
<?php 
if ($submit && !$DatenOK){ 
  // Das Formular wurde schon abgeschickt aber die Daten 
  //  waren nicht OK 
  // -> Fehlermeldung ausgeben 
  echo "<h2>Fehler:</h2>\n"; 
  echo $error; 
} 

// Formular anzeigen 
?> 
<form action="<?php echo $_SERVER["PHP_SELF"];?>"  
      method="GET"> 
Name: 
<input type="text" name="name" size="30" maxlength="200" 
 value="<?php echo $daten["name"]; ?>"> 
<br> 
Text:<br> 
<textarea rows="10" cols="50" wrap="virtual" name="eintrag"> 
<?php echo $daten["eintrag"]; ?> 
</textarea> 
<br> 
<input type="submit" name="submit" value="Absenden"> 

</body> 
</html>

1. Frage:


PHP:
if (isset($_GET["submit"])){ 
// Der Submit - Button wurde gedrückt 
//            -> die Werte müssen überprüft 
// und bei Gültigkeit in die DB eingefügt werden 

  // wir gehen von der Gültigkeit der Daten aus 
  $DatenOK = 1; 

  // es gab noch keine Fehlermeldung 
  $error = "";

könnte man diesen Quelltext nicht einfach weglassen?
Die Variable $DatenOK hat ja den Wert "1" und ist somit bei der Abfrage

PHP:
if ($DatenOK){ 
    // Daten waren OK -> also in DB eintragen 
    mysql_query(sprintf('insert into me ...

sowieso nicht beachtet? Ich nehme an, dass wenn bei der if-Abfrage nur die Variable $DatenOK als "expression" steht, diese den Wert "1" hat ...

Falls nicht wieso?

Frage Nr. 2:

Was bedeutet das Ausrufezeichen bei:

PHP:
if (!isset($_GET["name"]))

Frage Nr. 3:

PHP:
if ($DatenOK){ 
    // Daten waren OK -> also in DB eintragen 
    mysql_query(sprintf('insert into meldung 
                                (datum,name,eintrag) 
                         VALUES (now(),"%s","%s")', 
            addslashes($daten["name"]), 
            addslashes($daten["eintrag"]))); 
    echo mysql_error();

Bedeutet die if-Abfrage hier, dass wenn $DatenOK den Wert "0" hat, in die Datenbank mittels mysql_query geschrieben wird?

Frage Nr. 4:

PHP:
else { 
  $daten["name"] = ""; 
  $daten["eintrag"] = "";

Ist das, das "else" der ersten if-Abfrage (Linie 12)? Was bezweckt dieser Eintrag genau?

Frage Nr. 5:

PHP:
if ($submit && !$DatenOK){ 
  // Das Formular wurde schon abgeschickt aber die Daten 
  //  waren nicht OK 
  // -> Fehlermeldung ausgeben 
  echo "<h2>Fehler:</h2>\n"; 
  echo $error; 
}

Hier müssen $submit und $DatenOK den Wert "1" haben, falls nicht, wird die Fehlermeldung $error ausgegeben? Habe ich das so richtig gesagt?

Wo wird die Variable $submit gebildet (1 oder 0)? Und was bedeutet wieder das Ausrufezeichen?

Zum Schluss:

Wie ihr seht, ist das, was ich nicht weiss ziemlich viel :-)

Ich bin ein wirklich blutiger Anfänger und bin sehr gespannt auf eure Antworten.

lg.

W.
 
Hi,
zu 2.: also, das "!" bedeutet Negation, ein Inverter, also "nicht-"!
Die Variable $submit kommt vom Submit-Button des Formulars, sollte korrekterweise $_POST('submit') lauten! (Stichwort: "register_globals")
Zur 1. Frage: Die Variable $datenOK muss auf TRUE, bzw 1 gesetzt werden, insofern kannst du das nicht weglassen (erklärt sich mit dem "!"-Inverter)
PHP:
if($DatenOK){...}
ergibts dann TRUE, wenn die Variable entweder (boolean) "true" ist, oder einen Wert > 0 enthält, bzw einen Text != "false" enthält!
Zu 3.: Andersrum, wenn die Variable "true" ist , also 1, true oder mit Text gefüllt
Zu 4.: Die Variablen werden mit einem leeren String belegt (was in einer if-Abfrage FALSE ergeben würde)
Zu 5.: "Wenn Submit gedrückt wurde, aber die Daten nicht OK sind"

MfG
 
Zurück