WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 01.09.2007, 20:41   #1
Chrisi99
Inventar
 
Benutzerbild von Chrisi99
 
Registriert seit: 22.12.2002
Alter: 39
Beiträge: 2.644

Mein Computer

Chrisi99 eine Nachricht über ICQ schicken
Standard [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
____________________________________
Der Unterschied zwischen Theorie und Praxis ist, das es in der Theorie keinen Unterschied zwischen Theorie und Praxis gibt, in der Praxis aber schon.

Wer schreibt, der bleibt!
Chrisi99 ist offline   Mit Zitat antworten
Alt 01.09.2007, 21:25   #2
Chrisi99
Inventar
 
Benutzerbild von Chrisi99
 
Registriert seit: 22.12.2002
Alter: 39
Beiträge: 2.644

Mein Computer

Chrisi99 eine Nachricht über ICQ schicken
Standard

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?


____________________________________
Der Unterschied zwischen Theorie und Praxis ist, das es in der Theorie keinen Unterschied zwischen Theorie und Praxis gibt, in der Praxis aber schon.

Wer schreibt, der bleibt!
Chrisi99 ist offline   Mit Zitat antworten
Alt 01.09.2007, 21:31   #3
reemrev
Inventar
 
Registriert seit: 31.01.2000
Beiträge: 1.706

Mein Computer

Standard

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
reemrev ist offline   Mit Zitat antworten
Alt 01.09.2007, 21:39   #4
Chrisi99
Inventar
 
Benutzerbild von Chrisi99
 
Registriert seit: 22.12.2002
Alter: 39
Beiträge: 2.644

Mein Computer

Chrisi99 eine Nachricht über ICQ schicken
Standard

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();!
____________________________________
Der Unterschied zwischen Theorie und Praxis ist, das es in der Theorie keinen Unterschied zwischen Theorie und Praxis gibt, in der Praxis aber schon.

Wer schreibt, der bleibt!
Chrisi99 ist offline   Mit Zitat antworten
Alt 01.09.2007, 22:18   #5
zAPPEL
Inventar
 
Registriert seit: 07.11.2001
Ort: Perchtoldsdorf
Alter: 45
Beiträge: 2.085

Mein Computer

Standard

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
____________________________________
„Das menschliche Gehirn ist eine großartige Sache.
Es funktioniert vom Moment der Geburt an – bis zu
dem Zeitpunkt, wo du aufstehst, um eine Rede zu halten.“ Mark Twain

"Windle shook his head sadly. Four exclamation marks, the sure sign of an insane mind" Reaper Man, Terry Pratchett
zAPPEL ist offline   Mit Zitat antworten
Alt 01.09.2007, 22:24   #6
Chrisi99
Inventar
 
Benutzerbild von Chrisi99
 
Registriert seit: 22.12.2002
Alter: 39
Beiträge: 2.644

Mein Computer

Chrisi99 eine Nachricht über ICQ schicken
Standard

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

wie übergebe ich ihm denn die Variablen in die Query?
____________________________________
Der Unterschied zwischen Theorie und Praxis ist, das es in der Theorie keinen Unterschied zwischen Theorie und Praxis gibt, in der Praxis aber schon.

Wer schreibt, der bleibt!
Chrisi99 ist offline   Mit Zitat antworten
Alt 01.09.2007, 22:31   #7
zAPPEL
Inventar
 
Registriert seit: 07.11.2001
Ort: Perchtoldsdorf
Alter: 45
Beiträge: 2.085

Mein Computer

Standard

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
____________________________________
„Das menschliche Gehirn ist eine großartige Sache.
Es funktioniert vom Moment der Geburt an – bis zu
dem Zeitpunkt, wo du aufstehst, um eine Rede zu halten.“ Mark Twain

"Windle shook his head sadly. Four exclamation marks, the sure sign of an insane mind" Reaper Man, Terry Pratchett
zAPPEL ist offline   Mit Zitat antworten
Alt 01.09.2007, 23:08   #8
Chrisi99
Inventar
 
Benutzerbild von Chrisi99
 
Registriert seit: 22.12.2002
Alter: 39
Beiträge: 2.644

Mein Computer

Chrisi99 eine Nachricht über ICQ schicken
Standard



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!
____________________________________
Der Unterschied zwischen Theorie und Praxis ist, das es in der Theorie keinen Unterschied zwischen Theorie und Praxis gibt, in der Praxis aber schon.

Wer schreibt, der bleibt!
Chrisi99 ist offline   Mit Zitat antworten
Alt 01.09.2007, 23:20   #9
zAPPEL
Inventar
 
Registriert seit: 07.11.2001
Ort: Perchtoldsdorf
Alter: 45
Beiträge: 2.085

Mein Computer

Standard

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
____________________________________
„Das menschliche Gehirn ist eine großartige Sache.
Es funktioniert vom Moment der Geburt an – bis zu
dem Zeitpunkt, wo du aufstehst, um eine Rede zu halten.“ Mark Twain

"Windle shook his head sadly. Four exclamation marks, the sure sign of an insane mind" Reaper Man, Terry Pratchett
zAPPEL ist offline   Mit Zitat antworten
Alt 01.09.2007, 23:34   #10
Chrisi99
Inventar
 
Benutzerbild von Chrisi99
 
Registriert seit: 22.12.2002
Alter: 39
Beiträge: 2.644

Mein Computer

Chrisi99 eine Nachricht über ICQ schicken
Standard

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!
____________________________________
Der Unterschied zwischen Theorie und Praxis ist, das es in der Theorie keinen Unterschied zwischen Theorie und Praxis gibt, in der Praxis aber schon.

Wer schreibt, der bleibt!
Chrisi99 ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:26 Uhr.


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