Так что я сделал сайт для загрузки файлов, и загрузка файла работает хорошо. Но проблема в том, что позже, когда я хочу отредактировать файл (заменить), файл не обновляется так, как должен.Редактированный загруженный файл
У меня возникли проблемы, когда я загружаю файл заглавными буквами, я использую «strtolower». Когда я хочу заменить этот файл «Правка», «strtolower», похоже, не работает, и я не могу получить доступ к файлу. Имя файла отображается в таблице, но когда я нажимаю «Вид», он не получает файл, а затем он загружается на сервер.
Вот код для загрузки, и edit.php .:
if(isset($_POST['btn-upload']))
{
$file = rand(1000,100000)."-".$_FILES['file']['name'];
$file_loc = $_FILES['file']['tmp_name'];
$file_size = $_FILES['file']['size'];
$file_type = $_FILES['file']['type'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$user_city = $_POST['user_city'];
$sifra = $_POST['sifra_izvoda'];
$folder="uploads/";
$new_size = $file_size/1024;
mb_internal_encoding('UTF-8');
$new_file_name = mb_strtolower($file);
$final_file = str_replace(' ','-',$new_file_name);
if(move_uploaded_file($file_loc,$folder.$final_file))
{
$sql="INSERT INTO tbl_uploads(file,type,size,first_name,last_name,user_city,sifra) VALUES('$final_file','$file_type','$new_size','$first_name','$last_name','$user_city','$sifra')";
mysql_query($sql);
?>
<script>
alert('Izvod je dodan');
window.location.href='view.php?success';
</script>
<?php
}
Вот код, когда я хочу, чтобы редактировать загруженный файл:
if(isset($_GET['edit_id']))
{
$sql_query="SELECT file, type, size, first_name, last_name, user_city, sifra FROM tbl_uploads WHERE id=".$_GET['edit_id'];
$result_set=mysql_query($sql_query);
$fetched_row=mysql_fetch_array($result_set);
}
if(isset($_POST['btn-update']))
{
$file = rand(1000,100000)."-".$_FILES['file']['name'];
$file_loc = $_FILES['file']['tmp_name'];
$file_size = $_FILES['file']['size'];
$file_type = $_FILES['file']['type'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$user_city = $_POST['user_city'];
$sifra = $_POST['sifra_izvoda'];
$folder="uploads/";
$new_size = $file_size/1024;
mb_internal_encoding('UTF-8');
$new_file_name = mb_strtolower($file);
$final_file = str_replace(' ','-',$new_file_name);
$tmp = move_uploaded_file($file_loc,$folder.$final_file);
$insert_file = ($_FILES['file']['name'])?"file='$file', type='$file_type', size='$file_size',":'';
$sql_query = "UPDATE tbl_uploads SET $insert_file first_name='$first_name', last_name='$last_name', user_city='$user_city', sifra='$sifra' WHERE id=".$_GET['edit_id'];
if(mysql_query($sql_query))
{
header("Location: view.php");
?>
Каждый раз, когда вы используете [mysql_'] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) расширение в новом коде ** [Котенок задушен где-то в мире] (http://2.bp.blogspot.com/-zCT6jizimfI/UjJ5UTb_BeI/AAAAAAAACgg/AS6XCd6aNdg/s1600/luna_getting_strangled.jpg) ** он устарел и был в течение многих лет и ушел навсегда в PHP7. Если вы просто изучаете PHP, потратьте свои силы на изучение расширений базы данных «PDO» или «mysqli». [Начать здесь] (http://php.net/manual/en/book.pdo.php) – RiggsFolly
** Вы широко открыты для [SQL Injections] (http://php.net/manual/en/security .database.sql-injection.php) ** и должен действительно использовать [Подготовленные утверждения] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) вместо объединения ваших запросов. Специально, потому что вы не избегаете их вообще! Подготовленные утверждения могут использоваться, если вы используете MySQLi или PDO, а не те, которые упомянуты выше, устаревшие функции mysql_ *. –
Почему вы фактически не используете $ final_file-name в запросе обновления? По какой-то причине вы используете исходное имя файла вместо обновленного имени файла? Это, вероятно, ваша проблема ... – junkfoodjunkie