1

Тема: Не редагує дані в базі через UPDATE (PHP+MYSQLI)

Код не вносить бажані зміни у базу даних. (На цей код посилається лінк "редагувати" на іншій сторінці. Лінк виводиться у циклі while, все норм працює.)

<a href='edit.php?word={$row['word']}>edit</a>

Ось власне код файлу edit.php:

<?php
include "config.php";             #назва змінної що підключається до бази даних - $db 
if(isset($_GET['word'])){
    $word = isset($_POST['word'])?htmlspecialchars($_POST['word']):'';
    $trans = isset($_POST['translation'])?htmlspecialchars($_POST['translation']):'';
    $def = isset($_POST['definition'])?htmlspecialchars($_POST['definition']):'';
    //
    $select_word = "SELECT word FROM dictionary WHERE word='{$_GET['word']}'";
    $select_trans = "SELECT translation FROM dictionary WHERE word='{$_GET['word']}'";
    $select_def = "SELECT definition FROM dictionary WHERE word='{$_GET['word']}'";
    //
    $rslt_word = mysqli_query($db,$select_word);
    $rslt_trans = mysqli_query($db,$select_trans);
    $rslt_def = mysqli_query($db,$select_def);
    //    
    if($rslt_word && mysqli_num_rows($rslt_word)>0) {
        while($row1 = mysqli_fetch_row($rslt_word)){
        echo "<form method='post' action={$_SERVER['PHP_SELF']}>
            <h1>Редагувати слово <label>{$_GET['word']}</label></h1>    
         <input required  type='text' name='word' value='{$row1[0]}'>";
        }
    }
    // 
    if($rslt_trans && mysqli_num_rows($rslt_trans)>0){
        while($row2 = mysqli_fetch_row($rslt_trans)){
        echo "<input required type ='text' name='translation' value='{$row2[0]}'>";
        }
    }
    //
    if($rslt_def){
        while($row3 = mysqli_fetch_row($rslt_def)){
        echo "<textarea rows='5' cols='45' type='text' name='definition' 'maxlength='200'>{$row3[0]}</textarea><br>
            <input type = 'submit' name='submit' value='Зберегти' >
        </form>";
        }
    }
    
    if($word && $trans && $def){
        $edit="UPDATE dictionary SET word='$word',translation='$trans',definition='$def' WHERE word='{$_GET['word']}'";
            if (mysqli_query($db,$edit)){
                echo "Слово було успішно змінено";
            }else{
                echo "Помилка. Редагування слова не відбулось".mysqli_error($db);
            }
    }
} else{
    echo "something went wrong";
}

?>

Після натискання кнопки "змінити" на екран виводиться повідомлення "something went wrong".
Підскажіть, як зробити код робочим?

2

Re: Не редагує дані в базі через UPDATE (PHP+MYSQLI)

    $word = isset($_POST['word']

ви ж ніби GET-ом його передаєте.

Декалог програміста-початківця: https://replace.org.ua/post/132988/
Подякували: leofun011

3

Re: Не редагує дані в базі через UPDATE (PHP+MYSQLI)

Усім дякую, проблему вирішено.
Змінено код і розділено його на окремі частини для форми та реалізації самого update