3

I just start coding in PHP, i wrote my first php + mysql program for inserting data through web form. it works fine, but whenever i refresh the page, it automatically saves null record to my database. i know the solution in .NET is ispostback, but not in php? can somebody give me some idea in PHP.

Code is here:

<body>
<form action="mySQLTest.php" method="post">
First Name :<input type="text" name ="txtFirstName"/> <br/>
Last Name: <input type="text" name ="txtLastName"/>   <br/>
Age : <input type="text" name= "txtAge" /> <br/>
<input type="submit"/>
</form>
<?php
   $con = mysql_connect("localhost","root","");
   if(!$con)
   {
    die('Could not Connect:' .mysql_error());
   }

   mysql_select_db("test", $con);

   if($_REQUEST[])
   {

   $sql1 = "Insert into info(FirstName, LastName, Age) Values('$_POST[txtFirstName]','$_POST[txtLastName]','$_POST[txtAge]')";
   }
   if(!mysql_query($sql1, $con))
   {
    die('Error: '.mysql_error());
   }
   else                                
   {
   echo "1 Record Added";
   }

   mysql_close($con)
?>
</body>
CResults
  • 5,100
  • 1
  • 22
  • 28
subeer haldar
  • 137
  • 2
  • 13
  • Dupe: http://stackoverflow.com/questions/4242035/checking-if-request-is-post-back-in-php – Radu Jul 26 '11 at 14:19

2 Answers2

5

Have you tried if ($_SERVER['REQUEST_METHOD']=='POST')

updated answer:

if ($_SERVER['REQUEST_METHOD']=='POST') {
[insert...]
header('Location: added_record.php');
}
David Aleu
  • 3,922
  • 3
  • 27
  • 48
2

When you use the POST-method, it's better (imho) to use $_POST rather than $_REQUEST. To check whether you have data, you could use isset($_POST['txtFirstName']);. If you need all data, it's best to do this for all input fields, resulting in

if(isset($_POST['txtFirstName']) && isset($_POST['txtLastName']) && isset($_POST['txtAge'])) {
    // do stuff
}

If you want to know if there was any field submitted using post, you could use if(!empty($_POST)) {.

On a side note: I know you are just starting PHP, it could be quite dangerous to use user-generated code in queries. When you are building stuff online, for everyone to reach, please read a bit about SQL injection. This will also prevent your code from breaking when someone enters an apostrophe (').

Daan Wilmer
  • 937
  • 4
  • 13