0

i want to use if(isset($_POST['name'])) loop to test if user enter data so it will store it in database and if not so dont store it even when i refresh the page!!

i've tried to use if(isset($_POST['name'])) loop to test if user enter data so it will store it in database and if not so dont store it even when i refresh the page but doesnt work ! and when i refresh the page it store the last data that i've tried before!!

this is 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>

this is the users.php file :

 <?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`");

} }

i've tried to use if(isset($_POST['name'])) loop to test if user enter data so it will store it in database and if not so dont store it even when i refresh the page but doesnt work ! and when i refresh the page it store the last data that i've tried before!!

Please help!!

it show this error and store the data at the same time !

Notice: Undefined index: name in C:\xampp\htdocs\gestion de paie\index.php on line 10

Notice: Undefined index: age in C:\xampp\htdocs\gestion de paie\index.php on line 10

Notice: Undefined index: email in C:\xampp\htdocs\gestion de paie\index.php on line 10

Naim Blg
  • 131
  • 1
  • 3
  • 12

2 Answers2

0

You can put a condition before you create user, in index file

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>

Also don't put user inputs inside a query without sanitize, i suggest always to controll user inputs before you enter in you sql query:

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`");

Hope to be the needed question :)

  • Unexpected '{' : if(isset($_POST['name']) && isset($_POST['age']) && isset($_POST['email']){ $user=new Users(); $user->insertUser($_POST['name'],$_POST['age'],$_POST['email']); } – Naim Blg Jan 17 '19 at 08:58
0

Instead of isset, you should use !empty (look here), as isset doesn't work for arrays. isset($_POST["anything"]) always returns true, while !empty($_POST["anything"]) only returns true if $_POST["anything"] exists.

 <!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>

Also, you should use Prepared statements.

Korne127
  • 168
  • 14
  • Unexpected '{' : if(isset($_POST['name']) && isset($_POST['age']) && isset($_POST['email']){ $user=new Users(); $user->insertUser($_POST['name'],$_POST['age'],$_POST['email']); } – Naim Blg Jan 17 '19 at 08:59
  • @NaimBouallagui Ok, maybe it's because of the `
      `s… I don't see a reason why you need them. Does it change something if you delete `
        ` and `
      ` and make an empty line between ``and `
    – Korne127 Jan 17 '19 at 13:56