Вопрос:

PHP производит пустой экран с нажатием кнопки отправки

php

384 просмотра

2 ответа

40 Репутация автора

Ниже у меня есть код, который должен обновить запись в базе данных. Когда я нажимаю кнопку отправки, форма исчезает, но она не заменяется чем-либо, и что более важно, она не обновляет базу данных. Я не могу найти, где ошибка, и любая помощь будет принята с благодарностью.

Страница обновления перед отправкой

Страница обновления после отправки

<?php
define('TITLE', 'Quotes Entry!');
// Include the header:
include('header.php');
include('mysqli_connect.php');
// Leave the PHP section to display lots of HTML:
?>
<?php //

mysqli_set_charset($dbc, 'utf8');

if (isset($_GET['id']) && is_numeric($_GET['id']) ) { // Display the entry in a form:
    // Define the query:
    $query = "SELECT title, entry FROM Salinger WHERE entry_id={$_GET['id']}";
    if ($r = mysqli_query($dbc, $query)) { // Run the query.

        $row = mysqli_fetch_array($r); // Retrieve the information.

       //make the form
        print '<form action = "edit_entry.php" method = "post">
                <p> Entry Titles <input type= "text" name = "title" size = "40" maxsize = "100" value = "' . htmlentities($row['title']) . '" /></p>
                <p>Entry Text <textarea name = "entry" cols = "40" rows = "5">'. htmlentities($row['entry']).'</textarea></p>
                <input type = "hidden" name = "id" value = "'.$_GET['id'] .'" />
                <input type = "submit" name = "submit" value = "Update This Entry!" />
                </form>';
    } else { // Couldn't get the information.
        print '<p style="color: red;">Could not retrieve the blog entry because:<br />' . mysqli_error($dbc) . '.</p><p>The query being run was: ' . $query . '</p>';
    }

} elseif (isset($_POST['id']) && is_numeric($_POST['id'])) { // Handle the form.
    $problem = "false";
    if(!empty($_POST['title']) && !empty($_POST['entry'])){
        $title = mysqli_real_escape_string($dbc, trim(strip_tags($_POST['title'])));
        $entry = mysqli_real_escape_string($dbc, trim(strip_tags($_POST['entry'])));
    } else{
        print '<p style="color: red;">Could not retrieve the blog entry because:<br />' . mysqli_error($dbc) . '.</p><p>The query being run was: ' . $query . '</p>';
        $problem = true;
    }
    if(!problem){
        $query = "UPDATE Salinger SET title = '$title', entry = '$entry' WHERE entry_id = {$_POST['id']}";
        $r = mysqli_query($dbc, $query); //execute the query

        if(mysqli_affected_rows($dbc) == 1){
            print'<p> The blog entry has been updated.</p>';

            // Report on the result:
        } else {
            print '<p style="color: red;">Could not retrieve the blog entry because:<br />' . mysqli_error($dbc) . '.</p><p>The query being run was: ' . $query . '</p>';
        }
    }
} else{
    print '<p style="color: red;">Could not retrieve the blog entry because:<br />' . mysqli_error($dbc) . '.</p><p>The query being run was: ' . $query . '</p>';
}



mysqli_close($dbc); // Close the database connection.
include('footer.php'); // Need the footer.
?>
Автор: bunkkin Источник Размещён: 08.11.2017 11:48

Ответы (2)


1 плюс

1064 Репутация автора

Решение

Потому что вы поставили $problem = "false"; вам нужно установить его$problem= false;

"false" не ложь

И! Проблема должна быть! $ Проблема

Автор: Forbs Размещён: 08.11.2017 11:54

0 плюса

1 Репутация автора

У вас есть проблемы с GET[id]. На POSTэкране появляется пустая причина события, из-за которого ваш SQL не находит запись.

Для проверки назначьте жестко закодированное значение в вашем операторе выбора.

пример

$query = "SELECT title, entry FROM Salinger WHERE entry_id=10";
Автор: Omkar Patil Размещён: 13.04.2018 07:35
Вопросы из категории :
32x32