2016-02-16 2 views
0

Я делаю сайт электронной торговли, я хочу загрузить несколько изображений, которые могут быть использованы для показа продуктов. моя проблема в том, что он загружает только одно изображение, где он хранится в файле i, на который направлен «product_images», и его данные хранятся в db. единственный. Я хочу, чтобы иметь возможность загружать по крайней мере 4. Как я могу это сделать?Как загрузить несколько изображений в mysql db с помощью php

Код: ФОРМА:

    <form method="post" action="" enctype="multipart/form-data"> 
         <div class="col-lg-6">  
          <p>PRODUCT DETAILS:</p> <br /> 

         <tr> 
     <div class="form-group"> 
       <label for="position">Enter Product Name:</label> 
       <div class="input-group"> 
        <input type="text" class="form-control" name="prod_name" id="prod_name" placeholder="Enter Product Name:" required> 
        <span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span> 
       </div> 
      </div> 

    </tr> 
    <tr> 
     <div class="form-group"> 
       <label for="position">Enter Product Brand:</label> 
       <td><select type="position" class="form-control" id="prod_brand" name="prod_brand"> 
         <OPTION value="Select Model..."></OPTION> 
         <?php brand(); ?> 
        </select></td> 

      </div> 

    </tr> 
    <tr> 
     <div class="form-group"> 
       <label for="position">Enter Product Model:</label> 
       <td><select type="position" class="form-control" id="prod_model" name="prod_model"> 
         <OPTION value="Select Model..."></OPTION> 
         <?php query(); ?> 
        </select></td> 
        <?php close(); ?> 
      </div> 

    </tr> 
      <tr> 
     <div class="form-group"> 
       <label for="position">Enter Product Price:</label> 
       <div class="input-group"> 
        <input type="text" class="form-control" name="prod_price" id="prod_price" placeholder="Enter Product Price:" required> 
        <span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span> 
       </div> 
      </div> 

    </tr> 
    <tr> 
     <div class="form-group"> 
       <label for="position">Enter Product Description:</label> 
       <div class="input-group"> 
        <textarea style="width: 500px; height: 251px;" type="text" class="form-control" name="prod_desc" id="prod_desc" placeholder="Enter Product Description:" cols="20" rows="5" ></textarea> 
       </div> 
      </div> 

    </tr> 

    <tr> 
     <div class="form-group"> 
       <label for="position">Enter Product Quantity:</label> 
       <div class="input-group"> 
        <input type="text" class="form-control" name="prod_qty" id="prod_qty" placeholder="Enter Product Quantity:" required> 
        <span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span> 
       </div> 
      </div> 
      <div class="form-group"><tr> 
        <td><label for="position">Select Images:</label></td> 
        <td><input type="file" name="product_image[]" id="product_image" multiple=""></td>       
      </div> 
        <!--<div class="form-group"> 
         <input type="file" id="file-1" class="file" multiple name="product_image[]"> 
        </div>--> 
      </tr> 
    </tr> 
         <tr> 
     <br /><td><input class="btn btn-info" type='submit' name='submit' value='Add Product' /></td> 
    </tr> 
        </form> 

УСТАНОВКА ПРОДУКТА:

если (Исеть ($ _ POST [ 'отправить'])) {

$prod_name = strtoupper($_POST['prod_name']); 
    $prod_brand = $_POST['prod_brand']; 
    $prod_cat = $_POST['prod_model']; 
    $prod_price = $_POST['prod_price']; 
    $prod_desc = $_POST['prod_desc']; 
    $prod_qty = $_POST['prod_qty']; 
    $d = date("Y-m-d"); 

    $id_query = $connection->query("INSERT into products(product_cat, product_brand, product_title, product_price, product_desc, product_qty, date) 
VALUES ('$prod_cat','$prod_brand','$prod_name','$prod_price','$prod_desc','$prod_qty','$d')"); 

    $query = mysql_insert_id();  


    $rand = rand(5,9878967699); 
foreach($_FILES['product_image']['tmp_name'] as $key => $tmp_name){ 

    $name = $_FILES['product_image']['name'][$key]; 
    $tmpname = $_FILES['product_image']['tmp_name'][$key]; 
    $type = $_FILES['product_image']['type'][$key]; 
    $size = $_FILES['product_image']['size'][$key]; 


    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
    $rand_dir_name = substr(str_shuffle($chars), 0, 15); //will pick the random 15 first characters 
    mkdir("product_images/$rand_dir_name/"); 

    $dir = "product_images/$rand_dir_name/"; 

    $move = move_uploaded_file($tmpname, $dir.$name); 

    if($move) { 
     //$query = mysql_query("insert into products (product_cat, product_brand, product_title, product_price, product_desc, product_qty, product_image, date) 
//VALUES('$prod_cat','$prod_brand','$prod_name','$prod_price','$prod_desc','$prod_qty','$rand_dir_name/$name',now())"); 
    $query = $connection->query("update products set product_image='$rand_dir_name/$name' where product_title='$prod_name'"); 

if($query) { 
     echo "<script>alert('Adding a product is successful!!!.')</script>"; 
    } else { 
     echo "<script>alert('Adding a product is unsuccessful!!!.')</script>"; 
    } 
    } else { 
     echo 'Picture upload failed'; 
    } 
    } 
    } 
+0

У вас есть достаточное количество полей для этого? –

+0

достаточно полей на db или? – emilkitua

+0

В db да, теперь я вижу, что у вас есть только одно поле product_image. –

ответ

1

Вы могли бы сделать еще одну таблицу для хранения ссылок на изображения и «подключения» к продуктам таблицы по идентификатору продукта.

Итак:

table 'Products' 
ID, ProductName, optional other columns for product details 

table 'Images' 
ID, ProductID, ImageSrc 

Затем выберите все продукты. И внутри цикла while вы выбираете для каждого продукта все соответствующие изображения ProductID.

Таким образом, вы можете хранить неограниченное количество изображений для каждого продукта.

Если вы хотите только 4 изображения, а затем просто сделать 4 колонки для изображения ссылки

Update 1: ответ на комментарий

На первых, начать использовать PDO или иначе MySQLi вместо MySQL.

Выберите изображения, как этот

$products = mysqli_query($conn, "SELECT * FROM products"); 
if (mysqli_num_rows($products) > 0) { 
    while ($product = mysqli_fetch_assoc($products)) { 
     echo "<p>Images for ".$product['ProductName'].":<br>"; 
     $images = mysqli_query($conn, "SELECT * FROM images WHERE ProductID = ".$product['ID'].""); 
     if (mysqli_num_rows($images) > 0) { 
      while ($image = mysqli_fetch_assoc($images)) { 
       echo "- ".$image['ImageSrc']."<br>"; 
      } 
     } else { 
      echo "No images"; 
     } 
     echo "</p>"; 
    } 
} 
+0

спасибо. он работал – emilkitua

+0

У меня возникла другая проблема: я сохраняю детали изображений в другой таблице, используя имя продукта в качестве идентификатора. теперь, когда я запрашиваю изображение, связанное с именем продукта, он показывает только один. моя проблема в том, что я не могу выбрать несколько строк в столбце «ImageSrc» с тем же уникальным идентификатором «Product_name» – emilkitua

+0

Используйте идентификатор в качестве идентификатора, который всегда уникален. Вы используете цикл while для выбора всех изображений? –

Смежные вопросы