Geri: Einträge im Formular werden nicht gelöscht!

Beitrag lesen

Hello,

Hallo Tom

<?php

error_reporting(E_ALL)  ### zum Testen immer (meistens) alles einschalten! ^ E_NOTICE);

Habe ich weggelassen da ich es jetzt nicht für wichtig gehalten habe error_reporting(E_ALL ^ E_NOTICE);

include("global.inc.php");

was ist mit get_magic_quotes_gpc() ?

sind die Magic Quotes bei Dir ausgeschaltet?

für was brauche ich die?

$GBname       = trim( $_POST["GBname"] );
$GBemail      = trim( $_POST["GBemail"] );
$GBwebadresse = trim( $_POST["GBwebadresse"] );
$GBtext       = trim( $_POST["GBtext"] );

$dblink = mysql_connect($datahost,$datauser,$datapass);
mysql_select_db($database, $dblink);

$query = 'INSERT INTO gastbuch
      (
      name,
      email,
      www,
      text
      )
     VALUES
     (
     "'.mysql_real_escape_string ($GBname).'",
     "'.mysql_real_escape_string ($GBemail).'",
     "'.mysql_real_escape_string($GBwebadresse).'",
     "'.mysql_real_escape_string ($GBtext).'"
     )';

Gut! Richtiges Escapen ist wichtig für das Überleben Deiner DB

ja aber wenn der Server zu streng eingestellt ist haut es damit auch nicht hin
Beispiel:
$stat="SELECT * FROM tabelle WHERE
nummer='".check_quotes($_REQUEST['nummer'])."'";
$result = mysql_query($stat);
$row=mysql_fetch_array($result);
Das sollte sicherer sein aber für diesen zweck reicht das.

mysql_query($query, $dblink);

$sql = "SELECT *
            FROM
     gastbuch
    ORDER BY
                 zeitstempel DESC;";

Wozu _alle_ Datensätze auslesen? reichen nicht z.B. 10 auf einmal ?

meinst du 10 auf einer Seite??

$result = mysql_query($sql) OR die(mysql_error());

echo mysql_error();
?>
*********************************
<form action="137.php" method="POST">

was passiert denn wohl beim Erstaufruf des Scriptes, wenn das Formular noch nicht aufgebaut

war, also auch noch keine $_POST vorhanden waren? Der Fehler (Notice) tritt dann aber schon

oben auf

Ja wenn ich ihn nicht auschalte!

<input  name="GBname" value="<?php echo $GBname; ?>"
<input type="text" name="GBemail" value="<?php echo $GBemail; ?>"
<input type="text" name="GBwebadresse" value="<?php echo $GBwebadresse; ?>" size="40">
<textarea name="GBtext" value="<?php echo $GBtext; ?>"  cols="39" rows="5"></textarea>
<input type="submit" value="Senden!"> <input type="reset" value="Zur&uuml;cksetzen">

</form>
*******************************
  <?php

echo "<h2>EINTRÄGE IM GÄSTEBUCH</h2><br />\n";
     while($row = mysql_fetch_assoc($result)) {
  echo '<table width="350" align="center" border="1"><tr><td bgcolor="#898989">';
        echo $row['name']. "&nbsp;schrieb am &nbsp;". $row['zeitstempel']." &nbsp; ".$row['www']."</td></tr><tr><td>".$row['text']."</td></tr></table><br>\n";

}

?>
########################################

Du hast bisher keine Fehlerkontrolle bei den SQL-Statements

doch  - aber nicht hier angegeben!

Du hast keine Steuerflußkontrolle

wie soll ich das machen?

Du lässt es auf Notices ankommen (siehe $_POST)
Beim Erstaufruf des Scriptes (über die Adresszeile) wird ein leerer Datensatz eingetragen

Abhilfe:

übertrag aus dem Formular einen Button oder ein Hidden-Field.
  Deklariere ein Array mit allen erwarteten Datenfeldern

$_data = array();
  $_data['GBname']['value'] = '';
  $_data['GBname']['regexp'] = '[0-9a-zA-Z]{2,}';
  $_data['GBname']['required'] = 1;  # 0 für optionale Eingabe,
                                     # 1 für Pflichteingabe,
                                     # 2 für Pflichteingabe nach Muster
  $_data['GBname']['default'] = '';  # default z.B. für Radio, Select und Ckeckboxen

$_data['GBemail']['value'] = '';
  $_data['GBemail']['regexp'] = '[0-9a-zA-Z]{2,}@[0-9a-zA-Z]{3,}'; ## die musst Du natürlich
  $_data['GBemail']['required'] = 1;                                ## selber aufbauen ;-)
  $_data['GBemail']['default'] = '';

...

Sollten ja keine Pflichtfelder sein

Harzliche Grüße vom Berg

Danke Tom für deine ausführliche Hilfe
gruß geri