PHP код вставляется в sql db с текстовыми полями ввода, но не с опциями выбора (выпадающие списки) - PullRequest
0 голосов
/ 27 апреля 2018

Через несколько часов исследований и просмотра кода в вопросах, представленных на этом сайте, я наконец-то смог получить опции выбора (раскрывающиеся списки) для извлечения данных из таблиц моей базы данных в раскрывающиеся списки в моей HTML-форме. Однако моя проблема в том, что когда поля в форме были входными данными, они вставляли новую информацию в базу данных очень хорошо. К сожалению, теперь, когда я реализовал раскрывающиеся списки как часть формы, никакая информация из формы больше не вставляется в базу данных. Нажатие на кнопку «отправить» возвращает ответ, что он был успешным, но когда я проверяю таблицу в базе данных, новой информации там нет. Извините, я не смог самостоятельно разобраться с этой функциональностью. Я заметил, что мой последний вопрос получил отрицательный отзыв, поэтому я даже не согласен с этим, но мне очень нужна помощь. Пожалуйста, просмотрите следующий код и дайте мне знать, что я пропустил или неправильно кодировал? Мне просто нужно знать, что мне нужно сделать, чтобы выбранные значения из выпадающих списков были вставлены в поля 'dvd' и поля 'categoryname' и 'genretype' соответственно.

<?php 
session_start();
    //include the header
    include ('../main/header.php');
// Check if the form has been submitted.
if (isset($_POST['submitted'])) {
    require_once ('../../../mysqli_connect.php'); // Connect to the db.
    $errors = array(); // Initialize error array.

    // Check for a first name.
    if (empty($_POST['title'])) {
        $errors[] = 'You forgot to enter a title.';
    } else {
        $title = mysqli_real_escape_string($dbc, $_POST['title']);
    }

    // Check for a category.
    if (empty($_POST['numavail'])) {
        $errors[] = 'You forgot to enter quantity purchased.';
    } else {
        $numavail = mysqli_real_escape_string($dbc, $_POST['numavail']);
    }

    // Check for a category.
    if (empty($_POST['categoryname'])) {
        $errors[] = 'You forgot to enter a category.';
    } else {
        $categoryname = mysqli_real_escape_string($dbc, $_POST['categoryname']);
    }

    // Check for a genre.
    if (empty($_POST['genretype'])) {
        $errors[] = 'You forgot to enter a genre.';
    } else {
        $genretype = mysqli_real_escape_string($dbc, $_POST['genretype']);
    }

    if (empty($errors)) { // If everything's OK.
        // Add the movie to the database.
        // Check for existing record.
        $query = "SELECT id FROM dvd WHERE title='$title'";
        $result = mysqli_query($dbc, $query);
        if (mysqli_num_rows($result) == 0) { // if there is no such movie title
        $query = "INSERT INTO dvd (title, numavail, categoryname, genretype)
            VALUES ('$title', '$numavail', '$categoryname', '$genretype')";
            // Make the query.
            if ($result) { // If it ran OK.
                echo "<p><b>Success! The new movie has been added.</b></p>";
                echo ('<p><div style="margin-top:30px;">');
                echo ('<span style="float:left;">');
                echo ('<FORM METHOD="LINK" ACTION="../dvd/index.php"><INPUT TYPE="submit" VALUE="Back to DVDs" STYLE="margin:0px 15px 0px 0px;"></form></span></div></p>');
                echo ('<br style="clear:both;"></br>');

                exit();
            } else { // If it did not run OK.
                $errors[] = 'The movie could not be added due to a system error. We apologize for any inconvenience.'; // Public message.
                $errors[] = mysqli_error($dbc); // MySQL error message.
            }

        } else { // Title is already taken.
            $errors[] = 'The movie title entered already exists.';
        }

    } // End of if (empty($errors)) IF.

    mysqli_close($dbc); // Close the database connection.

} else { // Form has not been submitted.
    $errors = NULL;
} // End of the main Submit conditional.

// Begin the page now.
if (!empty($errors)) { // Print any error messages.
    echo '<p class="error">The following error(s) occurred:<br />';
    foreach ($errors as $msg) { // Print each error.
        echo "$msg<br />";
    }
    echo '</p>';
    echo '<p style="color:red; font-weight:bold;"><em>Please try again.</em></p></br>';
}

// Create the form.
?>
<h1>Add a Movie</h1>
<h2>Please complete all of the fields below:</h2>

    <form action="../dvd/add.php" method="post">

    <p>Title: <input type="text" name="title" size="15" maxlength="15" value="<?php echo $_POST['title']; ?>"></p>
    <p>Quantity Purchased: <input type="text" name="numavail" size="15" maxlength="30" value="<?php echo $_POST['numavail']; ?>"></p>
    <p>
        <?php
            include ('../../../mysqli_connect.php'); // Connect to the db.
            $ddlquery = "SELECT categoryname FROM category ORDER BY categoryname ASC";
            $ddlresult = mysqli_query($dbc, $ddlquery) or die("Bad SQL: $ddlquery");

            echo 'Category: <select name="categoryname" size="1">';
            while($ddlrow=mysqli_fetch_array($ddlresult, MYSQLI_ASSOC)){
            echo "<option value='".$ddlrow['categoryname']."'>" . $ddlrow['categoryname'] . "</option>";
        }
            echo "</select>";
        ?>

    <p>
    <?php
            $ddlquery2 = "SELECT genretype FROM genre ORDER BY genretype ASC";
            $ddlresult2 = mysqli_query($dbc, $ddlquery2) or die("Bad SQL: $ddlquery");

            echo 'Genre: <select name="genretype" size="1">';
            while($ddlrow2=mysqli_fetch_array($ddlresult2, MYSQLI_ASSOC)){
            echo "<option value='".$ddlrow2['genretype']."'>" . $ddlrow2['genretype'] . "</option>";
        }
            echo "</select>";
        ?>
    <p>
    <input type="submit" name="submit" value="Submit">
    <input type=reset value=Reset>
    <input type="hidden" name="submitted" value="TRUE"></p>
    </form>


<?php
// Include footer.php
include("../../includes/footer.php");
?>

1 Ответ

0 голосов
/ 27 апреля 2018

Вы забыли фактически запустить вставку в базу данных

$result = mysqli_query($dbc, $query);
if (mysqli_num_rows($result) == 0) { // if there is no such movie title
    $query = "INSERT INTO dvd (title, numavail, categoryname, genretype)
        VALUES ('$title', '$numavail', '$categoryname', '$genretype')";
    // Make the query.
    $result = mysqli_query($dbc, $query); // <---- ADD HERE
    if ($result) { // If it ran OK.
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...