WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   [PHP] Formular versenden UND in Datenbank eintragen? (http://www.wcm.at/forum/showthread.php?t=222379)

Chrisi99 01.09.2007 20:41

[PHP] Formular versenden UND in Datenbank eintragen?
 
Hallo Leute,

leider wieder ein Fall von "ich bin zu dumm" ;)


Kann ich Daten aus einem Formular gleichzeitig senden und in eine Datenbank schreiben?

ich bekomme beides nacheinander ja hin, aber gleichzeitig geht es nicht ;)

Also sowohl das Versenden von Emails (formmailer) als auch das Schreiben in eine Datenbank geht, nur leider nicht gleichzeitig... was tun?

hier noch der Hintergrund:

es sollen sich Leute anmelden können (zu einem Kurs) mit folgenden Schritten:

S1->S2->S3

S1: Eingabe der Daten in ein
Code:

<form action="s2.php" method="post">
dann per Submitbutton auf die zweite Seite, wo die Formulareinträge begutachtet werden können:
Code:

<?php
echo $_POST["Kursort"];
?>

usw für alle Einträge.

beim Klick auf "Senden" würde ich jetzt gerne die Daten an mich senden und in die Datenbank eintragen...

Hilfe ist willkommen :-)

Grüße
Christoph

Chrisi99 01.09.2007 21:25

vielleicht check ich auch die Syntax nicht richtig... hier meine SQL Query

Code:

<?php
                //Datenbank Einstellung und Query String
                $db = mysql_connect("localhost","USER","Passwort");
                mysql_select_db("datenbank",$db);
$datum=("m, d, Y");
        $sql = "INSERT INTO tabelle('FName', 'FAdresse', 'FMail','Datum') Values({$_POST['FName']}, {$_POST['FAdresse']}, {$_POST['FMail']},$datum)";
        mysql_query($sql);
       

                mysql_close($db);
                ?>

das Formular wird per <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post"> selbst aufgerufen, ich glaube, das passt?


:confused:

reemrev 01.09.2007 21:31

Soweit ich das verstanden habe:
Auf S2 soll man vor dem Absenden seine Daten überprüfen können?
Mach ein neues Formular (Stichwort:<input type="hidden"...), wo du die eingegebenen Daten versteckst und mit "Senden" an S3 weiterleitest.
Auf S3 werden die Daten wie bei einem normalen Formular ausgelesen, die Mail gesendet und danach in die DB eingtragen. Gleichzeitig im Wortsinn geht nicht.
siehe:http://de.selfhtml.org/html/formulare/versteckte.htm

ps: $datum=date("m, d, Y");
die DBTabelle scheint nicht wirklich gut zu sein, vermisse zB. einen brauchbaren Index

Chrisi99 01.09.2007 21:39

also ich brauch die drei Schritte nicht unbedingt. Wenns auf einem geht bin ich glücklich ;)

das Emailen geht auch problemlos, nur in die Datenbank wird nichts eingetragen.

Ich habe aber DB, Table und User/Passwort 100 Mal überprüft (aus leidiger Erfahrung).

wo ist der Haken bei der Query, oder kann ich nicht senden und Datenbankschreiben einfach hintereinander in eigenen <?php ?> Tags... ich kanns ja mal in eines packen ;)

der Index der Tabelle ist auto_increment, aber brauche ich den in der query?

danke wegen dem date();!

zAPPEL 01.09.2007 22:18

Du könntest mal schaun ob deine SQL-Abfrage einen Fehler wirft:
PHP-Code:

$result mysql_query($query);
if (!
$result) {
    die(
'Ungültige Abfrage: ' mysql_error());


Prinzipiell ist es kein Problem in einem PHP-File erst Daten in eine Datenbank zu schreiben und dann ein e-Mail zu verschicken.

Ahja.. ein String mit "Test $variable" da schreibt er die Variable in den String, mit Arrays ("Test $_POST['Variable']") funktioniert das soweit ich weiß nicht - da wird auch dein Fehler sein.

lg

Chrisi99 01.09.2007 22:24

Zitat:

Original geschrieben von zAPPEL
Du könntest mal schaun ob deine SQL-Abfrage einen Fehler wirft:
PHP-Code:

$result mysql_query($query);
if (!
$result) {
    die(
'Ungültige Abfrage: ' mysql_error());


Prinzipiell ist es kein Problem in einem PHP-File erst Daten in eine Datenbank zu schreiben und dann ein e-Mail zu verschicken.

Ahja.. ein String mit "Test $variable" da schreibt er die Variable in den String, mit Arrays ("Test $_POST['Variable']") funktioniert das soweit ich weiß nicht - da wird auch dein Fehler sein.

lg

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''FName','FAdresse','FMail','Datum') Values(, , , 09, 01, 2007)'

also 100 Punkte für dich :D

wie übergebe ich ihm denn die Variablen in die Query?

zAPPEL 01.09.2007 22:31

Also entweder du machst folgendes:

$name = $_POST["name"]
und dann so wie du es gemacht hast, oder du hängst die Strings 'zusammen', mit "."
PHP-Code:

"Insert Into Tabelle (spalte1) VALUES('".$_POST["name"]."')"

also mit " den String abschließen und mit . kannst du weitere Strings oder Variablen anhängen.

Möglichkeit 1 wäre vorzuziehen, und dabei kann man auch gleich die Eingaben aus dem Forumular überprüfen.

lg zaPPEL

Chrisi99 01.09.2007 23:08



danke schon mal für die Hilfe, das Einfügen haut jetzt hin, leider sind die Variablen immer leer...?
Code:

$name = $_POST["FName"];
$adresse = $_POST["FAdresse"];
$email = $_POST["FMail"];
$datum=date("m.d.Y");

das sind meine Beispielvariablen, leider kommt in der Datenbank nur das Datum an (ergo findet er bei den anderen den Wert nicht).

im Formular heißen die Felder aber so:


Code:

<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
       
        <div class="form-css"><dl>
        <dd> <input type="hidden" name="Kursort"
           
            <dl><div class=header> Persönliche Daten </div><div class=group>
                <dt>Name und Vorname :</dt>
                <dd><input type="text" name="FName" /></dd>
               
                <dt>Ihre Adresse:</dt>
                <dd><input type="text" name="FAdresse" /></dd>
                  <dt>Ihre E-Mail:</dt>
                <dd><input type="text" name="FMail" /></dd></div><input type="submit" value="Senden" class="btn"/>
      </form>

sry für die Formatierung!

zAPPEL 01.09.2007 23:20

Müsste so eigentlich funktionieren, ich sehe den Fehler zumindest auf die Schnelle nicht.. mach mal
print_r($_REQUEST); bzw. print_r($_POST) (da zeigt er dir das komplette Server-Request bzw. Post-Array an)

btw. sieht die HTML-Datei wirklich so aus und der Tag schließt nicht:
<dd> <input type="hidden" name="Kursort" ? Mach den mal zu.. außerdem ist das ein ziemlicher HTMl-Müll - sorry ;) Tu bitte mal alle <DL> <DD> <DT> und <DIVS> raus.. mach einfach nur ein <form> mit <inputs> und teste das ganze nochmal

lg

Chrisi99 01.09.2007 23:34

schas ;)

seltsam ist, dass die Variablen nicht übernommen werden, dafür wird jeder Datumseintrag doppelt in der Datenbank angelegt...

und ich habe mir gedacht, dass das sicher einfach geht *g*

also der Mailversand funktioniert perfekt und zuverlässig.

vielleicht hängts irgendwo zwischen Mail() und der Datenbank....

Code:

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
  foreach($value as $value_array)
  {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
  }
  }
  else
  {
  $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }
 
 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
 
  or die("Die Mail konnte nicht versendet werden. Bitte überprüfen Sie Ihre Eingabe!");
 header("Location: $strReturnhtml");
 exit;
}

aber das ist eh ganz einfach, weil das hab ich mir gestern zusammengesucht....

danke für deine Hilfe, dadurch bin ich schon weiter gekommen! :-)


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag