Problem mit Pflichtfelder!

Rambo51

Erfahrenes Mitglied
Hi.

Ich habe aus diesen Thread (klick), den Code für mein Gästebuch genommen. Allerdings klappt das nicht. Wenn ich nichts in dem Feld Autr eingebe wird trotzdem ein eintrag erstellt und keine Warnung gemacht.

Hier mal der der Code:
PHP:
<?php include("gbaddconfig.php");?> 
<?php
ob_start(); 
if ($_POST["submit"]) 
{ 
  $error=false; 
  if (!$_POST['autor']) 
   { 
    printf("Bitte geben den Autor an<br>"); 
    $error=true; 
   } 
  if (!$_POST['titel']) 
   { 
    printf("Bitte gebe den Titel an<br>"); 
    $error=true; 
   } 
   if (!$_POST['email']) 
   { 
    printf("Bitte gebe deine E-Mail an<br>"); 
    $error=true; 
   } 
  if ($error==false) 
   { 
    printf("Klasse Sache, alles ausgefuellt."); 
   } 
} 
ob_end_flush();
?>
<?php 
$conn_id = mysql_connect($host,$nick,$pw); 
mysql_select_db($database,$conn_id);
if(!empty($_POST)) 
{ 
  $autor = $_POST['autor'];
  $hp = $_POST['hp'];
  $email = $_POST['email'];
  $icq = $_POST['icq'];
  $titel = $_POST['titel'];
  $text = $_POST['text'];
  $datum = date("Y-m-d H:i:s"); 
  $sql = "insert into $table (autor,hp,email,icq,titel,text,datum) VALUES ('$autor','$hp','$email','$icq','$titel','$text','$datum')" ; 
  mysql_query($sql) OR die(mysql_error()); 
}
?>

<table align="center" bgcolor="#000000" width="562" border="0" cellpadding="0" cellspacing="1">
  <!--DWLayoutTable-->
    <form name="textarea" method=post> 
  <tr>
    <td class=newsunten width="200" height="25">Autor</td>
    <td width="397" class=newstext><input type=text name="autor"></td>
  </tr>
  <tr>
    <td class=newsunten height="25">Homepage</td>
    <td class=newstext><input type=text name="hp"></td>
  </tr>
  <tr>
    <td class=newsunten height="25">E-Mail</td>
    <td class=newstext><input type=text name="email"></td>
  </tr>
  <tr>
    <td class=newsunten height="25">ICQ</td>
    <td class=newstext><input type=text name="icq"></td>
  </tr>
  <tr>
    <td class=newsunten height="25">Titel</td>
    <td class=newstext><input type=text name="titel"></td>
  </tr>
  <tr>
    <td height="158" valign="top" class=newsunten>Text</td>
    <td valign="top" class=newstext>
<button type="button" onclick="javascript:edit('fett');"><b>B</b></button>
<button type="button" onclick="javascript:edit('kursiv');"><i>I</i></button>
<button type="button" onclick="javascript:edit('underline');"><u>U</u></button>
<button type="button" onclick="javascript:urltext();">URL</button>
<button type="button" onclick="javascript:edit('bild');">Pic</button>
<button type="button" onclick="javascript:edit('rot');"><font color="red">R</font></button>
<button type="button" onclick="javascript:edit('gruen');"><font color="green">G</font></button>
<button type="button" onclick="javascript:edit('blau');"><font color="blue">B</font></button>
<button type="button" onclick="javascript:edit('white');"><font color="white">B</font></button>
<button type="button" onclick="javascript:edit('gelb');"><font color="yellow">B</font></button>
<button type="button" onclick="javascript:edit('qoute');">Q</button>
<button type="button" onclick="window.open('smilies.php','popup','width=430,height=460,left=0,top=0,scrollbars=no');return false;">Smilies</button>
<textarea cols="50" name="text" rows="8"></textarea></td>
  </tr>
  <tr> 
    <td class=newsunten height="24"><!--DWLayoutEmptyCell-->&nbsp; </td> 
    <TD class=newsunten height="24"><input type=submit value="ADD your Message">
    </form>
	</td>
</table>

Es ist bestimmt wieder ein kleineres problem.
Aber ich hoffe ihr helft mir trotzdem. Danke schonmal im Voraus!

Gruss Rambo51
 
Hallo,

der Code, der nur ausgeführt werden soll, wenn alles ausgefüllt ist muss noch an der markierten Stelle eingetragen werden, sonst prüft er zwar aber führt den Code so oder so aus.
PHP:
  if ($error==false)
   {
    printf("Klasse Sache, alles ausgefuellt.");
##### Hier ########
   }

Das würde zum Beispiel so aussehen:
PHP:
 if ($error==false)
   {
printf("Klasse Sache, alles ausgefuellt.");
##### von Hier ########
$conn_id = mysql_connect($host,$nick,$pw);
mysql_select_db($database,$conn_id);
if(!empty($_POST))
{
  $autor = $_POST['autor'];
  $hp = $_POST['hp'];
  $email = $_POST['email'];
  $icq = $_POST['icq'];
  $titel = $_POST['titel'];
  $text = $_POST['text'];
  $datum = date("Y-m-d H:i:s");
  $sql = "insert into $table (autor,hp,email,icq,titel,text,datum) VALUES ('$autor','$hp','$email','$icq','$titel','$text','$datum')" ;
  mysql_query($sql) OR die(mysql_error());
}
##### bis Hier ########
   }
 
Ok, habe es jetzt mal so gemacht, es funktioniert aber nicht.
Wenn ich nichts eingebe und dann abschicke wird nichts eingetragen und auch keine Warnung ausgegeben. Und wenn ich die felder alles ausfülle, dann trägt der auch nichts in die db ein.
 
Auf die Schnelle würd ich dir vorschlagen, es mal so zu probieren:
PHP:
<?php 
include("gbaddconfig.php")

if ($_POST["submit"]) { 
    if (!$_POST['autor']) { 
        printf("Bitte geben den Autor an<br>"); 
        $error["autor"]=1; 
    } 
    if (!$_POST['titel']) { 
        printf("Bitte gebe den Titel an<br>"); 
        $error["titel"]=1; 
    } 
    if (!$_POST['email']) { 
        printf("Bitte gebe deine E-Mail an<br>"); 
        $error["mail"]=1; 
    } 
    if (count($error)==0) { 
        printf("Klasse Sache, alles ausgefuellt."); 
        $conn_id = mysql_connect($host,$nick,$pw); 
        mysql_select_db($database,$conn_id); 
        if (!empty($_POST)) { 
            $autor = $_POST['autor']; 
            $hp = $_POST['hp']; 
            $email = $_POST['email']; 
            $icq = $_POST['icq']; 
            $titel = $_POST['titel']; 
            $text = $_POST['text']; 
            $datum = date("Y-m-d H:i:s"); 
            $sql = "insert into $table (autor,hp,email,icq,titel,text,datum) VALUES  ('$autor','$hp','$email','$icq','$titel','$text','$datum')" ; 
            mysql_query($sql) OR die(mysql_error()); 
        } 
    }   
}
?>
 
Sorry, war vorhin etwas in Eile, du hast da noch was vergessen im HTML-Teil:

Das hier:
HTML:
 <input type=submit value="ADD your Message">
bitte so abändern:
HTML:
 <input type="submit" name="submit" value="ADD your Message">
Das müsste es gewesen sein.

Ausserdem macht es Sinn, an dieser Stelle
HTML:
<form name="textarea" method=post>
noch das action-attribut anzugeben:
HTML:
<form name="textarea" method="post" action="self_bla.php">

muss aber nicht unbedingt sein.
 
Zurück