[Problem] Script fügt keine Einträge in Tabelle...

Der nette Mann

Erfahrenes Mitglied
Hi @ all,

ich versuche mich gerade an einem GB, da ich noch nicht so der PHP Profi bin. Ich hatte zwar schonmal eines gemacht, was allerdings keine Optionen hatte. Jetzt stehe ich vor dem Problem, dass mein Script keine Einträge beim drücken des Submit Buttons vornimmt... Hier der Code des gesamten Scripts:

PHP:
<?
// Variablen vereinbaren
if(!isset($page)) {
	$page=1;
}
$prosite = 5;
// SQL & Abfrage
$numsql = "SELECT * FROM gbook";
$numresult = mysql_query($numsql);
$number = mysql_num_rows($numresult);
$seiten = ceil($number/$prosite);
$start= ($page - 1) * $prosite;
$ende = $start + $prosite;
if($action=='add'){
	echo "    <form method=post name=post>";
	echo "      <table width=100% border=0 cellspacing=0 cellpadding=3 class=small>";
	echo "        <tr>";
	echo "          <td width=60%>";
	echo "            <b>[&nbsp;<a href=index.php?id=5&page=1>show</a>&nbsp;]&nbsp;&nbsp;&nbsp;[&nbsp;<a href=index.php?id=5&action=add>add</a>&nbsp;]</b>";
	echo "          </td>";
	echo "        </tr>"; 
	echo "      </table>";
	echo "        <table width=100% border=0 cellspacing=0 cellpadding=0 class=small>";
	echo "          <tr>";
	echo "            <td width=35%>&nbsp;</td>";
	echo "            <td>&nbsp;</td>";
	echo "          </tr>";
	echo "          <tr>";
	echo "            <td width=35% align=right>name:</td>";
	echo "            <td><input name=txtname type=text class=formular size=30></td>";
	echo "          </tr>";
	echo "          <tr>";
	echo "            <td width=35% align=right>email:</td>";
	echo "            <td><input name=txtemail type=text class=formular size=30></td>";
	echo "          </tr>";
	echo "          <tr>";
	echo "            <td width=35% align=right>website:</td>";
	echo "            <td><input name=txtwebsite type=text class=formular size=30 value=http://></td>";
	echo "          </tr>";
	echo "          <tr>";
	echo "            <td width=35% align=right>message:</td>";
	echo "            <td><textarea name=txtmessage cols=30 rows=5 wrap=VIRTUAL class=formular></textarea></td>";
	echo "          </tr>";
	echo "          <tr>";
	echo "            <td width=35%>&nbsp;</td>";
	echo "            <td><input type=submit name=submit value=send class=button></td>";
	echo "          </tr>";	
	echo "          <tr>";
	echo "            <td width=35%>&nbsp;</td>";
	echo "            <td>&nbsp;</td>";
	echo "          </tr>";	
	echo "        </table>";
	$fname = $txtname;
	$femail = $txtemail;
	$fwebsite = $txtwebsite;
	$fmessage = $txtmessage;  
	if($submit){
		$addsql = "INSERT INTO gbook (id, name, email, url, datum, text) VALUES ('', '$fname', '$femail', '$fwebsite', UNIX_TIMESTAMP(), '$fmessage')";
		mysql_query($addsql);
	}  	
	echo "    </form>"; 
} else {
	// Ausgabe 
	$sql3 = "SELECT * FROM gbook ORDER BY datum DESC LIMIT $start, $prosite";
	$result3 = mysql_query($sql3);
	while($row3 = mysql_fetch_array($result3)) {
		// Ausgabe ;
?>

Wäre echt cool, wenn mir jemand helfen könnte, weil ich schon verzweifle...

Danke im vorraus...

Der nette Mann
 
Zuletzt bearbeitet:
Ich sag mal Stichwort register_globals. Die suche hilft dir da bestimmt weiter. Wenn das nicht funktioniert versuch doch einfach mal die Fehler einzugrenzen. Lass dir die Variablen an bestimmten stellen doch einfach mal per echo ausgeben.

Mfg Akkie
 
Meine Güte! Kannst du nicht versuchen, das Ganze auf die relevanten Stellen zu reduzieren?

Die wenigesten hier werden Lust haben 3 Kilometer Code zu lesen! ;-]
 
Gut das Autos nicht so viele Knöpfe und Schalter und Funktionen haben, wie tutorials.de .... es gäbe sonst 99% Verkehrsunfälle...

Ich wiederhole (und nicht zum ersten mal - auch nicht als einziger):

Quelltext auf relevante Stellen kürzen, Fehlermeldungen mit angeben. Wenn der GANZE Quelltext nötig wird -> als Dateianhang (Textdatei) an den Post anhängen. Die Funktion ist nicht umsonst da ...

GRRRR :-)
 
Also...

1. Der Code ist zwar lang, aber wenn ich nicht weiß, wo der Fehler liegt, wo soll ich mich dann auf's Wesentliche begrenzen.
2. Der Code ist ja wohl sehr ansehlich formatiert, so dass es relativ schnell geht den Code zu überfliegen und evtl. Fehler zu erkennen...
3. THX @ akkie & SilentWarrior für die Beiträge


Der nette Mann
 
Zuletzt bearbeitet:
-

Hallo netter Mann.
1. Der Code ist zwar lang, aber wenn ich nicht weiß, wo der Fehler liegt, wo soll ich mich dann auf's Wesentliche begrenzen.
Kann ich verstehen, aber sämtlicher HTML Code, den du per echo/print ausgibst, ist überflüssig, da er imho nichts mit dem Problem zu tun hat. Also kannst du den getrost weglassen.

2. Der Code ist ja wohl sehr ansehlich formatiert, so dass es relativ schnell geht den Code zu überfliegen und evtl. Fehler zu erkennen...
Nein, durch den HTML Code machst du das alles wieder zu nichte.

Wäre schön, wenn du dies das nächste Mal beachten könntest.
 
Hallo "lieber Mann",
ich habe mir deinen Code laenger angeschaut, jedoch habe ich keinen Fehler finden koennen. Das will aber nichts heissen :). Ich moechte dir an dieser Stelle einen Rat geben.
Es wurde ja bereits angesprochen:

akkie schrieb:
Ich sag mal Stichwort register_globals. Die suche hilft dir da bestimmt weiter. Wenn das nicht funktioniert versuch doch einfach mal die Fehler einzugrenzen. Lass dir die Variablen an bestimmten stellen doch einfach mal per echo ausgeben.
1. Ich wuerde noch einen Schritt weitergehen. Beachte bei der Ausfuehrung des Scripts die Aktivitaet auf der Datenbank (Bsp: mit phpmyAdmin) tut sich irgenwas auf der DB?
2. las dir die evt. Fehler der DB ausgeben:
PHP:
$error = mysql_error();
if($error != ""){
     $this->databaseErrorHandling($error);
}
mysql_query("OPTIMIZE TABLE ".$table);


function databaseErrorHandling($error){
	echo "Die Anfrage an die Datenbank war nicht moeglich.<br>";
	echo "Fehler:<br>".$error;
	$this->error = true;
}
Dann weisst Du wenigstens, ob und welcher Befehl fehlschlaegt.

Ich hoffe ich konnte dir damit einwenig weiter helfen...
 
Zuletzt bearbeitet:
Das Script stimmt so wie ich es oben geposted habe. Eine frühere Version ging nicht, in der das Formular die Action-Eigenschaft hatte also

PHP:
<form method=post name=post action=index.php?id=5&page=1>

mit diesem Befehl geht das System nicht, da dann keine Daten eingefügt werden. Lässt man den Action Befehl außer Betracht, kommt man zwar nicht auf die Startseite des GB aber der Eintrag wird in die DB übernommen. Die Datenbankverbindung besteht auf jeden Fall, da das GB Script included ist und im anderen Script dafür gesorgt wird, dass die Verbindung steht...

Ich würde nur gerne wissen, wie ich es anstelle, dass man wieder zur Startseite des GB gelangt...

THX

Der nette Mann
 
meiner Meinung nach liegt es daran, dass der Submit-Knopf unter dem Eingabefeld liegt. Pack mal die if ($submit) Anweisung nach ganz oben.
 
Zurück