If-Abfrage

nordi

Erfahrenes Mitglied
Hallo, ich hab ein kleines Problem. Es handelt sich um ein kleines Gästebuch mit Eingabefeld Name und Message. Das Skript prüft nun, ob Name und Message eingegeben worden sind. Wenn das nicht geschieht, wird der Text "All fields are required" ausgeben. Ich würde aber gerne, dass dieser Ausgabetext anstelle der beiden Eingabefelder steht. Also nur der Text "All fields are required" ohne die beiden Inputfelder. Momentan wird der Text einfach unter den Inputfelder ausgegeben. Das gleiche gilt bei erfolgreicher Eintragung. Da sollte der Text "Thanks blabla" anstellt der Eingabefelder stehen. Ist das Möglich? Und wenn ja, wie?

Danke im Vorraus!

Hier das Skript:

PHP:
<form action"index.php" method="post" name="send" id="send">
                                  <?php  include("../config/config.php");
								  
				 echo" <table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\"><tr>";
                                  echo"  <td width=\"1%\" rowspan=\"4\">&nbsp;</td>";
                                  echo"  <td colspan=\"2\"><strong>poem &amp; shoutbox</strong></td>";
                                  echo"  </tr>";
                                  echo" <tr>";
                                  echo"  <td width=\"28%\">&nbsp;</td>";
                                  echo"  <td width=\"71%\">&nbsp;</td>";
                                  echo"</tr>";
                                  echo"<tr>";
                                  echo" <td>name:</td>";
                                  echo" <td><label>";
                                  echo"   <input type=\"text\" name=\"name\" id=\"name\" />";
                                  echo"  </label></td>";
                                  echo" </tr>";
                                  echo" <tr>";
                                  echo"  <td>poem/shout:</td>";
                                  echo" <td><label>";
                                  echo"    <input type=\"text\" name=\"message\" id=\"message\" />";
                                  echo"  </label></td>";
                                  echo"</tr>";
                                  echo" <tr>";
                                  echo"  <td>&nbsp;</td>";
                                  echo" <td>&nbsp;</td>";
                                  echo" <td><label>";
                                  echo"  <input type=\"submit\" name=\"senden\" id=\"senden\" value=\"send!\" />";
                                  echo" </label></td>";
                                  echo" </tr>";
                                  echo" </table>";
	  
if($senden){
if ($name == "" OR $message == "") {

echo "All fields are required!";
}

else

{
function checkIP($ip)
{
    $iTime = 3;
    $hfp = file('ip.txt');
    $iLines = sizeof($hfp);
    $timestamp = time();
    $strNewIPFile = '';
    for($i=0;$i<$iLines;$i++)
    {
        $rgSplited = explode(";",$hfp[$i]);
        if(($rgSplited[1]+ 60*$iTime) > $timestamp)
        {
            $strNewIPFile .= $rgSplited[0].';'.$rgSplited[1]."\n";
            if($rgSplited[0] == $ip)
            {
                echo '<span class=\"subheader\">Spamprotection!</span><br>';
                     exit;        
            }
        }
    }
    $newIPFile .= $ip.';'.$timestamp."\n";
    $hFile = fopen('ip.txt', 'w');
    fwrite($hFile, $newIPFile, 1024);
}
       
$strIP = $_SERVER['REMOTE_ADDR'];
checkIP($strIP);
$zeit = time();
$verbindung = @mysql_connect("$dbhost","$dbuser","$dbpass");

if (!$verbindung) {
		echo "Verbindung zur Datenbank ist nicht m&ouml;glich!\n";
		exit;
	}

mysql_select_db($dbtable,$verbindung);
	
$daten = "INSERT INTO $poem (name,message,zeit,ip,proof) VALUES ('$name','$message','".time()."','$ip','$proof')";

$result = mysql_query($daten,$verbindung);


echo "thanks, <b>$name</b><br>SFTE checking your comment, please wait"; 
}
} ?></form>
 
Mögliche Lösungswege sind: verschiedene Seiten anlegen oder der URL einen Parameter mitgeben, der abgefragt wird oder nach dem Senden den Button abfragen und die Input-Felder dann nicht anzeigen.
 
Raff grade nichts :) Also die Lösung mit den verschiedenen Seiten ist layouttechnisch nicht optimal. Kann man nicht irgendwie da eine if-Abfrage einbauen sowas wie if eintrag ok, dann zeige OK-Meldung und nicht Eingabefelder, if Eintrag nicht OK, dann Zeige "All fields blabla".. Ich hoffe du verstehst, was ich meine :)
 
Also du kannst deinen submit-Button abfragen, etwa:

PHP:
if($_POST[senden] == "send!"){


}

Da kann dann der Code rein, der nicht die Inputfelder enthält, diese kannst du dann in den else-Zweig packen (oder die if-Abfrage mit einem "!" umkehren). innerhalb des if-Teils kannst du dann abfragen, ob die Werte eingegeben wurden und dann wieder mit if und else verschachteln; also wenn beide Felder ausgefüllt sind, dann kommt "thanks..." und du kannst den Eintrag programmieren und im else-Teil kommt die Fehlermeldung "All fields are..." und da eventuell ein Link, der wieder zum Gästebuch führt.

Ich hoffe, das war etwas verständlicher, das andere war wirklich etwas knapp ;-)
 
Super, danke! Sehr logisch :) Noch ne andere Frage.. gibt es eigentlich eine Möglichkeit via EMail Bescheid zu bekommen, ob neue Einträge in der Datenbank angekommen sind? Die neuen Einträge müssen nämlich vorher geprüft werden.
 
Ja, gibt es, allerdings nicht im MySQL, sondern im PHP-Code.

Informier dich einfach mal über die Funktion mail(); ... ;)

Die könntest du beispielsweise nach der Bestätigung der erfolgreichen Eintragung einfügen und dir damit eine Nachricht mit den eingetragenen Werten zukommen lassen.

LG,

Thomas
 
Zurück