Ich habe versucht Anzahl der Threads hier ist SO, um dies zu machen, aber keiner hilft mir bisher oder ich vermisse etwas hier.Drei Eingabedateien Feld in einem Formular und speichern in Datenbank
So habe ich ein Formular mit drei Eingabefeldern .. Ich weiß, ich kann multiple
auf einem Feld verwenden, aber ich brauche es so. Hier ist einfache Version (ein Teil des Feldes, um gelöscht zu machen Quelle kompaktere für die Buchung hier)
HTML-Teil:
<form class="form-horizontal" name="form-horizontal" action="" method="post" role="form" enctype="multipart/form-data" >
<div class="form-group">
<label class="control-label col-sm-2" for="upload_one">Upload_one: </label>
<div class="col-sm-10">
<input type="file" class="form-control" name="file[]" id="upload_one">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="upload_two">Upload_two:</label>
<div class="col-sm-10">
<input type="file" class="form-control" name="file[]" id="upload_two">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="upload_three">Upload_three: </label>
<div class="col-sm-10">
<input type="file" class="form-control" name="file[]" id="upload_three" multiple>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-4">
<input type="submit" name="add" value="Add New Lesson" class="btn btn-primary btn-block">
</div>
</div>
</form>
Und der PHP Teil
if (isset($_POST["add"])) {
$pdo = Database::connect();
$msg = "";
$permitted = array('application/vnd.ms-excel', 'application/pdf', 'application/msword', 'image/gif', 'image/jpeg', 'image/jpg', 'image/png', 'image/bmp');
if (count($_FILES["file"]) > 0) {
$folderName = "uploads/";
$sql = "INSERT INTO upload (upload_one, upload_two, upload_three, upload_size, upload_type)
VALUES (:upload_one, :upload_two, :upload_three, :upload_size, :upload_type)";
$stmt = $pdo->prepare($sql);
foreach (array_keys($_FILES) as $file) {
for ($i = 0; $i < count($_FILES[$file]["name"]); $i++) {
if ($_FILES[$file]["name"][$i] <> "") {
if ($permitted) {
$fileSize = $_FILES[$file]["size"][$i];
$fileType = $_FILES[$file]["type"][$i];
$fileName = $_FILES[$file]["name"][$i];
$tmpName = $_FILES[$file]["tmp_name"][$i];
$ext = substr(strrchr($fileName, "."), 1);
$_FILES[$file]["name"][$i] = rand(10000, 990000) . '-' .$fileName;
$filepath = $folderName . $_FILES[$file]["name"][$i];
if (!move_uploaded_file($tmpName, $filepath)) {
$emsg .= "Error while uploading file - <strong>" . $_FILES[$file]["name"][$i] . "</strong>. Please try again. <br>";
} else {
$smsg .= "The file <strong>" . $_FILES[$file]["name"][$i] . "</strong> is added successfully. <br>";
try {
$stmt->bindValue(":upload_one", $_FILES[$file]["name"][$i], PDO::PARAM_STR);
$stmt->bindValue(":upload_two", $_FILES[$file]["name"][$i], PDO::PARAM_STR);
$stmt->bindValue(":upload_three", $_FILES[$file]["name"][$i], PDO::PARAM_STR);
$stmt->bindValue(":upload_size", $fileSize, PDO::PARAM_STR);
$stmt->bindValue(":upload_type", $fileType, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->rowCount();
if ($result > 0) {
// file uplaoded successfully.
} else {
// failed to insert into database.
}
} catch (Exception $ex) {
$emsg .= "<strong>" . $ex->getMessage() . "</strong>. <br>";
}
}
} else {
$emsg .= "This file <strong>" . $_FILES[$file]["name"][$i] . "</strong> isn't permitted. <br>";
}
}
}
$msg .= (strlen($smsg) > 0) ? successMessage($smsg) : "";
$msg .= (strlen($emsg) > 0) ? errorMessage($emsg) : "";
} }
else {
echo '';
}
Als ich hinzufügen Hit Knopf es ist jedes Eingabefeld in einer Zeile speichern und die Datei von diesem Eingang ist dreimal. Zum Beispiel:
`input file_1` have doc1.docx
`input file_2` have doc2.docx
`input file_3` have doc3.docx
Dies wird dies in der Datenbank erzeugen:
können Sie sehen, wie jede Datei 3-mal für jede Eingabedatei gespeichert wird, anstatt jede Datei nur eine in seiner Kolumne zu sein ..
Die Art und Weise, wie Sie Ihre Logik aufbauen, bedeutet, dass dies geschieht. Loop File 1 fügt eine Zeile mit demselben Namen in alle 3 Felder ein. Datei 2 Wiederholen, Datei 3 Wiederholen, Schleife beenden – scottevans93
Es gibt 2 Methoden, um das zu erreichen, entweder alle 3 Dateien in derselben Zeile speichern oder jede Datei hat ihre eigene Zeile. Welcher wäre für Ihren Anwendungsfall besser geeignet? – scottevans93
Ich möchte sie in derselben Zeile speichern. Nur jede Datei in seiner Spalte .. Wie auf dem Bild aber 'upload_1' um Datei_1 zu halten,' upload_2' um Datei2 zu halten .. – Select