Variable wird bei Submit gelöscht!

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Ulf
Mitglied
Beiträge: 61
Registriert: 27.12.2003 14:04
Kontaktdaten:

Variable wird bei Submit gelöscht!

Beitrag von Ulf »

Hallo liebe Coding-freunde,
ich hab hier ein Problem:
ich übermittlie ind er URL die Variable thradid
z.B. http://localhost/forumindex.php?threadid=2
die muss dann, wenn Submit gedrückt wurde in die Datenbank geschrieben werden. Die wird nach dem Submit aber wieder gelöscht! Das heißt, sie existiert nicht mehr und kann nicht mehr in die DB geschrieben werden.

Code: Alles auswählen

<html>
<head>
<title></title>
</head>

<form action="<? php echo $SELF_PHP ?>" method="post">
<table rules="none" frame="void">
<tr><td>Name: </td><td><input type="text" name="autor" size="30"></td></tr>
<tr><td>Name des Themas: </td><td><input type="text" name="thread_name" size="30"></td></tr>
</table><br><br><center>

<textarea name="text" cols="45" rows="13"></textarea>
<br><br>
<input type="submit" name="submit" value=" Fertig ">

</form></center><br><br>
</body>
</html>

<?php
 
///////////////////////////////////////////////////////////////////////////////////////////////////////////

if(isset($_GET['threadid']))
{
include ("include/mysql_connect.php");
	
	$null=0;

	$eintrag = "INSERT INTO posts (post_id, thread_id, user_id, text, datum) VALUES ('$null', '$threadid', '$null', '$null', '$null')";
	if($eintragen = mysql_query($eintrag))
	echo "Post wurde erstellt!";
}
else echo "Fehler! Variable threadid ist nicht definiert!";
?>
das ist der Code, hab nen bissl was rasugelasse. Da dürfte aber alles stimmen, er macht ja auch alles richtig, bis auf die eine variable. sonst geht alles!
wisst ihr, was ich falsch mache?
Benutzeravatar
18inch
Mitglied
Beiträge: 77
Registriert: 14.10.2003 00:41

Beitrag von 18inch »

Hallo,
ich bin auch kein PHP Profi, aber im Formular benutzt du POST:

Code: Alles auswählen

<form action="<? php echo $SELF_PHP ?>" method="post"> 
Und hinterher bei der isset-Abfrage benutzt du $_GET['xxx'].
Benutzte anstelle von $_GET['xxx'] einfach $_POST['xxx'].
Dann müsste es eigentlich funktionieren.
Ulf
Mitglied
Beiträge: 61
Registriert: 27.12.2003 14:04
Kontaktdaten:

Beitrag von Ulf »

also die variable erkennt der ja, aber nur eben bis ich submit drücke, aba ich probiers mal aus. Dabnke schonmal!
Benutzeravatar
18inch
Mitglied
Beiträge: 77
Registriert: 14.10.2003 00:41

Beitrag von 18inch »

Mit deinem Formular übergibst du doch nur: $autor, $$thread_name und $text.
Wieso machst du dann eigentlich if(isset($_GET['threadid'])). Du weist dieser Variablen doch gar keinen Wert zu, oder habe ich was überlesen?
Ulf
Mitglied
Beiträge: 61
Registriert: 27.12.2003 14:04
Kontaktdaten:

Beitrag von Ulf »

der Wert der variable steht jin der URL:
http://blabla?threadid=2
dann ist $threadid gleich 2!
Benutzeravatar
jasc
Ehemaliges Teammitglied
Beiträge: 2497
Registriert: 24.05.2001 02:00
Wohnort: Hergensweiler bei Lindau/B

Re: Variable wird bei Submit gelöscht!

Beitrag von jasc »

Code: Alles auswählen

	if($eintragen = mysql_query($eintrag))
Bin mir grad nicht ganz sicher, aber müsste da nicht == stehen?
Benutzeravatar
18inch
Mitglied
Beiträge: 77
Registriert: 14.10.2003 00:41

Beitrag von 18inch »

jo stimmt.
Habe ich überlesen.

Die Abfrage if($eintragen = mysql_query($eintrag)) ist immer TRUE da du $eintrgagen etwas zuweist und nicht mit der query vergleichst.
Deswegen kommt auch immer Post wurde erstellt, oder??
Ist das so gewollt?? Ich glaube nicht, oder?? Benutze lieber "==".

Aber wieso das mit deiner Variable nicht klappt weiß ich auch nicht.

Allerdings verstehe ich nicht wieso du das ganze über die Variable threadid prüfst. Du übergibst diese schon in der Adresse, somit wird direkt schon ein Post kreiert. Und wenn du dann auf "Fertig" klickst, dann wird nochmal ein Post kreiert. Wieso??
Ulf
Mitglied
Beiträge: 61
Registriert: 27.12.2003 14:04
Kontaktdaten:

Beitrag von Ulf »

18inch hat geschrieben:jo stimmt.
Habe ich überlesen.

Die Abfrage if($eintragen = mysql_query($eintrag)) ist immer TRUE da du $eintrgagen etwas zuweist und nicht mit der query vergleichst.
Deswegen kommt auch immer Post wurde erstellt, oder??
Ist das so gewollt?? Ich glaube nicht, oder?? Benutze lieber "==".

Aber wieso das mit deiner Variable nicht klappt weiß ich auch nicht.

Allerdings verstehe ich nicht wieso du das ganze über die Variable threadid prüfst. Du übergibst diese schon in der Adresse, somit wird direkt schon ein Post kreiert. Und wenn du dann auf "Fertig" klickst, dann wird nochmal ein Post kreiert. Wieso??
Ja, das war ein Versuch, es würde dann davor noch geprüft werden, ob alle Feldervariablen definiert sind, bzw. existieren.
Wenn man den Code ausführt, wird zu Beginn der Post in die DB geschrieben, dabei wird die $themenid richtig in die DB geschrieben. Nach ich Submit gedrückt habe, und somit die anderen Felder asugefüllt habe, existiert die variable nicht mehr! Und das ist das, was ich nicht verstehe!
Benutzeravatar
itst
Ehrenadmin
Beiträge: 7418
Registriert: 21.08.2001 02:00
Wohnort: Büttelborn bei Darmstadt
Kontaktdaten:

Beitrag von itst »

Ein Formular überträgt nur die Daten, die _im Formular_ definiert werden, keine URL-Variablen.

http://www.dclp-faq.de/q/q-formular-variablen.html
Sascha A. Carlin,
phpBB.de Ehrenadministrator
:o
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

18inch hat geschrieben:Die Abfrage if($eintragen = mysql_query($eintrag)) ist immer TRUE
Falsch. Bei dieser Schreibweise wird der Rückgabewert von mysql_query sowohl der Variable $eintragen zugewiesen als auch als Bedingung für den if-Block genutzt. Wenn also mysql_query false zurückgibt, wird der if-Block nicht abgearbeitet.
Antworten

Zurück zu „Coding & Technik“