Daten in MYSQL Datenbank speichern
Schotti
- php
Hallo,
ich habe Formular gebastelt, mit dem bestimmte User etwas auf einer
Website veröffentlichen können! Ich habe jetzt folgende Problem! Ich kann die Daten zwar speichern aber wenn ich das Formular lade Speichert das Script das Formular auch schon. D. h. wenn ich etwas
erfassen will erfasse ich 2 Datensätze 1mal einen ohne Daten wenn ich das Formular lade und 1mal den den ich wirklich speichern wollte!
Wie kann ich das denn verhindern?
Gruß
Schotti
Moin,
ich habe Formular gebastelt, mit dem bestimmte User etwas auf einer
Website veröffentlichen können! Ich habe jetzt folgende Problem! Ich kann die Daten zwar speichern aber wenn ich das Formular lade Speichert das Script das Formular auch schon. D. h. wenn ich etwas
erfassen will erfasse ich 2 Datensätze 1mal einen ohne Daten wenn ich das Formular lade und 1mal den den ich wirklich speichern wollte!
Wie kann ich das denn verhindern?
Ja dazu müßte man nur wissen wie Du Dein Quelltext aussieht.. Hellsehen können wir nämlich noch nicht.
ToMIRL
Ja dazu müßte man nur wissen wie Du Dein Quelltext aussieht..
HI,
hier is er
-----------------------------------------------------------------------------
<?php
$datum = date("d.m.Y");
include("set_db.php");
?>
<html>
<head>
<title>Bergwacht Schönseer Land News erfassen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="aabbcc" background="News%20erfassen%20Bergwacht%20Sch%F6nseer%20Land" text="#000000" on onLoad="javascript:document.news.erfasser.focus();" link="#000000" vlink="#000000" alink="#000000">
<div align="center"><strong><font size="4" face="Verdana, Arial, Helvetica, sans-serif">_Test_<br>
<br>
<form name="news" id="news">
<table width="50%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> <table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Erfasst
von: </font></strong></td>
<td><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Datum:</font></strong></td>
</tr>
<tr>
<td><input name="erfasser" type="text" id="erfasser" size="40" maxlength="40" border="0"></td>
<td><input name="datum" type="text" id="datum" value="<?php echo $datum; ?>" disabled border="0"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Thema</strong></font></td>
<td> </td>
</tr>
<tr>
<td><input name="title" type="text" id="title" size="40" maxlength="50" border="0"></td>
<td> </td>
</tr>
</table>
<strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">N</font><font size="4" face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">ews
eingabe</font><font size="4" face="Verdana, Arial, Helvetica, sans-serif"><br>
<textarea name="news" cols="60" rows="10" id="news"></textarea>
</font></strong></font></strong>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center">
<input type="submit" name="Submit" value="Speichern" onClick="<?php include("save.php") ?>">
<input type="reset" name="Submit2" value="Felder Löschen" onClick="javascript:document.news.erfasser.focus();">
<input type="button" name="Submit3" value="Schließen" onClick="javascript:window.close();">
</div></td>
</tr>
</table></td>
</tr>
</table>
</form>
<br>
</font></strong>
<table width="49%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>
</strong></font></div></td>
</tr>
</table>
<strong><font size="4" face="Verdana, Arial, Helvetica, sans-serif"> </font></strong></div>
</body>
</html>
-----------------------------------------------------------------------------
Gruß
Schotti
Moin,
Ja dazu müßte man nur wissen wie Du Dein Quelltext aussieht..
Mit welchem Editor hast Du diesen Quelltext erstellt?
Warum fehlt das action Atribut bei Deiner Form?
Wozu verwendest Du so viel JS?
Wie fängst Du ungültige Usereingaben ab?
Wie schreibst Du wann den Datensatz in die DB?
Etwa hiermit?
<body bgcolor="aabbcc" background="News%20erfassen%20Bergwacht%20Sch%F6nseer%20Land" text="#000000" on onLoad="javascript:document.news.erfasser.focus();" link="#000000" vlink="#000000" alink="#000000">
TomIRL
Wie schreibst Du wann den Datensatz in die DB?
Ich schreibe den Datensatz mit diesem "Include" in die DB
<input type="submit" name="Submit" value="Speichern" onClick="<?php include("save.php") ?>">
Hier ist die "save.php" dazu"
--------------------------------------------------------------------------
<?php
$erfasser = $_GET[erfasser];
$news = $_GET[news];
$title = $_GET[title];
mysql_query("insert INTO news values('$title', '$news', '$erfasser', '$datum')") or die(mysql_error());
?>
--------------------------------------------------------------------------
Wie würde das mit dem Action atribut funktionieren?
Gruß
Schotti
hi,
<input type="submit" name="Submit" value="Speichern" onClick="<?php include("save.php") ?>">
das tut vermutlich nicht das, was du willst.
mach dir bitte klar, dass PHP server- und javascript clientseitig abläuft.
dein code in save.php wird durch dieses include also bereits ausgeführt, noch bevor deine seiten an den client ausgeliefert wird.
durch klicken des buttons passiert clientseitig anschließen vermutlich _gar nichts_ mehr (es sei denn, save.php würde entsprechenden javascript-code ausgeben).
gruß,
wahsaga
durch klicken des buttons passiert clientseitig anschließen vermutlich _gar nichts_ mehr
Hi,
doch wenn ich den Button klicke speichernt er mir die Daten schon in die DB ich weiß jedoch nicht wie ich verhindern kann das er die daten nicht beim Form load ereignis speichert sondern nur beim Klick auf den Button!
Gruß
Schotti
hi,
durch klicken des buttons passiert clientseitig anschließen vermutlich _gar nichts_ mehr
doch wenn ich den Button klicke speichernt er mir die Daten schon in die DB
_nein_, dass passiert bereits vorher.
wie ich schon sagte, mach dir bitte _erst mal_ den unterschied zwischen client- und serverseitigen abläufen klar - vorher hat es wenig sinn, sich weiter damit zu befassen.
gruß,
wahsaga
Mir ist klar, das PHP eine Serverseitige Sprache und JS eine Client gestützte Sprache ist.
mach dir bitte _erst mal_ den unterschied zwischen client- und serverseitigen abläufen klar
Er speichert mir die Daten ja 2mal ab das 1. mal wenn ich die Seite Lade! Da führt der Server den Quelltext das 1. mal aus und das 2. mal wenn ich den Submit button klicke.
Nur gibt es jetzt eine Möglichkeit dieses 1.mal zu verhinder?
Gruß
Schotti
hi,
Mir ist klar, das PHP eine Serverseitige Sprache und JS eine Client gestützte Sprache ist.
was das in der praxis bedeutet aber offenbar noch nicht.
mach dir bitte _erst mal_ den unterschied zwischen client- und serverseitigen abläufen klar
Er speichert mir die Daten ja 2mal ab das 1. mal wenn ich die Seite Lade! Da führt der Server den Quelltext das 1. mal aus und das 2. mal wenn ich den Submit button klicke.
nein, sieh es bitte endlich ein! wenn du den button klickst, passiert da _nichts mehr_, weil PHP seine arbeit zu diesem zeitpunkt schon längst beendet hat!
mit dir weiter zu diskutieren, bevor du nicht diesen unterschied verstanden hast, halte ich für zwecklos.
Nur gibt es jetzt eine Möglichkeit dieses 1.mal zu verhinder?
ja, abfragen, ob überhaupt schon daten übergeben wurden.
aber das löst dein problem immer noch nicht, dass beim klicken auf den button nicht das passiert, was du erwartest.
gruß,
wahsaga
aber das löst dein problem immer noch nicht, dass beim klicken auf den button nicht das passiert, was du erwartest.
HI,
was passiert denn beim Klick auf den Button? Führ er den Code ein 2. mal aus oder was macht er?
Gruß
Schotti
Hallo Schotti,
Ein Click auf einen Link löst eine Anfrage an einen Server aus, auch eine Klick auf einen Butten eine Formular löst eine Anfrage an einen Server aus:
User ---- Anfrage [Request] ----> Server
|
Abarbeiten der Anfrage
nach Konfiguration
|
Datei hat Extension ".php"
|
Abgabe der Abarbeitung an PHP
|
Einlesen des Quellcodes
|
Interpretation
|
Übermittlung der Ausgabe an
den Server
|
Hinzufügen von Headern
User <---- Auslieferung [Response]---´
Einem Server interessiert nicht wo Quellcode in einer Datei steht er nimmt entgegen und liefert aus und das bei jeder Anfrage. D. h. zwei Anfragen => Ergebnisse zum Speichern.
Gruß aus Berlin!
eddi
Hallo Schotti
Mir ist klar, das PHP eine Serverseitige Sprache und JS eine Client gestützte Sprache ist.
an dem Quellcode ist das nicht erkennbar.
mach dir bitte _erst mal_ den unterschied zwischen client- und serverseitigen abläufen klar
Er speichert mir die Daten ja 2mal ab das 1. mal wenn ich die Seite Lade! Da führt der Server den Quelltext das 1. mal aus und das 2. mal wenn ich den Submit button klicke.
Nur gibt es jetzt eine Möglichkeit dieses 1.mal zu verhinder?
Ja - die gibt es und ich kann nur an Deine Vernunft appellieren: Du hast Dich an dieses Forum gewandt, weil Du siehst, Du brauchst Hilfe. Was Du noch nicht sehen kannst, ist, daß Dir wahsaga diese bereits gegeben hat. Dir fehlen schlichterdings Grundlagen. Beschäftige Dich mit http://de3.php.net/. Zur direkten Lösung Deines Problems solltest Du dich vornehmlich mit http://de3.php.net/manual/de/language.control-structures.php beschäftigen!
Gruß aus Berlin!
eddi
Hallo,
ich habe jetzt dieses Action atribut in das Formular hinzugefügt und
jetzt funktionierts!
Vielen Dank für die Hilfe, ich werde mir diese Seite auf alle Fälle sehr genau anschauen!
Gruß
Schotti