2014-10-13 5 views
2

Я делаю форму, через которую пользователь может загружать несколько изображений. Когда пользователь загружает изображения, они сохраняются в папке сервера. Все работает отлично до сих пор, но когда я пытаюсь сохранить путь к изображениям в базе данных, вместо этого путь, то оба изображения будут сохраняться только в одной строке. Я хочу, чтобы путь каждого изображения должен храниться в другой строке.Загрузите несколько изображений и сохраните их путь в базе данных

<form action="admin_insert_property_images.php" method="post" enctype="multipart/form-data"> 
    <div class="form-group"> 
     <label class="col-md-3 control-label">Upload Image:</label> 
      <div class="col-md-8"> 
       <input type="file" id="file" name="support_images[]" multiple accept="image/*" /> 
      </div> 
    </div> 

    <div class="form-group"> 
     <label class="col-md-3 control-label"></label> 
      <div class="submit"> 
       <input class="btn btn-primary" value="Save " type="submit" name="submit"> 
      </div> 
    </div> 
</form> 

admin_insert_property_images.php

<?php 
$con=mysqli_connect("abc.com","abc","ab","abc"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

if(isset($_POST['submit']))   
{ 
extract($_POST); 

    if(isset($_FILES['support_images']['name'])) 
    { 
     $file_name_all=""; 
     for($i=0; $i<count($_FILES['support_images']['name']); $i++) 
     { 
       $tmpFilePath = $_FILES['support_images']['tmp_name'][$i];  
       if ($tmpFilePath != "") 
       {  
        $path = "propertyimages/"; // create folder 
        $name = $_FILES['support_images']['name'][$i]; 
        $size = $_FILES['support_images']['size'][$i]; 

        list($txt, $ext) = explode(".", $name); 
        $file= time().substr(str_replace(" ", "_", $txt), 0); 
        $info = pathinfo($file); 
        $filename = $file.".".$ext; 
        if(move_uploaded_file($_FILES['support_images']['tmp_name'][$i], $path.$filename)) 
        { 
         $file_name_all.=$filename."*"; 
        } 
      } 
     } 
     $filepath = rtrim($file_name_all, '*'); 
$query=mysqli_query($con,"INSERT into propertyimages (`propertyimage`) VALUES('".addslashes($filepath)."'); ");  
     } 
     else 
    { 
     $filepath=""; 
    } 

    if($query) 
    { 
     header("Location: admin_profile.php"); 
    } 
} 
?> 
+0

ваша вставка в базу данных должны быть в течение цикла, где ручка закачанный файл. После каждой успешной загрузки-добавления записи в базу данных – Lixas

+0

@ user3750649 я выбираю этот способ bcoz будет много пользователей, которые будут загружать изображения под разными категориями, и каждая категория может иметь несколько изображений, и я хочу сохранить путь bcoz в будущем, я буду иметь разные условия, при которых пользователь будет вызывать образы в разных местах. – user3774056

+0

@Lixas Я попытался помещать запрос вставки в цикл for, но он не работал и просто вводил пустые значения. Можете ли вы PLZ сказать мне правильный путь – user3774056

ответ

2

Ваш $filepath переменной и ваш query должен быть в цикле.

Вы также используете mysql_query, который несовместим с функциями mysqli_.

Эти два API не Смешать вместе. Используйте mysqli_query при прохождении к нему DB-соединения.

<?php 
$con=mysqli_connect("abc.com","abc","ab","abc"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

if(isset($_POST['submit']))   
{ 
extract($_POST); 

    if(isset($_FILES['support_images']['name'])) 
    { 
     $file_name_all=""; 
     for($i=0; $i<count($_FILES['support_images']['name']); $i++) 
     { 
       $tmpFilePath = $_FILES['support_images']['tmp_name'][$i];  
       if ($tmpFilePath != "") 
       {  
        $path = "propertyimages/"; // create folder 
        $name = $_FILES['support_images']['name'][$i]; 
        $size = $_FILES['support_images']['size'][$i]; 

        list($txt, $ext) = explode(".", $name); 
        $file= time().substr(str_replace(" ", "_", $txt), 0); 
        $info = pathinfo($file); 
        $filename = $file.".".$ext; 
        if(move_uploaded_file($_FILES['support_images']['tmp_name'][$i], $path.$filename)) 
        { 
         $file_name_all.=$filename."*"; 
        } 
      } 
       $filepath = rtrim($file_name_all, '*').$path;  
     $query=mysqli_query($con,"INSERT into propertyimages (`propertyimage`) VALUES('".addslashes($filepath)."'); "); 
     } 

    } 
    else 
    { 
     $filepath=""; 
    } 

    if($query) 
    { 
     header("Location: admin_profile.php"); 
    } 
} 
+0

Я до сих пор не могу сохранить путь к изображению в разных строках, сохраняются только имена изображения, а также в одной строке – user3774056

+0

['This will explain it'] (http://stackoverflow.com/questions/26333269/upload-multiple-images-and-store-their-path-in-database # comment41330504_26333269) –

+0

Добро пожаловать;) –

0
extract($_POST); 

if(isset($_FILES['images']['name'])) 
{ 
    $file_name_all=""; 
    for($i=0; $i<count($_FILES['images']['name']); $i++) 
    { 
     $tmpFilePath = $_FILES['images']['tmp_name'][$i];  
     if ($tmpFilePath != "") 
     {  
      $path = "photos/"; // create folder 
      $name = $_FILES['images']['name'][$i]; 
      $size = $_FILES['images']['size'][$i]; 

      list($txt, $ext) = explode(".", $name); 
      $file= time().substr(str_replace(" ", "_", $txt), 0); 
      $info = pathinfo($file); 
      $filename = $file.".".$ext; 
      if(move_uploaded_file($_FILES['images']['tmp_name'][$i], $path.$filename)) 
      { 
       $file_name_all.=$filename."*"; 
      } 
     } 
     $file="photos/" . $filename ; 
     mysql_query("insert into gallery(image) values('".$file."')") or die(mysql_error()); 
    } 
} 
else 
{ 
    $filepath=""; 
} 

if($query) 
{ 
    header("Location: admin_profile.php"); 
} 
Смежные вопросы