Использование метода if (isset ($ _ POST [''])), чтобы увидеть, сохранит ли пользователь введенные данные, чтобы сохранить их, а если нет, не сохранит, когда я обновлю страницу - PullRequest
0 голосов
/ 16 января 2019

Я хочу использовать цикл if (isset ($ _ POST ['name'])), чтобы проверить, вводит ли пользователь данные, чтобы они сохраняли их в базе данных, и если нет, не сохраняйте их, даже когда я обновляю страницу !!

Я пытался использовать цикл if (isset ($ _ POST ['name'])), чтобы проверить, вводит ли пользователь данные, чтобы он сохранял их в базе данных, и если нет, не сохраняйте их, даже когда я обновляю страницу, но не работает! и когда я обновляю страницу, на ней хранятся последние данные, которые я пробовал раньше !!

это index.php:

<!DOCTYPE html>
<html>
<body>
<ul><?php
  require "controller/database.php";
  require "controller/users.php";


  $user=new Users();
  $user->insertUser($_POST['name'],$_POST['age'],$_POST['email']);


?></ul>

<form action="" method="POST">


<input type="text" name="name" required placeholder="Name"><br><br>

<input type="number" name="age" required placeholder="Age" ><br><br>
<input type="text" name="email" required placeholder="Email" ><br><br>

<button type="submit" name="insert" value="Add Data To Database"></button>

</form>
</body>
</html>

это файл users.php:

 <?php
 class Users extends DB {
    function insertUser($name,$age,$email){

     $query = "INSERT INTO users (name, age, email )
    VALUES ('$name', '$age', '$email')";

            $res=$this->insert($query);

    //return $this->select("SELECT * FROM `users`");

} }

Я пытался использовать цикл if (isset ($ _ POST ['name'])), чтобы проверить, вводит ли пользователь данные, чтобы он сохранял их в базе данных, и если нет, не сохраняйте их, даже когда я обновляю страницу, но не работает! и когда я обновляю страницу, на ней хранятся последние данные, которые я пробовал раньше !!

Пожалуйста, помогите !!

показывает эту ошибку и одновременно сохраняет данные!

Примечание: неопределенный индекс: имя в C: \ xampp \ htdocs \ gestion de paie \ index.php в строке 10

Примечание: неопределенный индекс: возраст в C: \ xampp \ htdocs \ gestion de paie \ index.php в строке 10

Примечание: неопределенный индекс: электронная почта в C: \ xampp \ htdocs \ gestion de paie \ index.php в строке 10

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Вместо isset, вы должны использовать !empty ( смотрите здесь ), так как isset не работает для массивов. isset($_POST["anything"]) всегда возвращает true, в то время как !empty($_POST["anything"]) возвращает true, только если существует $_POST["anything"].

 <!DOCTYPE html>
<html>
<body>
<ul><?php
    require "controller/database.php";
    require "controller/users.php";

    if (!empty($_POST['name']) && !empty($_POST['age']) && !empty($_POST['email']) {
        $user=new Users();
        $user->insertUser($_POST['name'],$_POST['age'],$_POST['email']);
    }

?></ul>

<form action="" method="POST">


<input type="text" name="name" required placeholder="Name"><br><br>

<input type="number" name="age" required placeholder="Age" ><br><br>
<input type="text" name="email" required placeholder="Email" ><br><br>

<button type="submit" name="insert" value="Add Data To Database"></button>

</form>
</body>
</html>

Кроме того, вы должны использовать подготовленные заявления.

0 голосов
/ 16 января 2019

Вы можете поместить условие перед созданием пользователя, в индексном файле

index.php

 <!DOCTYPE html>
<html>
<body>
<ul><?php
  require "controller/database.php";
  require "controller/users.php";

  if(isset($_POST['name']) && isset($_POST['age']) && isset($_POST['email']){
    $user=new Users();
    $user->insertUser($_POST['name'],$_POST['age'],$_POST['email']);
  }

?></ul>

<form action="" method="POST">


<input type="text" name="name" required placeholder="Name"><br><br>

<input type="number" name="age" required placeholder="Age" ><br><br>
<input type="text" name="email" required placeholder="Email" ><br><br>

<button type="submit" name="insert" value="Add Data To Database"></button>

</form>
</body>
</html>

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

users.php:

 <?php
 class Users extends DB {
    function insertUser($name,$age,$email){

    // Sanitize your data always don't trust user
    $name = mysql_real_escape_string($name);
    $age = mysql_real_escape_string($age);
    $email = mysql_real_escape_string($email);

    $query = "INSERT INTO users (name, age, email )
    VALUES ('$name', '$age', '$email')";

    $res=$this->insert($query); //return $this->select("SELECT * FROM `users`");

Надеюсь, что вам нужен вопрос :)

...