Eintrag erfolgt automatisch, obwohl das Formular nicht abgeschickt wird

Eiszwerg

Erfahrenes Mitglied
Folgender Code:

PHP:
<html>

<head>
<title>New Entry</title>
</head>

<body>
<?
include ("vars.php");
mysql_connect ("localhost",$user,$pw) or die ("Es besteht keine DB Verbindung :o(");
$dbanfrage = "SELECT * FROM $table ORDER BY id DESC";
$result = mysql_db_query ($db, $dbanfrage);
?><table width="400"><?
while ($Ausgabe = mysql_fetch_array ($result))
{
?><table border="1" width="600"><?
echo"<tr><td bgcolor='#1188FF'>Am $Ausgabe[datum] um $Ausgabe[zeit] in/im $Ausgabe[ort]</td></tr>";
echo"<tr><td>$Ausgabe[text]</td></tr>";
echo"<br>";
}
?></table><br>
<form method="POST" action="home.php?seite=events&Fertig=YES">
   <table>
    <tr>
      <td width="50" valign="top"><b>Datum:::</b></td>
      <td width="450"><input type="text" name="datum" size="20" value="JJJJ-MM-TT" tabindex="1"></td>
    </tr>
    <tr>
      <td width="50" valign="top"><b>Uhrzeit:::</b></td>
      <td width="450"><input type="text" name="zeit" size="20" tabindex="2"></td>
    </tr>
    <tr>
      <td width="50" valign="top"><b>Ort:::</b></td>
      <td width="450"><input type="text" name="ort" size="50" tabindex="3"></td>
    </tr>
    <tr>
      <td width="50" valign="top"><b>Eventbeschreibung:::</b></td>
      <td width="450"><textarea rows="10" name="text" cols="50" tabindex="4" wrap="physical"></textarea></td>
    </tr>
    <tr>
      <td width="50" valign="top"><b>Passwort:::</b></td>
      <td width="450"><input type="password" name="pass" size="20" tabindex="5"></td>
    </tr>   
   </table>
  <p><input type="submit" value="Eintragen" name="B1"></p>
</form>
<?
 if ($Fertig==YES || $pass="XXXXX") {
  include ("vars.php");
  mysql_connect ("localhost",$user,$pw) or die ("Es besteht keine DB Verbindung :o(");
  mysql_db_query ($db,"INSERT INTO  $table  VALUES('0','$datum','$zeit','$ort','$text')") or die  ("Das war keine g&uuml;ltige DB Abfrage! :o(");
  mysql_close();
}
?>
</body>
</html>

Sobald ich auf die Site gehe bzw. diese aktualisiere erscheint ein neuer leerer Datensatz... Wie kann das passieren? Erstens ist das Feld pass leer, also trifft EINE der 2 Bedinungen für das schreiben nicht ein und selbst $Fertig ist ja auch leer, wenn ich nicht auf den Formular-Button klicke... Wie kann also ein leerer Eintrag zustande kommen? Bin planlos!
 
Habe den Fehler selber gefunden (ich depp)

Muss so aussehen:
PHP:
  <p><input type="submit" value="Eintragen" name="B1"></p>
</form>
<?


 if ($Fertig=="YES" && $pass="xxx") {


  include ("vars.php");
  mysql_connect ("localhost",$user,$pw) or die ("Es besteht keine DB

statt || (oder) muss ich wohl besser && (und) nehmen ;)
und die " " hätte ich auch verwenden können!
 
Zuletzt bearbeitet:
Und wenn du schon dabei bist, solltest du anstelle des Zuweisungsoperators in der Passwortabfrage lieber einen Vergleichsoperator nehmen. ;)
Code:
if ($Fertig=="YES" && $pass=="xxx") {
:rolleyes:
 
Zuletzt bearbeitet von einem Moderator:
Joa... besser is ;)
Hab ich nach dem 2. Post auch festgestellt. Hatte nur keine Zeit mehr, dass hier noch zu posten. Aber recht hast Du natürlich...
Hatte mal wieder Total-Black-Out... Jaja... die Liebe ;)

Aber danke, dass Du das noch mal klargestellt hast!

PS:: änder bitte mal das PW in xxx .. muss ned jeder wissen *g*
 
Tja, dann könnt ihr hier bei mir weitermachen. Ich habe da nämlich auch das gleiche Prob, aber in etwas verzwickterer Form:

PHP:
<?php
	define('MYSQL_HOST',		'localhost');	//Datenbakrechner
	define('MYSQL_USER',		'user');		//Anmeldename	
	define('MYSQL_PASS',		'pass');	//Passwort
	define('MYSQL_DATABASE',	'dbname');	//Datenbank, die angewäht werden soll
?>


<?php

//mysql_connect
$verbindung = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DATABASE) OR die(mysql_error()); // Verbindungsangaben

mysql_select_db(MYSQL_DATABASE) OR die (mysql_error()); // Datenban auswählen
if (!$verbindung) // Verbindgungsprüfung
	{
	echo ("Es konnte keine Verbindung hergestellt werden. Bitte überprüfen Sie Ihre Konfigurationen und versuchen Sie es noch einmal<br>\n");
	}
else
	{
	}

if ($action == "add")
	{
	if ("$NAME" == "")
		{
		echo ("Sie müssen doch einen Namen haben ?<br>\n");
		}
		else
		{
		}
		}
else
{
$result = mysql_query("INSERT INTO test VALUES(\"\",\"$NAME\",\"$EMAIL\",\"$EINTRAG\")");

If (!$result)
	{
	echo "Einfügen fehlgeschlagen!";
	}

	else
	{
	}
	
?>

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Test</title>
</head>

<body>
<p align="center">
<form action="eintragen.php?action=add" method="post" name="formular">
<table border="0">
<tr bgcolor="#0099CC">
<td height="25" colspan="2"><p align="center"><font size="+2">Unser Gästebuch</font></p></td>
</tr>
<tr bgcolor="#0033FF">
<td>Name:</td><td><input type="text" name="NAME"></td>
</tr>
<tr bgcolor="#0033FF">
<td>E-Mail:</td><td><input type="text" name="EMAIL"></td>
</tr>
<tr bgcolor="#0033FF">
<td colspan="2"><textarea cols="27" rows="7" name="EINTRAG"></textarea></td>
</tr>
<tr bgcolor="#0099CC">
<td><input type="submit" name="ok" value="Eintragen"></td><td align="right"><input type="reset" name="neu" value="Nochmal neu"></td>
</tr>
</table>
</form>
</p>
<?php
}
?>
</body>
</html>

So. Das prob ist nun, dass er das Formular verschickt, sobald ich die Seite aufrufe. Das ist natürlich blööd, weil das ganze in die Datenbank wandert und entsprechend ausgegeben wird.
Wenn ich aber was eintrage, dass geht wieder nix - er sendet nicht.
Trage ich den Namen nicht ein sendet er auch net (und das ist schonmal gut)
Das Script hat ohne die Abfrage vom Namen funktioniert, weshalb ich irgendwie die Klammern in verdacht habe (das sind einige dazugekommen, auch unterhalb des Formular ist noch ein "}"

Ich weis echt nimmer weiter. Da ich aber PHP selber lernen will, möchte ich euch biten mir nur einen Hinweis zu geben, und nicht gleich die ganze Lösung.

Gruß Memfis
 
Zurück