Re: Refresh (F5) adds another SQL record.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 2008-12-07 at 16:44 +0000, Bhupendra Patel wrote:
> I've found a way that works for me.
> 
> Using the START SESSION on the initial form, e.g.
> <?php
> session_start();
> // store session data
>     $_SESSION['form'] = "1";
> ?>
> 
> and the using the code below in the processing form.
> 
> You can do a check if the user has already submitted the from by the initial
> session that starts then he/she is on the submitting form. If it is already
> set it can continue, else stop and redirect.
> MAKE SURE to put the unset session at the end of the form.
> 
> <html>
> <head>
>   <title>Add Publication</title>
> </head>
> <body>
> <h1>Add</h1>
> <?php
> // Check session
>     session_start();
>     if ($_SESSION['form'] == 1)
>     {
>       // create short variable names
>       $producttype=$_POST['producttype'];
>       $producttitle=$_POST['producttitle'];
>       $productdescription=$_POST['productdescription'];
>       $productauthor=$_POST['productauthor'];
>       $productlang=$_POST['productlang'];
>       $productprice=$_POST['productprice'];
>       $productstatus=$_POST['productstatus'];
>       $productimg=$_POST['productimg'];
>     }
>     else
>     {
>       echo 'Go back and complete the form';
>       echo header('Location: insertpublication.php');
>       exit;
>     }
> // End session checking
> 
>   if (!$producttype || !$producttitle || !$productauthor || !$productlang ||
> !$productprice || !$productstatus)
>   {
>      echo 'You have not entered all the required details.<br />'
>           .'Please go back and try again.';
>           unset($_SESSION['form']);
>      exit;
>   }
> 
>   @ $prodb = new mysqli('I DONT THINK SO!!!');
>   if (mysqli_connect_errno())
>   {
>      echo 'Error: Could not connect to database.  Please try again later.';
>      exit;
>   }
>   $query = "INSERT into tblproductinfo
>             (ProductType, ProductTitle, ProductDesc, ProdAuthor,
> ProductLang, ProductPrice, ProductStatus, ProductImg)
>             VALUES
>             ('".$producttype."', '".$producttitle."',
> '".$productdescription."', '".$productauthor."', '".$productlang."',
>             '".$productprice."', '".$productstatus."', '".$productimg."')";
> 
>   $result = $prodb->query($query);
>   if ($result)
>       echo  $prodb->affected_rows.' book inserted into database.';
> 
>   $queryshow = "
>     SELECT
>         tblproductinfo.ProductID,
>         tblproductinfo.ProductTitle,
>         tblproductinfo.ProductDesc,
>         tblproductinfo.ProductPrice,
>         tblproductinfo.ProductTQty,
>         tblproductinfo.ProductImg,
>         tblauthor.AuthorName,
>         tblproductlang.ProductLang,
>         tblproducttype.ProductType,
>         tblproductstatus.ProductStatus
>     FROM
>         tblproductinfo
>     Inner Join tblproductstatus ON tblproductinfo.ProductStatus =
> tblproductstatus.ProductStatusID
>     Inner Join tblproductlang ON tblproductinfo.ProductLang =
> tblproductlang.ProductLangID
>     Inner Join tblauthor ON tblproductinfo.ProdAuthor = tblauthor.AuthorID
>     Inner Join tblproducttype ON tblproductinfo.ProductType =
> tblproducttype.ProductTypeID";
>   $resultshow = $prodb->query($queryshow);
> 
>   $num_results = $resultshow->num_rows;
>   echo '
>   <table width="700" border="1">
>    <tr>
>       <td>
>          Book ID
>       </td>
>       <td>
>          Type
>       </td>
>       <td>
>          Title
>       </td>
>       <td>
>          Description
>       </td>
>       <td>
>          Author
>       </td>
>       <td>
>          Language
>       </td>
>       <td>
>          Price
>       </td>
>       <td>
>          Status
>       </td>
>       <td>
>          Image
>       </td>
>    </tr>';
>   for ($i=0; $i <$num_results; $i++)
>   {
>      $row = $resultshow->fetch_assoc();
>      echo '<tr>';
>      echo '<td>'.($row['ProductID']).'</td>';
>      echo '<td>'.($row['ProductType']).'</td>';
>      echo '<td>'.($row['ProductTitle']).'</td>';
>      echo '<td>'.($row['ProductDesc']).'</td>';
>      echo '<td>'.($row['AuthorName']).'</td>';
>      echo '<td>'.($row['ProductLang']).'</td>';
>      echo '<td>£'.($row['ProductPrice']).'</td>';
>      echo '<td>'.($row['ProductStatus']).'</td>';
>      echo '<td><a href=images/'.($row['ProductImg']).'>Preview image
> </a></td>';
>      echo '</tr>';
>    };
>   echo '</table>';
> 
>   unset($_SESSION['form']);
> 
>   $prodb->close();
> ?>
> </body>
> </html>
Would redirecting the user with a header() request do the job? Or,
failing that, how about outputting a
<script>location.href='foo.com'</script> line?


Ash
www.ashleysheridan.co.uk


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux