Zur Navigation

Mysql - versuche und hilfe

1 tobi (Gast)

hallo zusammen,

ich habe ein kontaktformular. die daten was eingetragen werden, bekomme ich per mail zu gesendet.

ich möchte jetzt:
1. dass ich die daten weiterhin via mail erhalte
2. dass diese in eine datenbank eingetragen werden
3. auf einer anderen seite angezeigt werden

da ich fast keinei erfahrung mt mysql etc habe, wäre ich über hilfe sehr erfreut und dankbar

vielen dank

also verbinden habe ich schon probiert, das klappt. und tabellen in der datenbank habe ich mittlerweile auch schon probert anzulegen. nur wo ich was wie angeben muß, da steig ich noch nicht durch.

mein code ist folgender:

<?php
session_start();
include "inc/kopf.php.inc";
include "inc/menu.php.inc";
$name="";
$email="";
$eintrag="";
$meldung="";

if (isset($_POST["sicherheitscode"])) {
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){



unset($_SESSION['captcha_spam']);


$name=addslashes(htmlspecialchars(trim($_POST["name"])));
$email=addslashes(htmlspecialchars(trim($_POST["email"])));
$eintrag=addslashes(htmlspecialchars(trim($_POST["eintrag"])));
$eintrag=ereg_replace("(\r\n|\n|\r)","<br>",$eintrag);
if($name=="") {
$meldung="<p>Bitte auf jeden Fall einen Namen eintragen.</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}
elseif (($email=="") OR (!ereg('^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.([a-zA-Z]){2,4})$', $email))) {
$meldung="<p>Bitte eine gültige eMail-Adresse hinterlegen.</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}
elseif ($eintrag=="") {
$meldung="<p>Bitte auf jeden Fall eine Nachricht verfassen.</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}
else
{

$meldung="<p>Nachricht wurde versandt!</p>\n";



$subject="Kontakt durch 123";
$mailcontent="Es wurde eine neue Nachricht über das Kontaktformular verschickt:\n\n";
$mailcontent.="Name: ".$name."\n\n";
$mailcontent.="eMail: ".$email."\n\n";
$mailcontent.="Eintrag: \n".$eintrag."\n\n";
$mailcontent=ereg_replace("(<br>)","\n",$mailcontent);
$mailcontent=str_replace("&quot;","\"",$mailcontent);
$mailcontent=str_replace("&amp;","&",$mailcontent);
$mailcontent=str_replace("&lt;","<",$mailcontent);
$mailcontent=str_replace("&gt;",">",$mailcontent);
$from_address="From: \"".$name."\" <".$email.">\n";
mail("123@123.de",$subject,$mailcontent,$from_address);


$name="";
$email="";
$eintrag="";
}



}else{
$meldung="<p>Der Sicherheitscode war falsch!</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}

}
echo "<div id=\"box1\">\n";
echo "<p><b><font size=\"+2\">Kontakt</font></b></p>\n";
if ($meldung != "") {echo $meldung;}

echo "<center>\n";
echo "<form name=\"kontaktform\" action=\"kontakt.php\" method=\"POST\">\n";
echo "<table width=\"10\">\n";
echo "<tr>\n";
echo "<td align=\"left\" colspan=\"2\">Alle Felder sind Pflichtfelder.</td>\n";
echo "</tr>\n";
echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
echo "<tr>\n";
echo "<td align=\"left\">Name:</td><td align=\"left\"><input name=\"name\" type=\"text\" id=\"name\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
echo " value=\"".$name."\"";
echo "></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td align=\"left\">eMail:</td><td align=\"left\"><input name=\"email\" type=\"text\" id=\"email\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
echo " value=\"".$email."\"";
echo "></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td align=\"left\" valign=\"top\">Nachricht:</td><td align=\"left\"><textarea name=\"eintrag\" cols=\"70\" rows=\"7\" id=\"eintrag\" class=\"eingabe\">".$eintrag."</textarea></td>\n";
echo "</tr>\n";
echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";

//eingefügt aus

www.stoppt-den-spam.info

echo "<tr>\n";
echo "<td align=\"left\"><img src=\"captcha/captcha.php\" border=\"0\" title=\"Sicherheitscode\"></td>\n";
echo "<td align=\"right\">Sicherheitscode vom Bild: <input type=\"text\" name=\"sicherheitscode\" size=\"5\"></td>\n";
echo "</tr>\n";
//hier ende des einfügens
echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
echo "</table>\n";
echo "<input name=\"formposten\" type=\"submit\" value=\"Abschicken\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"></center><br>\n";
echo "</form>\n";
echo "</center>\n";
include "aktualisierung.php";
echo "</div>\n";

include "inc/ende.php.inc";
?>

mfg tobi

21.12.2008 20:54

2 Jörg

Hallo tobi,

also verbinden habe ich schon probiert, das klappt. und tabellen in der datenbank habe ich mittlerweile auch schon probert anzulegen. nur wo ich was wie angeben muß, da steig ich noch nicht durch.

Eine Datenbank gibt es aber schon? Du musst dort eine Datenbanktabelle anlegen mit den Spalten für die Datenfelder, die du eintragen möchtest. Dem Formular zufolge werden Spalten für Name, Emailadresse und den Nachrichtentext benötigt, außerdem eien Spalte für eine ID als Schlüssel. Die Spalten für Name und Email sollten vom Typ VARCHAR sein, die Spalte für Text vom Typ TEXT und die ID vom Typ INT. Hast du PHPMyAdmin zur Verfügung? Damit geht es sicher etwas einfacher.

Hilfreich für das grundsätzliche Verständnis von MySQL sind die in diesem Thread aufgeführten Tutorials:

https://joergs-forum.de/mysql-tutorial-t-2029-1

22.12.2008 10:14

3 tobi (Gast)

hallo jörg,

vielen dank für deine informationen.
ja eine datenbank gibt es. und phpmyadmin ist auch vorhanden.

mit deinen infos werde ich mich jetzt mal an die arbeit machen.
falls probleme auftauchen, melde ich mich hier im forum wieder.

mfg tobi

22.12.2008 20:53

4 tobi (Gast)

hab mir jetzt in der datenbank folgende tabelle angelegt.

mein sql befehl:
CREATE TABLE `ttc-tobi-2`.`kontakt` (
`id` INT NOT NULL ,
`name` VARCHAR( 150 ) NOT NULL ,
`email` VARCHAR( 150 ) NOT NULL ,
`eintrag` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM

hoffe dies ist alles richtig soweit

23.12.2008 13:24

5 Jörg

Ich würde der Spalte id noch die Eigenschaft auto_increment zuweisen (in PHPMyAdmin unter "Extra") - dann musst du dich nicht um das Hochzählen kümmern.

23.12.2008 13:54

6 tobi (Gast)

ok danke habe ich gemacht, automatisch ist schon von vorteil

23.12.2008 14:05

7 tobi (Gast)

so ich hab jetzt mal einiges eingefügt, reicht dies oder muß ich noch mehr angaben machen?? wie du siehst anfänger halt.

<?php
session_start();
include "inc/kopf.php.inc";
include "inc/menu.php.inc";

$db = new mysqli('localhost', '123', 'pw123');
if(mysqli_connect_errno()) {
die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');

}
$name="";
$email="";
$eintrag="";
$meldung="";

if (isset($_POST["sicherheitscode"])) {
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){



unset($_SESSION['captcha_spam']);


$name=addslashes(htmlspecialchars(trim($_POST["name"])));
$email=addslashes(htmlspecialchars(trim($_POST["email"])));
$eintrag=addslashes(htmlspecialchars(trim($_POST["eintrag"])));
$eintrag=ereg_replace("(\r\n|\n|\r)","<br>",$eintrag);
if($name=="") {
$meldung="<p>Bitte auf jeden Fall einen Namen eintragen.</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}
elseif (($email=="") OR (!ereg('^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.([a-zA-Z]){2,4})$', $email))) {
$meldung="<p>Bitte eine gültige eMail-Adresse hinterlegen.</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}
elseif ($eintrag=="") {
$meldung="<p>Bitte auf jeden Fall eine Nachricht verfassen.</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}
else
{

$meldung="<p>Nachricht wurde versandt!</p>\n";



$subject="Kontakt durch 123.de";
$mailcontent="Es wurde eine neue Nachricht über das Kontaktformular verschickt:\n\n";
$mailcontent.="Name: ".$name."\n\n";
$mailcontent.="eMail: ".$email."\n\n";
$mailcontent.="Eintrag: \n".$eintrag."\n\n";
$mailcontent=ereg_replace("(<br>)","\n",$mailcontent);
$mailcontent=str_replace("&quot;","\"",$mailcontent);
$mailcontent=str_replace("&amp;","&",$mailcontent);
$mailcontent=str_replace("&lt;","<",$mailcontent);
$mailcontent=str_replace("&gt;",">",$mailcontent);
$from_address="From: \"".$name."\" <".$email.">\n";
mail("123@123.de",$subject,$mailcontent,$from_address);


$name="";
$email="";
$eintrag="";
}



}else{
$meldung="<p>Der Sicherheitscode war falsch!</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}

}

$insert = mysqli_query("INSERT INTO kontakt
(id, name, email, eintrag)
VALUES
('', '$name', '$email', '$eintrag')
or die(mysqli_error());

echo "<div id=\"box1\">\n";
echo "<p><b><font size=\"+2\">Kontakt</font></b></p>\n";
if ($meldung != "") {echo $meldung;}
echo "<center>\n";
echo "<form name=\"kontaktform\" action=\"kontakt.php\" method=\"POST\">\n";
echo "<table width=\"10\">\n";
echo "<tr>\n";
echo "<td align=\"left\" colspan=\"2\">Alle Felder sind Pflichtfelder.</td>\n";
echo "</tr>\n";
echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
echo "<tr>\n";
echo "<td align=\"left\">Name:</td><td align=\"left\"><input name=\"name\" type=\"text\" id=\"name\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
echo " value=\"".$name."\"";
echo "></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td align=\"left\">eMail:</td><td align=\"left\"><input name=\"email\" type=\"text\" id=\"email\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
echo " value=\"".$email."\"";
echo "></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td align=\"left\" valign=\"top\">Nachricht:</td><td align=\"left\"><textarea name=\"eintrag\" cols=\"70\" rows=\"7\" id=\"eintrag\" class=\"eingabe\">".$eintrag."</textarea></td>\n";
echo "</tr>\n";
echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";

//eingefügt aus www.stoppt-den-spam.info
echo "<tr>\n";
echo "<td align=\"left\"><img src=\"captcha/captcha.php\" border=\"0\" title=\"Sicherheitscode\"></td>\n";
echo "<td align=\"right\">Sicherheitscode vom Bild: <input type=\"text\" name=\"sicherheitscode\" size=\"5\"></td>\n";
echo "</tr>\n";
//hier ende des einfügens
echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
echo "</table>\n";
echo "<input name=\"formposten\" type=\"submit\" value=\"Abschicken\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"></center><br>\n";
echo "</form>\n";
echo "</center>\n";
include "aktualisierung.php";
echo "</div>\n";

include "inc/ende.php.inc";
?>

23.12.2008 14:10

8 Jörg

Um eine SQL-Injection zu verhindern, sollten von außen kommende Strings nicht direkt in eine Datenbankabfrage eingefügt werden. Hier empiehlt es sich, die Strings vorher mit mysql_real_escape_string() zu behandeln

$name=mysql_real_escape_string($_POST["name"]);
$email=mysql_real_escape_string($_POST["email"]);
$eintrag=mysql_real_escape_string($_POST["eintrag"]);

Wenn du auto_increment für id verwendest, kannst du dieses Feld beim INSERT aussparen - di id wird dann automatisch von MySQL vergeben

$insert = mysqli_query("INSERT INTO kontakt
(name, email, eintrag)
VALUES
('$name', '$email', '$eintrag')

23.12.2008 22:04 | geändert: 23.12.2008 22:06

9 tobi (Gast)

also müßte der code jetzt so aussehen:

<?php
session_start();
include "inc/kopf.php.inc";
include "inc/menu.php.inc";

$db = new mysqli('localhost', 'datenbankname', 'passwort');
if(mysqli_connect_errno()) {
die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');

}

$name="";
$email="";
$eintrag="";
$meldung="";

if (isset($_POST["sicherheitscode"])) {
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){



unset($_SESSION['captcha_spam']);


$name=addslashes(htmlspecialchars(trim($_POST["name"])));
$email=addslashes(htmlspecialchars(trim($_POST["email"])));
$eintrag=addslashes(htmlspecialchars(trim($_POST["eintrag"])));
$eintrag=ereg_replace("(\r\n|\n|\r)","<br>",$eintrag);
if($name=="") {
$meldung="<p>Bitte auf jeden Fall einen Namen eintragen.</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}
elseif (($email=="") OR (!ereg('^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.([a-zA-Z]){2,4})$', $email))) {
$meldung="<p>Bitte eine gültige eMail-Adresse hinterlegen.</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}
elseif ($eintrag=="") {
$meldung="<p>Bitte auf jeden Fall eine Nachricht verfassen.</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}
else
{

$meldung="<p>Nachricht wurde versandt!</p>\n";



$subject="Kontakt durch 123.de";
$mailcontent="Es wurde eine neue Nachricht über das Kontaktformular verschickt:\n\n";
$mailcontent.="Name: ".$name."\n\n";
$mailcontent.="eMail: ".$email."\n\n";
$mailcontent.="Eintrag: \n".$eintrag."\n\n";
$mailcontent=ereg_replace("(<br>)","\n",$mailcontent);
$mailcontent=str_replace("&quot;","\"",$mailcontent);
$mailcontent=str_replace("&amp;","&",$mailcontent);
$mailcontent=str_replace("&lt;","<",$mailcontent);
$mailcontent=str_replace("&gt;",">",$mailcontent);
$from_address="From: \"".$name."\" <".$email.">\n";
mail("123@123.de",$subject,$mailcontent,$from_address);


$name="";
$email="";
$eintrag="";
}



}else{
$meldung="<p>Der Sicherheitscode war falsch!</p>\n";
$name=$_POST["name"];
$email=$_POST["email"];
$eintrag=$_POST["eintrag"];
}

$name=mysql_real_escape_string($_POST["name"]);
$email=mysql_real_escape_string($_POST["email"]);
$eintrag=mysql_real_escape_string($_POST["eintrag"]);

$insert = mysqli_query("INSERT INTO kontakt
(name, email, eintrag)
VALUES
('$name', '$email', '$eintrag')
or die(mysqli_error());

}}

echo "<div id=\"box1\">\n";
echo "<p><b><font size=\"+2\">Kontakt</font></b></p>\n";
if ($meldung != "") {echo $meldung;}
echo "<center>\n";
echo "<form name=\"kontaktform\" action=\"kontakt.php\" method=\"POST\">\n";
echo "<table width=\"10\">\n";
echo "<tr>\n";
echo "<td align=\"left\" colspan=\"2\">Alle Felder sind Pflichtfelder.</td>\n";
echo "</tr>\n";
echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
echo "<tr>\n";
echo "<td align=\"left\">Name:</td><td align=\"left\"><input name=\"name\" type=\"text\" id=\"name\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
echo " value=\"".$name."\"";
echo "></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td align=\"left\">eMail:</td><td align=\"left\"><input name=\"email\" type=\"text\" id=\"email\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
echo " value=\"".$email."\"";
echo "></td>\n";
echo "</tr>\n";

echo "<tr>\n";
echo "<td align=\"left\" valign=\"top\">Nachricht:</td><td align=\"left\"><textarea name=\"eintrag\" cols=\"70\" rows=\"7\" id=\"eintrag\" class=\"eingabe\">".$eintrag."</textarea></td>\n";
echo "</tr>\n";
echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";

//eingefügt aus www.stoppt-den-spam.info
echo "<tr>\n";
echo "<td align=\"left\"><img src=\"captcha/captcha.php\" border=\"0\" title=\"Sicherheitscode\"></td>\n";
echo "<td align=\"right\">Sicherheitscode vom Bild: <input type=\"text\" name=\"sicherheitscode\" size=\"5\"></td>\n";
echo "</tr>\n";
//hier ende des einfügens
echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
echo "</table>\n";
echo "<input name=\"formposten\" type=\"submit\" value=\"Abschicken\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"></center><br>\n";
echo "</form>\n";
echo "</center>\n";
include "aktualisierung.php";
echo "</div>\n";

include "inc/ende.php.inc";
?>

24.12.2008 18:46

10 Jörg

Die Syntax ist hier noch nicht ganz korrekt:

$insert = mysqli_query("INSERT INTO kontakt
(name, email, eintrag)
VALUES
('$name', '$email', '$eintrag')
or die(mysqli_error());

}}

So wäre es denke ich passender:

mysqli_query("INSERT INTO kontakt
(name, email, eintrag)
VALUES
('$name', '$email', '$eintrag')")
or die(mysqli_error());

}

Ansonsten einfach mal ausprobieren. Sofern die Fehlerausgabe eingeschaltet ist, wird PHP dich auf Fehler im Script hinweisen.

25.12.2008 20:17