2015-09-28 6 views
-1

Я пытаюсь загрузить изображение вместе с данными формы. Я сохраняю всю информацию в базу данных и изображение в папку.Загрузка изображения в папку и изменение имени перед загрузкой PHP

Моя форма:

<form method="post" action="insert_product_page.php" enctype="multipart/form-data" id="insert_product"> 
    <table width="80%" border="1"> 
    <tr> 
    <th width="49%" align="left" scope="col">Product Title</th> 
<th width="51%" align="left" scope="col"><input name="product_title" type="text" required id="product_title" ></th> 
</tr> 
    <tr> 
<td align="left">Product Category</td> 
    <td align="left"><select name="product_cat" required> 
    <option>Select A Category</option> 
    <option>Category A</option> 
    <option>Category B</option> 
    <option>Category C</option> 

</select></td> 
</tr> 
<tr> 
<td align="left">Product Brand</td> 
<td align="left"><select name="product_brand" required> 
    <option>Select A Brand</option> 
    <option>Brand A</option> 
    <option>Brand B</option> 
    <option>Brand C</option> 
    <option>Brand D</option> 

    </select></td> 
    </tr> 
    <tr> 
    <td align="left">Product Image</td> 
    <td align="left"><input name="product_image" type="file" ></td> 
    </tr> 
    <tr> 
    <td align="left">Product Description</td> 
    <td align="left"><input name="product_price" type="text" required id="product_price" ></td> 
    </tr> 
<tr> 
    <td align="left">Product Keyword</td> 
    <td align="left"><input name="product_keyword" type="text" required id="product_keyword" ></td> 
    </tr> 
    <tr> 
    <td colspan="2" align="center"><input type="submit" name="insert_post" value="Insert New Product"></td> 
    </tr> 
    </table> 
    </form> 

insert_product_page.php:

<?php 
     include 'includes/dbConnect.php'; 

     $product_cat= mysql_real_escape_string($_POST['product_cat']); 
     $product_brand= mysql_real_escape_string($_POST['product_brand']); 
     $product_title= mysql_real_escape_string($_POST['product_title']); 
     $product_price= mysql_real_escape_string($_POST['product_price']); 
     $product_desc= mysql_real_escape_string($_POST['product_desc']); 
     $product_keyword= mysql_real_escape_string($_POST['product_keyword']); 


      $sql = "INSERT INTO products (product_id, product_cat, product_brand, product_title, product_price, product_desc, product_keywords) VALUES (NULL,'$product_cat', '$product_brand', '$product_title', '$product_price', '$product_desc', '$product_keyword')"; 

      $id = mysqli_insert_id(); 
      // Place image in the folder 
      $newname = "$id.jpg"; 
      move_uploaded_file($_FILES['product_image']['tmp_name'], "images/$newname"); 


      if (mysqli_query($con, $sql)) { 
       echo "New record created successfully"; 
      } else { 
       echo "Error: " . $sql . "<br>" . mysqli_error($con); 
      } 

      $con->close(); 
    ?> 

dbConnect.php:

  <?php 
     error_reporting(E_ERROR); 

     $servername = 'localhost'; 
     $username = 'root'; 
     $password = ''; 
     $database = 'ecommerce'; 

     // Create connection 
     $con = mysqli_connect($servername, $username, $password,$database); 

     // Check connection 
     if (!$con) { 
      die("Connection failed: " . mysqli_connect_error()); 
     } 
     //echo "Connected successfully"; 
     ?> 

Данные успешно сохранение в базе данных и изображение является загрузка в папка, но изображение не имеет имени и заменяет последнее загруженное изображение. Я пытаюсь загрузить изображение с тем же именем, что и auto_incremented id, сохраненный в базе данных. Пожалуйста, направляйте меня, где я делаю ошибку. Заранее спасибо

+0

Попробуйте поместить полный путь в место, где вы хотите сохранить загруженный файл, во втором аргументе move_uploaded_file. – mti2935

+1

Кто-нибудь когда-либо говорил вам, что вы не можете смешивать MySQL API раньше? Если никто не имеет, то тогда я первый ;-) –

+0

* Я не поклонник смешанных напитков Ralph * @ Fred-ii- –

ответ

0

Ваша проблема кроется в том, когда вы на самом деле выполняете запрос.

попробовать это вместо пожалуйста:

<?php 
     include 'includes/dbConnect.php'; 

     $product_cat= mysql_real_escape_string($_POST['product_cat']); 
     $product_brand= mysql_real_escape_string($_POST['product_brand']); 
     $product_title= mysql_real_escape_string($_POST['product_title']); 
     $product_price= mysql_real_escape_string($_POST['product_price']); 
     $product_desc= mysql_real_escape_string($_POST['product_desc']); 
     $product_keyword= mysql_real_escape_string($_POST['product_keyword']); 


      $sql = "INSERT INTO products (product_id, product_cat, product_brand, product_title, product_price, product_desc, product_keywords) VALUES (NULL,'$product_cat', '$product_brand', '$product_title', '$product_price', '$product_desc', '$product_keyword')"; 

      if (mysqli_query($con, $sql)) { 
       //you only get the last id AFTER the query runs! 
       $id = mysqli_insert_id(); 
       // Place image in the folder 
       $newname = $id.".jpg"; 
       move_uploaded_file($_FILES['product_image']['tmp_name'], "images/$newname"); 
       echo "New record created successfully"; 
      } else { 
       echo "Error: " . $sql . "<br>" . mysqli_error($con); 
      } 

      $con->close(); 
    ?> 

ваша ошибка, как просят сервер, что создал, прежде чем на самом деле его создание :) надеюсь, вы понимаете мою точку зрения, и он будет работать должным образом

приветствий

+0

Вы смешиваете функции 'mysql_ *' и 'mysqli_ *'. Это не сработает. –

+0

* Какой отличный напиток, который сделает, а Сэм? * @JayBlanchard У меня будет то, что у него есть. –

+0

на самом деле ... он не http://php.net/manual/en/mysqli.query.php читает руководства – marcoFSN

0

Вам нужно изменить порядок вашего кода, вы не выполняете свою статуту перед тем, как получить идентификатор.

 $sql = "INSERT INTO products (product_id, product_cat, product_brand, product_title, product_price, product_desc, product_keywords) VALUES (NULL,'$product_cat', '$product_brand', '$product_title', '$product_price', '$product_desc', '$product_keyword')";  
      if (mysqli_query($con, $sql)) { 
       echo "New record created successfully";  
       $id = mysqli_insert_id(); 
       // Place image in the folder 
       $newname = "$id.jpg"; 
       move_uploaded_file($_FILES['product_image']['tmp_name'], "images/$newname"); 
      } else { 
       echo "Error: " . $sql . "<br>" . mysqli_error($con); 
      } 

      $con->close(); 
+0

проблема в том, что изображение загружается без какого-либо имени, а при загрузке изображения оно заменяет последнее изображение. Просьба проверить и рассказать им, где ошибка. благодаря – user3879357

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