Dateinamen in MYSQL-Datenbank schreiben
Frank Kümmerle
- php
0 shn0 Frank Kümmerle0 shn0 rob0 Sven Rautenberg0 rob
Hallo,
ich habe ein Formular in dem ich mehrer Daten eingebe und auch Dateinamen auswähle. Danach möchte ich alles in meine Datenbank schreiben. Ich möchte keinen Dateiupload, sondern nur den Dateinamen abspeichern.
Hier ein Auszug aus meinem Formular:
<form action="xyz.php" method="post" class="normal" enctype="multipart/formdata">
<input type="text" name="B_Bilderpfad" size="75" class="normal" />
<input type="text" name="B_Anzahl" size="5" class="normal" />
<input type="file" name="B_Bild1" size="50" class="normal" />
<input type="submit" value="Hinzufügen" name="Hinzufuegen" alt="Hinzufügen" border="0" class="normal" />
</form>
Und nun der Auszug aus der Datei xyz.php:
$SQLString = "INSERT INTO Bilder(Bilderpfad,Anzahl,Bild1)
VALUES(
'$_POST[B_Bilderpfad]',
'$_POST[B_Anzahl]',
$_FILES[B_Bild1]['name'],
)";
Leider kommen in Datenbank nur die Daten mit $_POST an. Die Daten aus dem Formlarfeld mit dem Type="file" kommen nicht in der Datenbank an.
Kann mir jemand weiterhelfen?
Gruss
Frank
Servus,
<form action="xyz.php" method="post" class="normal" enctype="multipart/formdata">
Es heisst "multipart/form-data" mit Bindestrich.
Aber wenn du nur den Dateinamen willst, ohne die Datei hochzuladen, lass den enctype komplett weg. Der Dateiname wird dann mit POST uebermittelt (also in deinem Fall $_POST['B_Bild1']), und du ersparst dir/dem User unnoetigen Traffic.
Gruss
Patrick
Hallo Patrick,
erst einmal danke für deine schnelle Antwort.
Aber wenn du nur den Dateinamen willst, ohne die Datei hochzuladen, lass den enctype komplett weg. Der Dateiname wird dann mit POST uebermittelt (also in deinem Fall $_POST['B_Bild1']), und du ersparst dir/dem User unnoetigen Traffic.
Ich habe den enctype entfernt und dann das Ganze mit '$_POST[B_Bild1]' versucht, doch leider kommt immer noch nichts in der Datenbank an. Woran liegt es?
Gruss
Frank
Servus,
moeglicherweise ist vorhin beschriebenes Verhalten auch browserabhaengig (FF sendet mir file-inputs ohne enctype jedenfalls als POST).
Was kommt denn ueberhaupt am Server an ( print_r($_POST); )?
Gruss
Patrick
Guten Morgen Patrick,
moeglicherweise ist vorhin beschriebenes Verhalten auch browserabhaengig (FF sendet mir file-inputs ohne enctype jedenfalls als POST).
Was kommt denn ueberhaupt am Server an ( print_r($_POST); )?
Ich benutze eigentlich ausschließlich den Firefox in der aktuellsten Version.
Server erhielt folgende Daten:
POST: Array
(
[B_Bilderpfad] => zzz/xxx/ausflug/
[B_Anzahl] => 0
[B_Bild1] =>
}
Die beiden vorher angegebenen Felder werden genau richtig übernommen, aber B_Bild1 bleibt leer.
Gruss
Frank
Hi!
Ich habe den enctype entfernt und dann das Ganze mit '$_POST[B_Bild1]' versucht, doch leider kommt immer noch nichts in der Datenbank an. Woran liegt es?
Das liegt vermutlich daran, daß $_POST[B_Bild1] eine leere Variable ist.
Die hochgeladene Datei bzw. deren Namen bekommst du mit $_FILES['userfile']['tmp_name'] und sie liegt als temporäre Datei im PHP-Upload-Ordner. Im Normalfall solltest du sie mit move_uploaded_file() verschieben.
move_uploaded_file( $_FILES['userfile']['tmp_name'], $_FILES['userfile']['name'] );
Außerdem meinst du sicherlich $_POST['B_Bild1'] und nicht $_POST[B_Bild1].
Und dann ist dieser Artikel für dich sicherlich noch interessant ("Ist es sinnvoll, Bilder in einer Datenbank abzulegen?" aus de.comp.lang.php.* FAQ):
http://www.php-faq.de/q/q-db-blob.html
Schöner Gruß,
rob
Moin!
Ich habe den enctype entfernt und dann das Ganze mit '$_POST[B_Bild1]' versucht, doch leider kommt immer noch nichts in der Datenbank an. Woran liegt es?
Das liegt vermutlich daran, daß $_POST[B_Bild1] eine leere Variable ist.
Die hochgeladene Datei bzw. deren Namen bekommst du mit $_FILES['userfile']['tmp_name'] und sie liegt als temporäre Datei im PHP-Upload-Ordner.
Das gilt eben nicht, wenn der enctype nicht gesetzt wird. Dann wird auch keine Datei hochgeladen, sondern nur der Dateiname als ganz normales POST-Feld verschickt.
- Sven Rautenberg
Das gilt eben nicht, wenn der enctype nicht gesetzt wird. Dann wird auch keine Datei hochgeladen, sondern nur der Dateiname als ganz normales POST-Feld verschickt.
Oh... Sorry. Ja. Hab das Posting wohl nicht richtig gelesen. Ich sehe jetzt erst, daß es ja nur um den Dateinamen geht. Dann ist mein Link, warum es nicht sinnvoll ist, Bilder in eine Datenbank zu setzen, natürlich auch hinfällig.
So, jetzt gehe ich mal ins Bett. Die dritte Nacht, die ich kaum schlafe. Mit fallen schon fast die Augen zu.
Gute Nacht, Forum.