Hi
Ich bin dabei mir PDO's zur Gemüte zu führen.
Ich hänge momentan bei einer Sache.
Ich war es "gewohnt" bei einer Datenbankoperation, die Datenbankverbindung über eine Funktion in einer separaten include - Datei aufzubauen und dann in einer weiteren Seite mit dem Formular und Script die Operationen, wie INSERT vorzunehmen.
Das klappt aber bei PDO nicht, weil die aufgerufene Seite das Datenbankobjekt, dass die Funktion kreiert hat und die Variablen nicht kennt und vice versa.
Also:
Datei: ikenndifunctions.inc
und die Formulardatei kontaktform3.inc:
Wie mache ich's richtig ?
Vielen Dank
phpels
Ich bin dabei mir PDO's zur Gemüte zu führen.
Ich hänge momentan bei einer Sache.
Ich war es "gewohnt" bei einer Datenbankoperation, die Datenbankverbindung über eine Funktion in einer separaten include - Datei aufzubauen und dann in einer weiteren Seite mit dem Formular und Script die Operationen, wie INSERT vorzunehmen.
Das klappt aber bei PDO nicht, weil die aufgerufene Seite das Datenbankobjekt, dass die Funktion kreiert hat und die Variablen nicht kennt und vice versa.
Also:
Datei: ikenndifunctions.inc
PHP-Code:
<?php
function mysqlconnect()
{
$strDbLocation = 'mysql:dbname=xxx;host=localhost';
$strDbUser = 'yyy';
$strDbPassword = 'zzzzzzzz';
try
{
$objDb = new PDO($strDbLocation, $strDbUser, $strDbPassword);
}
catch (PDOException $e)
{
echo 'Fehler beim Öffnen der Datenbank: ' . $e->getMessage();
die();
}
}
PHP-Code:
<script language="php">
include("ikenndifunctions3.inc.php");
// Prüfen, ob sich die Seite selbst aufgerufen hat
if ( isset($_POST["do"]) && $_POST["do"] == "insert" )
{
// Die Seite hat sich selbst aufgerufen
// Pflichtfeldkontrolle
$error_msg = "";
if ( $_POST["Vorname"] == "" )
{
$error_msg = "Bitte geben Sie einen Vornamen an.<br>";
}
if ( $_POST["Zuname"] == "" )
{
$error_msg .= "Bitte geben Sie einen Zunamen an.<br>";
}
if ( $_POST["email"] == "" )
{
$error_msg .= "Bitte geben Sie eine email Adresse an.<br>";
}
if ( $_POST["Anliegen"] == "" )
{
$error_msg .= "Bitte geben Sie ein Anliegen ein .<br>";
}
// CAPTCHA
session_start();
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);
}
else{
$error_msg .= "Der Sicherheitscode ist falsch.<br>";
}
// End CAPTCHA
if ( $error_msg == "")
{
// Alles o.k.
$strVorname = $_POST["Vorname"];
$strZuname = $_POST["Zuname"];
$strAdresse = $_POST["frmAdresse"];
$strPLZ = $_POST["frmPLZ"];
$strOrt = $_POST["frmOrt"];
$strTelNr = $_POST["frmTelNr"];
$stremail = $_POST["email"];
$strAnliegen = $_POST["Anliegen"];
// Datenbank-Zugriff
mysqlconnect();
}
// INSERT
$dbInsertikenndi = $objDb->prepare("INSERT INTO ikenndi (Vorname, Zuname, frmAdresse, frmPLZ, frmOrt, frmTelNr, email, Anliegen)
VALUES (:Vorname, :Zuname, :frmAdresse, :frmPLZ, :frmOrt, :frmTelNr, :email, :Anliegen)");
$dbInsertikenndi->bindParam('Vorname', $strVorname);
$dbInsertikenndi->bindParam('Zuname', $strZuname);
$dbInsertikenndi->bindParam('frmAdresse', $strAdresse);
$dbInsertikenndi->bindParam('frmPLZ', $strPLZ);
$dbInsertikenndi->bindParam('frmOrt', $strOrt);
$dbInsertikenndi->bindParam('frmTelNr', $strTelNr);
$dbInsertikenndi->bindParam('email', $stremail);
$dbInsertikenndi->bindParam('Anliegen', $strAnliegen);
// In die Datenbank eintragen
$dbInsertikenndi->execute();
if ( ! $dbInsertikenndi )
{
die("Konnte den Datensatz nicht eintragen: " . mysql_error() );
}
// Wechsel auf Vorschau
header("Location: tnx.php");
die;
}
</script>
<!-- <form method="POST" action="phpmailer/phpmailer-fe.php" style="color:#FFCC00; font-weight:bold">-->
<span class="errormessage">
<?php
if ( $error_msg != "")
{
echo $error_msg;
}
?>
</span>
<span style="color:#FFCC00" align="center">
<h1>KONTAKT2</h1>
<h2>Bitte nehmen Sie über folgendes Formular Kontakt zu mir auf.</h2>
<h3>Durch die serverseitige Verarbeitung des Formulars, wird der Versuch Dritter unterbunden auf sensible Daten zuzugreifen. </h3>
<br /><br />
<form action="<?php echo $_POST["PHP_SELF"]; ?>" method="POST" >
<input type="hidden" value="kontakt3.html" name="referer">
<table style="color:#FFCC00; font-weight:bold;">
</span>
<tr>
<td style="font-weight:bold;">* = Eingabe erforderlich</td><td> </td>
</tr>
<tr>
<td>Vorname*:</td><td> <input type="text" name="Vorname" value="<?php echo htmlspecialchars($_POST['Vorname']); ?>" size="40" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
</tr>
<tr>
<td>Zuname*:</td><td> <input type="text" name="Zuname" value="<?php echo htmlspecialchars($_POST['Zuname']); ?>" size="40" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
</tr>
<tr>
<td>Adresse:</td><td> <input type="text" name="frmAdresse" value="<?php echo htmlspecialchars($_POST['frmAdresse']); ?>" size="80" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
</tr>
<tr>
<td>PLZ:</td><td> <input type="text" name="frmPLZ" value="<?php echo htmlspecialchars($_POST['frmPLZ']); ?>" size="20" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
</tr>
<tr>
<td>Ort:</td><td> <input type="text" name="frmOrt" value="<?php echo htmlspecialchars($_POST['frmOrt']); ?>" size="40" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
</tr>
<tr>
<td>Telefonnummer:</td><td> <input type="text" name="frmTelNr" value="<?php echo htmlspecialchars($_POST['frmTelNr']); ?>" size="40" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
</tr>
<tr>
<td>Email*:</td><td> <input type="text" name="email" value="<?php echo htmlspecialchars( $_POST['email']); ?>" size="40" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
</tr>
<tr>
<td>Anliegen*:</td><td> <textarea rows="4" name="Anliegen" value="<?php echo htmlspecialchars($_POST['Anliegen']); ?>" cols="40"style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></textarea></td>
</tr>
<tr>
<td align="left" width="10%"><input type="hidden" name="do" value="insert"></td>
</tr>
</table>
Enter security code:<br />
<input type="text" name="sicherheitscode" size="5"><br />
<br />
Sollten Sie den Code nicht lesen können, drücken sie in ihrem Browser auf "reload" um ihre Eingaben zu behalten und einen anderen Code angezeigt zu bekommen.<br />
<p><input type="submit" value="Absenden" name="submit"><input type="reset" value="Reset" name="B2"></p>
<img src="../captcha/captcha.php" border="0" title="Sicherheitscode"><br />
<br />
</form>
Vielen Dank
phpels
Kommentar