2016-09-25 3 views
1

У меня есть эта таблица:обновить значения в таблице PHP-Mysql

+----+------------+-----------------------+ 
| ID | ID_PRODUCT | LINK_DOWNLOAD   | 
+----+------------+-----------------------+ 
| 1 | 2369  | folder/2015.03.12.pdf | 
| 2 | 3694  | folder/2014.01.10.pdf | 
| 3 | 56  | folder/2016.09.25.pdf | 
+----+------------+-----------------------+ 

Конец кода PHP:

<form action="upload_file.php" method="post" enctype="multipart/form-data" name="upload_file"><br> 
    <label for="UploadFileField"></label><br> 
    <input type="file" name="UploadFileField"/> 
    <input type="submit" name="UploadButton" value="Upload" /><br> 
    <input type ="text" name="UPLOAD_COD" /> 
    </form> 


<?php 
include "bd_cnx.php"; 
if (isset ($_FILES['UploadFileField'])){ 
    $UploadName = $_FILES['UploadFileField'] ['name']; 
    $UploadName = mt_rand (100000, 999999).$UploadName; 
    $UploadTmp = $_FILES['UploadFileField'] ['tmp_name']; 
    $UploadType = $_FILES['UploadFileField'] ['type']; 
    $FileSize = $_FILES['UploadFileField'] ['size']; 

    $UploadName = preg_replace("#[^a-z0-9.]#i", "", $UploadName); 

    if(($FileSize > 1250000)){ 
    die ("Error - File to big"); 
    } 

    if(!$UploadTmp) { 
    die ("No File Selected"); 
    } 
    else { 
    if (move_uploaded_file($UploadTmp, "Upload/$UploadName")) { 
      $UPLOAD_COD = $_POST['UPLOAD_COD']; 
      $sql = "INSERT INTO download (ID_PRODUCT,LINK_DOWNLOAD) VALUES ('$UPLOAD_COD','Upload/$UploadName')"; 
      $result = $conn->query($sql); 
     echo '<script> alert("Successfully inserted"); window.location ="/index.php";</script>'; 
    } 
    } 
} 
?> 

2015.03.12.pdf файл сегодня обновление и становится 2016.09.25.pdf. Когда я вводим во вход «UPLOAD_COD» номер 2369, я хочу удалить файл 2015.03.12.pdf с сервера и заменить его на 2016.09.25.pdf, а в столбце LINK_DOWNLOAD - на новую ссылку (папка /2015.03.12.pdf). Спасибо!

+0

я не вижу никаких попыток на самом деле, что – RamRaider

ответ

1

Итак, вы хотите удалить файл с ID_PRODUCT = 2369? просто принести это LINK_DOWNLOAD из базы данных

Вы поместите этот код после загрузки и вставки файла

//first create a query that select the row of the data that you are finding 
$currentSql = "Select * from download where ID_PRODUCT = '".$UPLOAD_COD."'"; 
$current = $conn->query($currentSql); 


// then fetch it's result then unlink the file from the server 
while($row = $current->fetch_assoc()) { 
    $file = $row['LINK_DOWNLOAD']; 
    // check if file is exist then delete 
    if (file_exists($file)) { 
     unlink($file); 
    } 
} 
+0

У меня есть ошибка: ** Фатальная ошибка: вызов функции-члена fetch_assoc() в строке в C: \ xampp \ htdocs \ ... ** – ster

+0

какой php-объект вы используете smtp или pdo или mysqli? – Beginner

+0

не используют PDO. – ster

1

просто добавить запрос на удаление после вставки запроса выполняется

$deleteSql = "Delete from download where ID_PRODUCT = '".$UPLOAD_COD."'"; 
$conn->query($deleteSql); 
+0

не работает, умножать на строках – ster

+0

то, что вы имеете в виду умножают строки ? несколько строк? – Beginner

+0

извините, работа (обновите значение в таблице), но не удалите файл с сервера, – ster

1

Вы должны обновить соответствующую запись в базе данных:

UPDATE download SET LINK_DOWNLOAD='folder/2016.09.25.pdf' WHERE ID=1 

Я использую WHERE критерии на ID колонке, потому что вы не указали, была ли только одна запись на продукт. Если на продукт имеется только одна запись, то LINK_DOWNLOAD также будет правильным в таблице продуктов.

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

Так что в вашем коде я бы добавил блок для поиска существующей записи для входа product_id в UPLOAD_COD.

Затем, если вы обновляете ссылку на физический файл, вам необходимо удалить/архивировать исходный файл. Итак, вы можете посмотреть на команду file_exists php, как и на this SO question.

И чтобы закончить, я обработал бы обновление только в том случае, если есть существующая запись для этого продукта (и, возможно, у вас есть другие критерии или, по крайней мере, вы можете добавить другие позже, если это необходимо).

Надеюсь, это поможет!

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