редактирование существующего изображения php mysql

#php #mysql #phpmyadmin

#php #mysql #phpmyadmin

Вопрос:

У меня есть следующий код, который отображает заданное изображение, используя php echo id из таблицы mysql. Php является:

     <?php include 'dbc.php'; page_protect();


$id=$_GET['id'];


if(!checkAdmin()) {header("Location: login.php");
exit();
}

$host  = $_SERVER['HTTP_HOST'];
$host_upper = strtoupper($host);
$login_path = @ereg_replace('admin','',dirname($_SERVER['PHP_SELF']));
$path   = rtrim($login_path, '/\');

foreach($_GET as $key => $value) {
    $get[$key] = filter($value);
}

foreach($_POST as $key => $value) {
    $post[$key] = filter($value);
}   
?>


<?php 
if($_FILES['photo']) 
{
    $target = "images/furnishings/"; 
    $target = $target . basename( $_FILES['photo']['name']); 

   $title = mysql_real_escape_string($_POST['title']); 
    $pic = "images/furnishings/" .(mysql_real_escape_string($_FILES['photo']['name']));
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{

    mysql_query("update `furnishings` set `photo`='$pic' WHERE id='$id'") ;     

    echo "Image updated"; 
} 
else 
{ 
    echo "Please select a new image to upload"; 

}
} 
?>
 

HTML — это:

 <form enctype="multipart/form-data" action="editfurnimage.php" method="POST">
  <table width="450" border="2" cellpadding="5"class="myaccount">
     <tr>
       <td width="35%" class="myaccount">Current Image: </td>
       <td width="65%"><img src='<?php

mysql_select_db("dbname", $con);
mysql_set_charset('utf8');

$result = mysql_query("SELECT * FROM furnishings WHERE id='$id'");

while($row = mysql_fetch_array($result))
{
    echo '' . $row['photo'] . '';

}
mysql_close($con);
?>' style="width:300px; height:300px;"></td>
    </tr>
   <tr>
       <td class="myaccount">New Image: </td>
       <td><input type="file" name="photo" /></td>
    </tr>
     <tr>
       <td colspan="2"><input type="submit" class="CMSbutton" value="Add" /></td>
     </tr>
  </table>
</form>
 

В то время как кодирование добавляет новое изображение на сервер, таблица mysql, похоже, не обновляется новым изображением — фактически никаких изменений не вносится — когда я настраиваю строку:

 mysql_query("update `furnishings` set `photo`='$pic' WHERE id='$id'") ; 
 

Для:

 mysql_query("update `furnishings` set `photo`='$pic' WHERE id='8'") ; 
 

это работает, хотя, предполагая, что проблема связана с этой частью кода, но не уверен, как исправить код, чтобы правильно вставить $id в php.

Наконец, когда запускается скрипт, я пытаюсь получить страницу «editfurnimage.php?id= $ id» для перезагрузки после нажатия пользователем кнопки Добавления — на данный момент возвращаемая страница «editfurnimage.php » который, очевидно, не отображает никаких данных из таблицы.

Любая помощь очень ценится — и, как всегда, не стесняйтесь разбирать мое кодирование на части — все еще учусь!!

Спасибо JD

Ответ №1:

попробуйте убрать одинарные кавычки вокруг $id. Если ваше поле id в базе данных в int, то кавычки не должны использоваться вокруг него.

РЕДАКТИРОВАТЬ: пропустил это — откуда отправляется $ _GET [‘id’], потому что ваша форма точно не отправляет какой-либо идентификатор в области $ _GET? Попробуйте добавить входные данные с именем ‘id’ и значением для него в вашу форму. кроме того, используйте $_POST в вашем php-файле, а не $_GET.

В вашем php замените:

 $id=$_GET['id'];
 

С

 if(isset($_POST['id'])){
$id=$_POST['id'];
}else{
$id=$_GET['id'];
}
 

Затем в вашем html добавьте:

 <input type="hidden" name="id" value="<?php echo $id; ?>"/>
 

Комментарии:

1. У меня есть страница, на которой отображаются все записи в таблице — при нажатии на один из этих элементов появляется новая страница (editfurnimage.php?id=) на основе идентификатора выбранного элемента. Затем он генерирует изображение в формате HTML — SELECT * FROM furnitures, ГДЕ id= ‘$id’.

2. Вам все равно нужно создать входные данные в вашей форме с именем = ‘id’ и значением = ‘the-id-value’, чтобы $_POST[‘id’] был доступен при обновлении страницы. Ваш $id будет пустым, если вы не отправите значение на обновленную страницу. Я обновил свой ответ кодом, который может помочь.