Variablen deaktivieren ^^

cardex

Mitglied
Erstmal sorry wegen des Titels, mir ist nichts eingefallen was mein Prob besser beschreibt.

Ich bin grad ein wenig mit Klassen am rumbasteln. Zu Übungszwecken hab ich mir eine Guestbook Klasse geschrieben. Jetzt habe ich aber folgendes Problem.
Wenn ich etwas eintragen will, wird in der Klasse die Funktion entry_form aufgerufen. Sie gibt ein Template mit den einzelnen Formularfeldern fürs Guestbook wieder und beinhaltet ein Hidden Input Feld welches beim abschicken auf 'true' gesetzt wird. Wenn nun der Wert 'true' gesetzt ist, wird in der Klasse per If Anweisung die Funktion db_eintrag aufgerufen. Die schreibt mir die einzelnen Werte in die Datenbank (Name, Email, Beitrag usw.). Soweit läuft alles auch einwandfrei, wenn ich jetzt aber die Guestbookübersicht aktualisiere/reloade wird mit jedem reload wieder ein Eintrag in der Datenbank vorgenommen, weil bei der If Anweisung der Wert des Hidden Input Feldes immer noch 'true' ist.

Nun die eigentliche Frage, wie überprüfe ich ob bereits in die Datenbank eingetragen wurde oder noch besser, wie kann ich die Variable löschen? Den Wert einfach nach durchlaufen der Funktion von 'true' auf 'false' setzen hat nicht funktioniert.


Code:
	function db_eintrag()
	{
		if(isset($_POST['submit']) AND ($_POST['submit'] == "true"))
		{
			$submit_mysql = new dbCommunication;
			$submit_mysql->start_connection();
			$submit_mysql->select_db("test");

			$timestamp = time();
			$datum = date("d.m.Y H:i",$timestamp);
			$ip = $_SERVER['REMOTE_ADDR'];


			$submit_mysql->db_entry("INSERT INTO guestbook (date, nick, homepage, email, entry, timestamp, ip) 
			VALUES ('$datum', '$_POST[gbNickname]', '$_POST[gbHomepage]', '$_POST[gbEmail]', '$_POST[gbEntry]', '$timestamp', '$ip')");

			$submit_mysql->close_connection();
		}
	}

Das ist die Funktion in der Klasse. Hab am Ende der Funktion schon probiert mit:
$_POST['submit'] = "false";
den Wert der Variable zu ändern. Aber das hab ich ja oben schon geschrieben.
 
hi.

also ich kenn mich ja net so aus mit klassen, aber wie wär's wenn du den wert von dem hidden input feld einfach anstatt auf true auf 1 setzt und dann jedesmal bei reloaden um 1 erhöhst... und dann halt das eintragen nur ausführen wenn der wert = 1 ist.
 
Das Input Feld ist in einem der Templates und wie`s aussieht kann ich vom Script aus (der Klasse) diesen Wert nicht modifizieren bzw bei jedem reload wird wieder der alte Wert aus dem Template genommen. Zumindest stellt sich das für mich so dar, korrigiert mich wenn ich da falsch liege.

btw seh ich nicht so ganz den Unterschied zwischen true und false oder 1 und 0. Denn die Zahl kann ich nicht erhöhen das sie sich nicht im Script befindet.


Nochmal zum Verständniss

Datei 1 -> Guestbook Klasse
Datei 2 -> Template für die Guestbook Übersicht
Datei 3 -> Template fürs Eintragsformular

Beim Klicken auf den Eintragen Button in Datei 2 wird über die URL eine Var an die Klasse (Datei 1) übergeben. Wenn die gesetzt ist, wird anstatt die Übersicht (Datei 2), das Eintragsformular (Datei 3) geladen. Dort befindet sich das Hidden Input Feld Submit. Klicke ich nun da auf den Absenden Button, wird in der Klasse (Datei 1) wieder die Übersicht geladen, und falls der Wert von Submit 'true' ist, der Eintrag durch die Funktion db_eintrag vorgenommen.
 
Zuletzt bearbeitet:
Original geschrieben von cardex
Klicke ich nun da auf den Absenden Button, wird in der Klasse (Datei 1) wieder die Übersicht geladen, und falls der Wert von Submit 'true' ist, der Eintrag durch die Funktion db_eintrag vorgenommen.

was kommt denn, wenn du den wert auf 'false' setzt und diesen ausgeben lässt? variable is variable. wenn du den wert auf 'true' setzen kannst, dann müsstest du den eigentlich ja wieder auf 'false' zurücksetzen können .. jetzt mal rein theoretisch gesehen ;)

cyas,
chino
 
Wenn der Wert False wäre, würd garnix passieren. Sprich er schreibt nichts in die DB. Zurücksetzen ist so eine Sache, der Wert wird in der Template Datei per <input type="hidden" name="submit" value="true"> gesetzt und das Problem an der Sache scheint zu sein, dass ich die Variable ja mit $_POST['submit'] auslesen muss. Daher bekomm ich jedesmal die unveränderte Var ans Script geliefert.
 
Zuletzt bearbeitet:
*push*

Gibts denn hier niemanden der die Lösung für mein Problem kennt? Kann mir nicht vorstellen das es keine gibt. Ist sicher nur irgend ein dummer Denkfehler meiner seits =)
 
Code:
if(!isset($_POST['submit'])) {
    $noreaload = 0;
    session_register(noreload);
}

----------- schnipp ----------------

if(isset($_POST['submit']) AND ($_POST['submit'] == "true") &&
 !($noreaload)){
  //SCHNIPP
   $noreload = 1;
   session_register(noreload);
}
Andere möglichkeit (Und weitaus bessere) ist du setzt das ganze über eine (wenn nicht MySQL) StoredProcedure.

Andere Möglichkeit (MySQL) Konform:
Code:
$query = mysql_query("select * from ..." 
if(!mysql_num_rows($query)) {
   // JEtzt erst speichern
}
 
Hmm Sessions wollte ich nicht unbedingt für ein Guestbook benutzen und deine 2. Möglichkeit versteh ich irgendwie nicht so ganz *g*

Ich glaub ich werd wohl oder übel neben der eigentlichen Klasse noch eine 2. Datei erstellen welche nach drücken des Submit Buttons aufgerufen wird, den Eintrag vornimmt und dann automatisch zurück zur Guestbook Klasse linkt. Ich wollte zwar alles in einer Datei aber wenns nicht anders geht mach ich es halt doch mit noch einer.
 
Zurück