Обработайте PHP форму на скрытой странице, но оставайтесь на той же странице. Нет Ajax, только php (проект) - PullRequest
0 голосов
/ 18 апреля 2020

Я новичок в PHP, и я уверен, что это распространенное мнение, но 99% ответов, которые я нашел на это, включают AJAX, JQuery и / или JavaScript ,

Мне разрешено использовать только HTML / CSS и PHP в моем проекте, поэтому мне нужна рабочая опция, которая не затрагивает ничего другого.

У меня есть следующие настройки:

  • index. php, это содержит мою структуру формы
  • insert. php, это дезинфицирует / проверяет и вставляет данные формы в таблицу базы данных

Оставив действие как вставку. php отправляет меня на мою вставку. php страницу, которую я хочу сохранить в тайне и только для глаз разработчика ... ничего хорошего.

form action=" " method="post"
// OR
form action="index.php" method="post">

Оставив действие пустым или как индекс. php держит меня на той же странице, но ...
Я хочу сохранить обработку моей формы в отдельном файле (вставить. php) и НЕ на одной странице, если это вообще возможно.

Есть ли у меня какие-либо варианты, которые не слишком сложны в чистом виде PHP?

Спасибо за любой совет.
(PS. Если здесь есть какие-либо вопиющие ошибки или плохая форма, я все уши к конструктивной критике)

Вот снимок моего файла вставки. php файл, если его полезно. Я также могу загрузить свою форму, но она очень проста c (просто выберите курс, введите имя / фамилию, введите идентификатор студента).

// Clean the data coming from the MySQL tables
$course_clean = htmlentities($_POST['course_id']);
$stu_name_clean = htmlentities($_POST['first_last']);
$stu_id_clean = htmlentities($_POST['stu_id']);

// Escape user input coming from forms
$course = mysqli_real_escape_string($open, $_REQUEST['course_id']);
$stu_name = mysqli_real_escape_string($open, $_REQUEST['first_last']);
$stu_id = mysqli_real_escape_string($open, $_REQUEST['stu_id']);

// INSERT DATA 
    $insert = "INSERT IGNORE INTO enrolled (course_id, stu_id) VALUES ('$course', '$stu_id')";
    if(mysqli_query($open, $insert)){
        echo "Records added successfully to ENROLLED.";
    } else{
        echo "ERROR: Could not add records to ENROLLED. " . mysqli_error($open);
    }

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Нечто подобное может быть тем, что вы хотите:

<?php 
if (!empty($_POST)) {
    require "insert.php";
}
?>
<html><head></head><body>
    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
        <input type="text" name="course_id"><br/>
        <input type="text" name="first_last"><br/>
        <input type="text" name="stu_id"><br/>
        <input type="submit">
    </form>
</body></html>

0 голосов
/ 18 апреля 2020

Можно отправить страницу себе и проверить, пусто ли $_POST или нет. Если он пуст, покажите форму страницы, если не вставите данные в базу данных.

<?php if (!empty($_POST)):
    // Clean the data coming from the MySQL tables
    $course_clean = htmlentities($_POST['course_id']);
    $stu_name_clean = htmlentities($_POST['first_last']);
    $stu_id_clean = htmlentities($_POST['stu_id']);

    // Escape user input coming from forms
    $course = mysqli_real_escape_string($open, $_REQUEST['course_id']);
    $stu_name = mysqli_real_escape_string($open, $_REQUEST['first_last']);
    $stu_id = mysqli_real_escape_string($open, $_REQUEST['stu_id']);

    // INSERT DATA 
    $insert = "INSERT IGNORE INTO enrolled (course_id, stu_id) VALUES ('$course', '$stu_id')";
    if(mysqli_query($open, $insert)){
        echo "Records added successfully to ENROLLED.";
    } else{
        echo "ERROR: Could not add records to ENROLLED. " . mysqli_error($open);
    }
else: ?>
    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
        <input type="text" name="course_id"><br/>
        <input type="text" name="first_last"><br/>
        <input type="text" name="stu_id"><br/>
        <input type="submit">
    </form>
<?php endif; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...