2014-12-03 25 views
0

我對PHP是全新的,但必須瞭解我能在工作中真正快速找到什麼東西。我試圖創建一個表單,然後將答案保存到數據庫中的一行和服務器上的圖像中。下面的代碼是來自網絡上的教程等與我的補充在那裏。除了在數據庫中保存圖片網址之外,我想我還有90%的存在。我猜測代碼中的「foreach」部分有問題。多個文件上傳字段URL到SQL數據庫使用PHP

我想實現的是將每個文件上傳URL保存在數據庫的一列中。目前我只創建了imageurl字段,但我猜我會需要imageurl2等我試圖尋找下一部分,但無法找到它。我假設我真正需要實現的是代碼調用所有多個文件上傳URL(數組)的方法,然後在插入後執行插入操作?

HTML代碼:

<form action="form.php" method="post" enctype="multipart/form-data"> 
 
    <label>Date:</label> 
 
    <br> 
 
    <input name="date" type="date"> 
 
    <label>Name:</label> 
 
    <br> 
 
    <select name="visitor"> 
 
     <option value="name1">Name One</option> 
 
     <option value="name2">Name Two</option> 
 
    </select> 
 
    <label>Pub:</label> 
 
    <br> 
 
    <select name="pub"> 
 
     <option value="pubOne">Pub One</option> 
 
     <option value="pubTwo".Pub Two</option> 
 
    </select> 
 
    <label>Comment:</label> 
 
    <br> 
 
    <textarea cols="30" rows="5" name="comment"></textarea> 
 
    <label>Upload Image:</label> 
 
    <br> 
 
    <input name="fileToUpload[]" type="file" multiple=""> 
 
    <input class="formbtn" type="submit" value="Submit"> 
 
</form>

PHP代碼 - 我已經更換了數據庫連接的細節與 「XXX」 但是我對我的代碼連接細

<?php 
 
print_r($_POST); 
 
$servername = 'xxx'; 
 
$username = 'xxx'; 
 
$password = 'xxx'; 
 
$dbname = 'xxx'; 
 

 
// Create connection to server 
 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
 

 
// Check connection 
 
if (!$conn) { 
 
    die("Connection failed: " . mysqli_connect_error()); 
 
} 
 
echo "<div><center><h1>Connected successfully</h1></center></div>"; 
 

 
// Get all the values from input 
 
    $date = $_POST['date']; 
 
    $visitor = $_POST["visitor"]; 
 
    $pub = $_POST['pub']; 
 
\t $comment = $_POST['comment']; 
 

 
date_default_timezone_set('UTC'); 
 
if (!file_exists("uploads/" .date('Y') . '/' .date('m') . '/')) { 
 
    mkdir("uploads/" .date('Y') . '/' .date('m') . '/', 0777, true); 
 
} 
 

 
require_once('ImageManipulator.php'); 
 

 
foreach($_FILES['fileToUpload']['tmp_name'] as $key => $tmp_name) { 
 
\t 
 
\t if ($_FILES['fileToUpload']['error'][$key] > 0) { 
 
    // Insert data into table 
 
\t \t $sql = "INSERT INTO visits (date, visitor, pub, comment) 
 
\t \t VALUES ('$date', '$visitor', '$pub', '$comment')"; 
 
\t } else { 
 

 
\t $image_mime = image_type_to_mime_type(exif_imagetype($_FILES['fileToUpload']['tmp_name'][$key])); 
 
\t $allowedFiles = array("image/png","image/jpeg","image/gif"); 
 
\t echo "File type:" . $image_mime . "<br>"; 
 
\t if(!in_array($image_mime, $allowedFiles)){ 
 
    echo "The picture is not allowed.<br>"; 
 
\t } else 
 
\t { 
 
     $newNamePrefix = time() . '_'; 
 
     $manipulator = new ImageManipulator($_FILES['fileToUpload']['tmp_name'][$key]); 
 
     // resizing to 200x200 
 
     $newImage = $manipulator->resample(200, 200); 
 
     // saving file to uploads folder 
 
\t \t $target_dir = "uploads/" .date('Y') . '/' .date('m') . '/'; 
 
\t \t $target_file = $target_dir .date('Ymd-his') . '-' . $visitor . '-' . basename($_FILES["fileToUpload"]["name"][$key]); 
 
     $manipulator->save($target_file); 
 
\t \t // Insert data into table 
 
\t \t $sql = "INSERT INTO visits (date, visitor, pub, comment, imageurl) VALUES ('$date', '$visitor', '$pub', '$comment', '$target_file')"; 
 
\t \t echo 'Image resized and uploaded!<br>'; 
 
    } 
 
} 
 
} 
 

 
if ($conn->query($sql) === TRUE) { 
 
    echo "<p>New record created successfully</p>"; 
 
} else { 
 
    echo "Error: " . $sql . "<br>" . $conn->error; 
 
} 
 

 
?>

+0

它給你什麼錯誤? – 2014-12-03 09:04:08

+0

嗨Josan,沒有錯誤 - 它只保存圖像的URL在SQL領域的一個 - 我怎樣才能保存每個網址在另一個領域?所有圖像都被保存到服務器。 – KishVaja 2014-12-03 16:16:23

回答

0

更新

<form method="post" action="upload.php" enctype="multipart/form-data"> 
    <input name="filesToUpload[]" id="filesToUpload" type="file" multiple="" /> 
</form> 

if(count($_FILES['uploads']['filesToUpload'])) { 
    foreach ($_FILES['uploads']['filesToUpload'] as $file) { 

     //do your upload stuff here 
     echo $file; 

    } 
} 

PHP創建一個與給定的輸入的名字上傳的文件的數組。該變量將始終是PHP中的數組。

+0

回答已更新! – 2014-12-03 10:32:07

+0

嗨,我試過,但它沒有工作 - 文件被上傳到服務器甚至停止工作。 – KishVaja 2014-12-03 16:17:25

相關問題