0

Хочу сделать возможным редактирование конкретной статьи, а не всех имеющихся, не могу построить правильный запрос:

В этом случае возникает ошибка:

<meta charset="utf-8"> 
<link rel="stylesheet" href="css/style.css">

<?php   

    include 'bd.php';

    $zagolovok = $_POST['zagolovok'];
    $smallopisanie = $_POST['smallopisanie'];
    $opisanie = $_POST['opisanie']; 

    $editid  = $_GET[edit];

    $result = mysql_query("UPDATE news WHERE id = '$editid' SET zagolovok = replace('$zagolovok','zagolovok','$zagolovok')");
    if (!$result) {
        die('Неверный запрос: ' . mysql_error());
    }

    if ($result) {
        echo "<center><p style='color: #404040; font-size: 24px; text-decoration: none; font-family: 'Gerbera''>Статья отредактирована</p><br><a style='color: #1d97e1; font-size: 24px; text-decoration: none; font-family: 'Gerbera'' href='adminpanel'>Назад в админ-панель</div></a></center>";
    }

?>

В этом случае редактируются все статьи:

<?php   

    include 'bd.php';

    $zagolovok = $_POST['zagolovok'];
    $smallopisanie = $_POST['smallopisanie'];
    $opisanie = $_POST['opisanie']; 

    $result = mysql_query("UPDATE news SET zagolovok = replace('$zagolovok','zagolovok','$zagolovok' WHERE id = '$editid')");
    if (!$result) {
        die('Неверный запрос: ' . mysql_error());
    }

    if ($result) {
        echo "<center><p style='color: #404040; font-size: 24px; text-decoration: none; font-family: 'Gerbera''>Статья отредактирована</p><br><a style='color: #1d97e1; font-size: 24px; text-decoration: none; font-family: 'Gerbera'' href='adminpanel'>Назад в админ-панель</div></a></center>";
    }

?>
  • Синтаксис UPDATE https://dev.mysql.com/doc/refman/5.7/en/update.html А еще используете функции mysql_... которые уже устарели и удалены в php7 и данные принятые от пользователя вставляете прямо в запрос. https://ru.stackoverflow.com/a/511896/186083 https://ru.stackoverflow.com/a/393456/186083 – Visman Nov 13 '17 at 06:08
  • @Visman, тогда в таком случае каким образом заменить содержимое конкретной статьи? – user273992 Nov 13 '17 at 06:12
  • точно также, но изучить PDO – Jean-Claude Nov 13 '17 at 06:23
  • @Jean-Claude, пример покажите? – user273992 Nov 13 '17 at 06:24
  • http://php.net/manual/ru/book.pdo.php – Jean-Claude Nov 13 '17 at 06:25
  • и http://phpfaq.ru/pdo – Visman Nov 13 '17 at 06:26

1 Answers1

0

исправьте последовательность

$result = mysql_query("UPDATE `news`  SET `zagolovok` = REPLACE(`zagolovok`,'zagolovok','$zagolovok') WHERE `id` = '$editid' ");

но я бы порекомендовал немного другой код по проще

$result = mysql_query('
  UPDATE `news`
  SET `zagolovok` = \''.$zagolovok.'\' 
  WHERE `id` = \''.$editid.'\' 
  ');

В вашем коде я не увидел правильно ли берется переменная $editid Также хотел обратить ваше внимание на неправильное применение синтаксиса функции REPLACE

" $editid пуст" - пока он пуст ни один запрос у вас не получится.

у вас в коде должно быть что то вроде

$editid = $_POST['editid '];

Рекомендую прислушаться к пользователю @Mike - и отказаться от использования mysql_query в пользу php PDO

Mcile
  • 1,524
  • 11
  • 27
  • В таком случае он вообще не хочет заменять содержимое – user273992 Nov 13 '17 at 06:54
  • @user273992 Начните со строки $editid = $_GET[edit]; она вообще то должна как минимум предупреждения давать, если конечно у вас нет константы с именем edit. А потом срочно переходите на PDO и не подставляйте значения переменных в текст запроса никогда, иначе вас взломают через неделю после того как этот код заработает в интернете – Mike Nov 13 '17 at 07:15
  • @Mike, $editid пуст, он передается на страницу редактирования информации, а вот сохранения уже нет.

    https://imgur.com/a/IfxCf

    – user273992 Nov 13 '17 at 07:18