3 Fragen zu MySQL-PHP

deki

Mitglied
1. Ich hab ein Formular gemacht und jedesmal wenn ich meinen Browser refresche schreibt er mir einen neueun Eintrag in die Datenbank, wie verhindere ich das.

2. Hab zwei Buttons zum Eintragen und löschen gemacht die funktionieren auch, nur wenn ich den button zum eintragen anklicke kommt immer der Fehler:
Warning: Undefined variable: loschen in c:\programme\apache group\apache\htdocs\beitrageanz.php on line 35

Und wenn ich den anderen Button betätige kommt der Fehler:
Warning: Undefined variable: neueintrag in c:\programme\apache group\apache\htdocs\beitrageanz.php on line 27

Doch wenn ich einen der Buttons herausnehme kommt der Fehler nicht mehr.
Aber beide Buttons funktioniern ist halt der Fehler der stört.


3.Wie verhindere ich das in die Datenbank geschrieben wird wenn nicht bestimmte Felder im Formular ausgefüllt sind, habs schon mit NOT NULL versucht nützt nichts.
 
1. keine Ahnung, da musst Du schon das Script posten..

2. Tja, da wird wohl in Zeile 35 bzw 27 eine undefinierte Variable sein um die Du Dich kümmern musst.

3. Einfach den Feldinhalt überprüfen, zB so:
PHP:
if( empty( $_POST['meinFeld'] ) )
    header( "Location: formular.html" )
else
    mysql_query( "INSERT INTO blabla..." );
 
Hier das Script:
1.
PHP:
<form action="<?php echo $PHP_SELF ?>" method="post" name="eintragung">


<table border='1' cellspacing='5' cellpadding='2'>
<tr><td>Name:<br><input type="text" name="name" size="25"></td></tr>
<tr><td>Email:<br><input type="text" name="email" size="25"></td></tr>
<tr><td>Homepage:<br><input type="text" name="homepage" size="25"></td></tr>
<tr><td>Message:<br><textarea name="message" cols="60" rows="10"></textarea></td></tr>
<tr><td><input type="submit" name="loschen" value="loschen"></td>
<td><input type="submit" name="neueintrag" value="Eintragen"></td>
</tr>
</table>


<?php

$db = mysql_connect("localhost","root","root");
mysql_select_db("gbook");

if (empty($_POST['message']))

    header( "Location: beitrageanz.php" );

if ($neueintrag) {

   $sqlkommando = "INSERT INTO guestbook (name, email, homepage, message) VALUES ('$name', '$email', '$homepage', '$message')";

   mysql_query($sqlkommando) or die("Error: " . mysql_error());

}

if ($loschen) {

 mysql_query("delete from guestbook");

    }


$result = mysql_query("SELECT name, message from guestbook order by id ASC");


if ($result) {

$number = mysql_num_rows($result);
echo "<p>Es sind $number Datensätze gelesen worden.";
echo "<table border=0 cellspacing=5 cellpadding=10 width=80%>";

     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

           echo "<tr><td style=background-color:CFCFCF; width=70%>";
           echo implode("</td><td style=background-color:CFCFCF;>",$row);
           echo "</td></tr>\n";
           
}

           echo "<table>";

           
}


mysql_close();
?>

2.Die Variable ist definiert wie du oben sehen kanst(glaub ich).

3.Wenn ich den Code einfüge den du geschrieben hast kommt die Meldung.

Warning: Cannot add header information - headers already sent by (output started at c:\programme\apache group\apache\htdocs\beitrageanz.php:7) in c:\programme\apache group\apache\htdocs\beitrageanz.php on line 28

Und der eintrag wird trotzdem geschrieben auch wenn message leer ist.
 
Zuletzt bearbeitet:
habs probiert es bringt nichts er schreibt noch immer in die Datenbank
auch wenn 'message' leer ist, beim refresh macht er einen neuen Datenstatz, und die Fehler:


Warning: Undefined variable: loschen in c:\programme\apache group\apache\htdocs\beitrageanz.php on line 28


Warning: Undefined variable: neueintrag in c:\programme\apache group\apache\htdocs\beitrageanz.php on line 20

werden angezeigt obwohl die Buttons funktionieren.

Bin echt dankbar für eure hilfe ich hoffe jemand sieht den Fehler.
 
Das mit den Variablen ist so:
Es ist immer nur eine von beiden definiert, je nachdem auf welchen Button man geklickt hat.

Schreib statt
PHP:
if( $variable )
einfach
PHP:
if( isset( $variable ) )
Du willst ja wissen, ob Sie definiert ist..

Zu dem anderen Problem:
Hinter die header() Anweisung muss noch n exit; sonst läuft das Script weiter..
Also:
PHP:
if( empty( $_POST['message'] ) )
{
    header( "Location: beitrageanz.php" );
    exit;
}

HTH

grüßle
dave
 
danke das mit den Buttons funktioniert jeztz, doch der Header macht Probleme:

Warning: Cannot add header information - headers already sent by (output started at c:\programme\apache group\apache\htdocs\beitrageanz.php:9) in c:\programme\apache group\apache\htdocs\beitrageanz.php on line 63

Hab in jetzt nach unten verschoben jetzt zeigt er zumindest an wieviel Datensätze es hat.
 
Zurück