Я сделал простое редактирование для редактирования данных в mysql, все работает отлично, за исключением случаев, когда я хочу редактировать изображение типа входного файла, оно не работает, оно не дает сообщение об ошибке, оно просто ничего не редактирует и когда я удалите изображение типа входного файла, в котором он работает. и, редактируя изображение, я имею в виду ввод нового изображения, он заменит старое изображение.
вот мой код:
<?php require("db.php"); $id = $_REQUEST['theId']; $result = mysql_query("SELECT * FROM table WHERE id = '$id'"); $test = mysql_fetch_array($result); $name = $test['Name'] ; $email = $test['Email'] ; $image = $test['Image'] ; if (isset($_POST['submit'])) { $name_save = $_POST['name']; $email_save = $_POST['email']; if (isset($_FILES['image']['tmp_name'])) { $file = $_FILES['image']['tmp_name']; $image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); $image_name = addslashes($_FILES['image']['name']); move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" . $_FILES["image"]["name"]); $image_save ="photos/" . $_FILES["image"]["name"]; mysql_query("UPDATE table SET Name ='$name_save', Email ='$email_save',Image ='$image_save' WHERE id = '$id'") or die(mysql_error()); header("Location: index.php"); } } ?> <form method="post"> <table> <tr> <td>name:</td> <td> <input type="text" name="name" value="<?php echo $name ?>"/> </td> </tr> <tr> <td>email</td> <td> <input type="text" name="email" value="<?php echo $email ?>"/> </td> </tr> <tr> <td>image</td> <td> <input type="file" name="image" value="<?php echo $image ?>"/> </td> </tr> <tr> <td> </td> <td> <input type="submit" name="submit" value="submit" /> </td> </tr> </table>
В форме отсутствует enctype = "multipart / form-data", и в вашей форме нет типа = "файл".
Дайте код ниже и попробуйте.
<?php require("db.php"); $id =$_REQUEST['theId']; $result = mysql_query("SELECT * FROM table WHERE id = '$id'"); $test = mysql_fetch_array($result); $name=$test['Name'] ; $email= $test['Email'] ; $image=$test['Image'] ; if(isset($_POST['submit'])){ $name_save = $_POST['name']; $email_save = $_POST['email']; $image_save=$image //Added if image is not chose from the form post if (isset($_FILES['image']['tmp_name'])) { $file=$_FILES['image']['tmp_name']; $image= addslashes(file_get_contents($_FILES['image']['tmp_name'])); $image_name= addslashes($_FILES['image']['name']); move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" . $_FILES["image"]["name"]); $image_save ="photos/" . $_FILES["image"]["name"]; } mysql_query("UPDATE table SET Name ='$name_save', Email ='$email_save',Image ='$image_save' WHERE id = '$id'") or die(mysql_error()); header("Location: index.php"); } ?> <form method="post" enctype="multipart/form-data"> <table> <tr> <td>name:</td> <td><input type="text" name="name" value="<?php echo $name ?>"/></td> </tr> <tr> <td>email</td> <td><input type="text" name="email" value="<?php echo $email ?>"/></td> </tr> <tr> <td>image</td> <td><input type="file" name="image" /></td> </tr> <tr> <td> </td> <td><input type="submit" name="submit" value="submit" /></td> </tr> </table>
Кроме того, вы должны получить предыдущее значение изображения через sql и обновить, если изображение не будет выбрано при обновлении.
<tr> <td>image</td> <td><input type="file" name="image" ></td> </tr>
Вы должны использовать input:type=file
element вместо input:type=text
для обработки файла изображения с помощью $_FILES
. Или вы не можете получить файл изображения. Поэтому ваш оператор if возвращает false, и ничего не происходит.
<form method="post" enctype="multipart/form-data"> <table> <tr> <td>name:</td> <td><input type="text" name="name" value="<?php echo $name ?>"/></td> </tr> <tr> <td>email</td> <td><input type="text" name="email" value="<?php echo $email ?>"/></td> </tr> <tr> <td>image</td> <td><input type="file" name="image" /></td> </tr> <tr> <td>image preview</td> <td><img src="photos/<?php echo $image ?>" /></td> </tr> <tr> <td> </td> <td><input type="submit" name="submit" value="submit" /></td> </tr> </table> </form>