mysql doppelter eintrag!

rengos

Grünschnabel
Hallo alle!

Also, ich habe folgendes Problem. Ich habe ein Registrieungsformular.
Wenn das abgeschickt wird, und keine Fehler vorhanden sind :
Code:
if($error == 'TRUE') {
			return "<fieldset id='errfield' align=\"center\">
					<legend id='errhead'><u><i>Folgende Fehler sind aufgetreten!</i></u></legend>
					<br><b>".$msg."</b>
					</fieldset>";
		}
		else {
			header("location:?mod=member&submod=add");
			exit;
		}

wird mittels
header("location:?mod=member&submod=add");
auf folgende Funktion verlinkt :

Code:
function AddMember() 
{
	session_start();
 	sql();
	$sql = "INSERT INTO members (name, vorname, email, nick, pass, street, ort, plz, date) VALUES ('".$_SESSION['lnname']."', '".$_SESSION['lvname']."', '".$_SESSION['lemail']."', '".$_SESSION['lnick']."', '".md5($_SESSION['lpwd'])."', '".$_SESSION['lort']."', '".$_SESSION['lstr']."', '".$_SESSION['lplz']."', '".date("d.m.Y  H:i:s")."')";
	mysql_query($sql) or die(mysql_error());


//hier kommt noch ne email funktion
und text alias vielen dank für registreirung....//
}

Das geht alles soweit.
Nur die Datensätze werden doppelt in die DB geschrieben :(
So ein Phänomen hatte ich nocht nie...
Vlt. kann mir ja wer helfen, da ich total verzweifelt bin...
Es ist bestimmt nur ein kleiner Syntax Fehler oder sowas, vielleicht findet ihr ja was.

schonmal Danke.

Gruß Rene
 
Was ist das denn bitte für eine Funktion sql(); ?
Liegts vielleicht daran? Ansonsten kann ich auf den ersten Blick nichts auffälliges finden.
 
in der funktion sql() bau ich nur die sql verbindung auf.
Code:
function sql() 
{
	@mysql_connect('localhost', 'user', 'pass') or die(mysql_error());
	@mysql_select_db('db');
}


mehr ist das auch nicht...
:mad:
 
Ich kann mir das nur so erklären, dass die
header("location:?mod=member&submod=add");
zweimal aufgerufen wird.
Eigentlich sollte das ja nicht passieren. Es sei denn, jemand aktualisiert.

Wie übergibst du denn die Formulardaten? POST? Session?

[EDIT]
Ich sollte einfach mal genauer hinsehen.... *g*
Da du alles in Sessions abspeicherst, kann es bei einem Aktualisieren der header("location:?mod=member&submod=add"); zu einem doppelten Eintrag kommen.
[/EDIT]
 
Hmmm...
Das kann sein, aber da ich mit einem Template System Code
muss ich die daten in Sessions speichern.
Wenn ich versuch die Variablen mit $_POST[] übergebe, dann nimmt er die gar nicht.
Aber mir ist grade beim schreiben noch was eingefallen *g*
ich kann ja die variablen so übergeben:

AddMember($_POST['name'], $_POST['vorname'], etc.)

function AddMember($name, $vorname, etc.)

ich versuch das mal so...
trotzdem danke erstmal. Die erwähnung von Session hat mich darauf gebracht :)
 
Ich würde einfach nach der Überprüfung des Formulars, eintragen oder nicht eintragen und das Ergebnis dann mittels header () anzeigen lassen.
Da kann dann nichts passieren.
 
*selbstret* :-)
darauf hätte ich auch selber kommen können *g*.

es geht jetzt, lag wohl doch an den sessions.

LÖSUNG :
Code:
if($error == 'TRUE') {
			return "<fieldset id='errfield' align=\"center\">
					<legend id='errhead'><u><i>Folgende Fehler sind aufgetreten!</i></u></legend>
					<br><b>".$msg."</b>
					</fieldset>";
		}
		else {
			sql();
			$sql = "INSERT INTO members 
			(UserSession, name, vorname, email, nick, pass, street, ort, plz, date) 
			VALUES ('" . session_id() . "', '" . $_POST['nname'] . "', '" . $_POST['vname'] . "', '" . $_POST['email'] . "', '" . $_POST['nick'] . "', '" . $_POST['pwd'] . "', '" . $_POST['str'] . "', '" . $_POST['ort'] . "', '" . $_POST['plz'] . "', '".date("d.m.Y  H:i:s")."')";
			mysql_query($sql) or die(mysql_error());
			$email_to = $_SESSION['lemail'];   
			$email_from_mail = "register@lg-scene.de";
			$email_from_name = "lg-scene.de";   
			$email_betreff = "Aktivierungsmail";
 
Zurück