Formular > MySQL mit Dateiupload
Steffen
- php
Hallo,
ich bin Anfänger in PHP und hoffe, ich habe ein ähnliches Thema im Forum nicht übersehen.
Ich würde gerne ein Formular realisieren, inklusive einem Datei-Upload. Ich habe hierzu schon ein Tutorial unter http://www.php-mysql-tutorial.com/php-mysql-upload.php gefunden, was meinen Ansprüchen taugt.
Nun müsste ich dieses Formular um drei Eingabefelder (rubrikid, ueberschrift, textfeld) erweitern, nur leider verstehe ich nicht, wo in diesem Formular diese Variablen eingetragen werden müssen.
Schreibe ich die Variablen zusätzlich in $query werden nur die Daten des upload-Feldes in die Datenbank eingetragen. Ich hatte allerdings schon ein bestehendes Skript welches die Daten der drei Eingabefelder erfolgreich in die Datenbank eingetragen hat.
Mein Problem ist also, dass ich eigentlich beide Skripte nur zusammenführen müsste. Wo genau muss ich denn die weiteren Felder in das Skript implementieren? Hat jemand einen Tipp für mich!?
Danke
Steffen
<anbei das Skript>
if(isset($_POST['upload']))
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$fp = fopen($tmpName, 'r');
$content = fread($fp, $fileSize);
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}
$query = "INSERT INTO newsflash (rubrikid, ueberschrift, textfeld, name, size, type, content ) ".
"VALUES ('$rubrikid','$ueberschrift','$textfeld','$fileName', '$fileSize', '$fileType', '$content')";
mysql_query($query) or die('Error, query failed');
echo "<br>File $fileName uploaded<br>";
}
Nun müsste ich dieses Formular um drei Eingabefelder (rubrikid, ueberschrift, textfeld) erweitern, nur leider verstehe ich nicht, wo in diesem Formular diese Variablen eingetragen werden müssen.
Mache nie den zweiten vor dem ersten Schritt! Zuerst muß man nämlich das Formular erweitern um die Eingabefelder, also sowas
<input type="text" name="rubrikid" value="42">
<input type="text" name="ueberschrift" value="42">
<textarea name="textfeld"></textarea>
http://de.selfhtml.org/html/formulare/eingabe.htm
Schreibe ich die Variablen zusätzlich in $query werden nur die Daten des upload-Feldes in die Datenbank eingetragen.
Du mußt die schon auch abfragen:
http://www.php.net/manual/en/reserved.variables.post.php
Erst dann kansst du die in dein Statement einbauen.
~JJ
Hallo
ich bin Anfänger in PHP und hoffe, ich habe ein ähnliches Thema im Forum nicht übersehen.
$fp = fopen($tmpName, 'r');
$content = fread($fp, $fileSize);
$content = addslashes($content);
Nein, es ist überhaupt keine gute Idee, den content mit irgendwelchen völlig überflüssigen Escape-Zeichen zu verunstalten.
fclose($fp);
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
addslashes ist für Speichern in Datenbanken ein ungeeigneter Maskierungsmechanismus. Diese Stelle hier ist zudem die falsche Stelle.
$query = "INSERT INTO newsflash (rubrikid, ueberschrift, textfeld, name, size, type, content ) ".
"VALUES ('$rubrikid','$ueberschrift','$textfeld','$fileName', '$fileSize', '$fileType', '$content')";
Hier bringst Du den Inhalt diverser Variablen in einen SQL-Kontext, speziell für MySQL.
mysql_query($query) or die('Error, query failed');
Da Du die verbreiteten, aber auch veralteten mysql_*-Funktionen verwendest, wäre mysql_real_escape_string
die passende Funktion. Ich empfehle jedoch die Verwendung der verbesserten MySQL-Erweiterung.
Freundliche Grüße
Vinzenz