 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
03.09.2007, 00:12
|
#1
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
Formulareingaben "zwischenspeichern"
Hallo zusammen!
Ich bräuchte mal die Hilfe von ein paar alten Hasen und würde eure Meinung zu folgendem Thema wissen wollen:
Ich habe auf meiner Seite ein Formular, mit dem der User Datensätze zu meiner Datenbank hinzufügen kann.
Mal abgesehen davon dass ich versch. Formular-Überprüfen-Eigenschaften mit Dreamweaver eingefügt habe, würde das niemanden daran hindern, riesigen Sch**** in meine DB einzugeben und mich regelrecht mit Müll zu überfluten. Damit rechne ich nicht unbedingt, trotzdem habe ich gelesen, dass man bei so etwas immer vom schlimmsten Fall ausgehen sollte.
Rein von der logischen Seite wäre es toll, wenn ich die von den Usern eingegebenen Datensätze erst irgendwo "zwischenspeichern" könnte, um sie dann mit eigenem Auge zu überprüfen, dass sich nicht jemand einen Spaß erlaubt.
Bei erfolgreicher Prüfung würde ich sie dann "weiterleiten".
Für Anregungen und Vorschläge bin ich euch sehr verbunden!
Danke!
|
|
|
03.09.2007, 00:28
|
#2
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Tabelle der Meinungen um ein Feld erweitern "aktiviert"
Beim posten immer eine 0 rein schreiben lassen.
Nachdem eine Meinung rein kommt, eine Mail an Dich zu Info, in der Administration abfragen was alles eine 0 in "aktiviert" hat und checken, wenn ok, 0 gehen eine 1 updaten, sonst löschen.
Öffentlich werden nur die angezeigt, die eine 1 haben, also ... WHERE `aktiviert` = 1;
|
|
|
03.09.2007, 00:39
|
#3
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
Danke Mark, das Vorgehen habe ich umrissen, werde mich dann ab morgen an die Umsetzung machen (also wird noch die ein oder andere Frage kommen...  )
|
|
|
11.09.2007, 17:12
|
#4
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
So, jetzt bin ich gerade dabei, mich an dieses Thema zu machen.
Die "0" wird jetzt reingeschrieben. Nun sollen alle angezeigt werden, die im Feld "aktiviert" eine "1" drinstehen haben.
Dieses wollte ich so lösen:
PHP-Code:
$query_Abfrage_namen = "SELECT id, name, plz, ort, aktiviert FROM tbl_studios WHERE aktiviert = '1' AND name LIKE '%".$suche."%' OR plz LIKE '%".$suche."%' OR ort LIKE '%".$suche."%' ORDER BY name ASC";
Allerdings werden mir auch weiterhin alle Namen ausgegeben, also auch die, bei denen "0" steht.
Wo liegt der Fehler??
|
|
|
11.09.2007, 17:33
|
#5
|
|
TP-Supporter
Registriert seit: Feb 2005
|
PHP-Code:
$query_Abfrage_namen = "SELECT id, name, plz, ort, aktiviert FROM tbl_studios WHERE aktiviert = '1' AND (name LIKE '%".$suche."%' OR plz LIKE '%".$suche."%' OR ort LIKE '%".$suche."%') ORDER BY name ASC";
Das sollte gehen, die Klammer machts.
|
|
|
11.09.2007, 17:48
|
#6
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
Sehr schön, danke, es funktioniert. Nun fehlt nur noch die automatische Mail-Benachrichtigung an mich.
Aber wie schaut die denn aus?
Sie sollte in etwa so lauten:" Neuer Datensatz hinzugefügt"
|
|
|
11.09.2007, 20:27
|
#7
|
|
TP-Supporter
Registriert seit: Feb 2005
|
Zitat:
Zitat von Marki87
Sehr schön, danke, es funktioniert. Nun fehlt nur noch die automatische Mail-Benachrichtigung an mich.
Aber wie schaut die denn aus?
Sie sollte in etwa so lauten:" Neuer Datensatz hinzugefügt"
|
http://de.php.net/mail
|
|
|
30.09.2007, 17:56
|
#8
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
So ich habe jetzt folgende Mailfunktion in meinen Code eingesetzt:
PHP-Code:
$nachricht = "Neuer Datensatz hinzugefuegt.";
mail('meinemailadresse@example.com', 'Datensatz', $nachricht);
Es soll also immer eine Mail an mich geschickt werden, wenn jemand den INSERT INTO Befehl betätigt.
Meine Anfängerfrage also: Wie muss ich obige Codezeile in folgenden Code einbauen, dass auch alles richtig funktioniert?
PHP-Code:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO tbl_studios (name, strasse, plz, ort, homepage, telefon, freigeben) VALUES (%s, %s, %s, %s, %s, %s, '1')",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['strasse'], "text"),
GetSQLValueString($_POST['plz'], "text"),
GetSQLValueString($_POST['ort'], "text"),
GetSQLValueString($_POST['homepage'], "text"),
GetSQLValueString($_POST['telefon'], "text"),
GetSQLValueString($_POST['freigeben'], "int"));
mysql_select_db($database_Studios, $Studios);
$Result1 = mysql_query($insertSQL, $Studios) or die(mysql_error());
$insertGoTo = "danke_hinzufuegen.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
Danke für eure Hilfe
|
|
|
30.09.2007, 20:04
|
#9
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Welchen Sinn macht diese Zeile?
PHP-Code:
$Result1 = mysql_query($insertSQL, $Studios) or die(mysql_error());
Du schreibst doch etwas in die DB und liest nichts aus, also wieso legst Du das Resultat in einer Variablen ab?
Zu deiner Frage...
Unmittelbar nach der Zeile in der Daten der DB hinzugefügt werden fragst Du in einer IF-Anweisung mit mysql_affected_rows ab ob der Eintrag wirklich erfolgreich war. Ist das der Fall verschickst Du deine Mail, andernfalls kannst Du mit einer Fehlermeldung darauf reagieren.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
|
30.09.2007, 21:15
|
#10
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
Welchen Sinn diese Zeile hat, musst du DW fragen, als Anfänger habe ich dessen Hilfen schon genutzt, eine PHP-Abfrage zu erstellen. Jedenfalls läufts auch ohne diese Zeile.
Ich habe mithilfe von JavaScript schon eine Formularüberprüfung auf meine Felder gelegt, er meckert also wenn in die Felder gar nichts oder etwas falsches eingegeben wird.
Ist dieser Weg dann deinem gleichwertig oder gibt es da Nachteile?
|
|
|
30.09.2007, 21:19
|
#11
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Javascript ist ungeeignet um Eingaben zu prüfen. Das sollte immer zwingend serverseitig (mit PHP oder einer anderen Scriptsprache) gemacht werden. Javascript lässt sich abschalten, Formulare lassen sich von extern abschicken, wo keine Prüfung stattfindet, usw.
Die Zeile
PHP-Code:
$Result1 = mysql_query($insertSQL, $Studios) or die(mysql_error());
brauchst Du schon, weil das die Zeile ist wo etwas in die DB geschrieben wird. Was Du nicht brauchst ist das "$Result1 =" vornedran, weil das vollkommen sinnfrei da steht.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
|
30.09.2007, 21:44
|
#12
|
|
TP-Senior
Registriert seit: Jul 2007
Ort: Bobingen
|
Na gut, dann werde ich mich mal an die mysql_affected_rows machen, man lernt bei euch eben immer hinzu... vielen Dank für die Tips.
Ist es dann prinzipiell so richtig?
PHP-Code:
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO tbl_studios (name, strasse, plz, ort, homepage, telefon, freigeben) VALUES (%s, %s, %s, %s, %s, %s, '1')",
GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['strasse'], "text"),
GetSQLValueString($_POST['plz'], "text"),
GetSQLValueString($_POST['ort'], "text"),
GetSQLValueString($_POST['homepage'], "text"),
GetSQLValueString($_POST['telefon'], "text"),
GetSQLValueString($_POST['freigeben'], "int"));
mysql_select_db($database_Studios, $Studios);
mysql_query($insertSQL, $Studios) or die(mysql_error());
$nachricht = "Neuer Datensatz hinzugefuegt.";
mail('meinemailadresse@example.com', 'Datensatz', $nachricht);
$insertGoTo = "danke_hinzufuegen.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
Geändert von Marki87 (30.09.2007 um 21:50 Uhr).
|
|
|
30.09.2007, 21:58
|
#13
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Zitat:
Zitat von Marki87
Ist es dann prinzipiell so richtig?
|
Ja
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:31 Uhr.
| |