Reputation: 804
I am making a jquery mobile web app and I am using a multi page layout. I connect to mySQL when the page loads and on the second div page, I have a form which using a php file sends the values in the form to mySQL database when submitted.
My problem is, everytime I refresh the web app, a row is inserted into a table in my database. I obviously don't want this to occur until I click/tap the Submit button. I'm relatively new to web app development and would like any help as to what I'm doing wrong.
Advice on how best to insert to a mySQL database through php on a multi-page layout would be great. Please let me know if I need to show more code.
<!--Top of second page within multi page layout containing form-->
<!-- The POST A JOURNEY page where user creates a journey to be seen by others-->
<div data-role="page" id="postAJourney" data-add-back-btn="true" data-back-btn-text="back" data-rel="back" data-direction="reverse" data-transition="flip" data-theme="b" >
<div data-role="header" data-position="fixed">
<h1>Post A Journey</h1>
</div>
<div data-role="content">
<form action="add_journey.php" method="post" id="postAJourneyForm">
<!--Top of multipage layout-->
<?php
require 'database.php';
?>
UPDATED AGAIN
<?php
//get the journey data
$radUserType = intval($_POST['radUserType']);
$pjFrom = $_POST['pjFrom'];
$pjTo = $_POST['pjTo'];
$radioJourneyType = intval($_POST['radioJourneyType']);
$departDate = $_POST['departDate'];
$returnDate = $_POST['returnDate'];
$textareanotes = $_POST['textAreaNotes'];
//check all values from $_POST
$canSubmitForm = false;
$isFormEmpty = false;
if (empty($radUserType) || empty($pjFrom) || empty($pjTo) || empty($radioJourneyType) || empty($departDate) || empty($returnDate) || empty($textareanotes))
{
$isFormEmpty = true;
}
//check for your data here
if(isset($radUserType) && isset($pjFrom) && isset($pjTo) && isset($radioJourneyType) && isset($departDate) && isset($returnDate) && isset($textareanotes))
{
$canSubmitForm = true;
}
$departTime = '11:12';
$returnTime = '11:16';
$seatcounter = '2';
//will only get executed if true
if ($canSubmitForm)
{
if ($isFormEmpty == false)
{
require_once('database.php');
$query = "INSERT INTO journey
(from_destination,to_destination,journey_type,depart_date,depart_time,return_date,return_time,seats_available,journey_message,user_type)
VALUES('$pjFrom','$pjTo','$radioJourneyType','$departDate','$departTime','$returnDate','$returnTime','$seatcounter','$textareanotes','$radUserType')";
$db->exec($query);
// Perform Query
//$result = mysql_query($query);
//if($result === true)
//{
// $result = 'success';
//}
//else
//{
// $result = 'insertion failure' . mysql_error();
//}
include('index.php');
}
}
else
{
$error = "Invalid product data. Check all fields and try again.";
include('error.php');
}
//Display the Product List page
?>
Upvotes: 0
Views: 602
Reputation: 85348
You need to break out the Insert logic and check if the form is valid and ready to submit.
pseudo code:
// check all values from $_POST
$canSubmitForm = false;
// check for your data here
// might want to verify type as well
if (isset($radUserType) && isset($pjFrom) && isset($pjTo) && isset($radioJourneyType))
{
$canSubmitForm = true;
}
// will only get executed if true
if ($canSubmitForm)
{
require_once('database.php');
$query = "INSERT INTO journey
(from_destination,to_destination,journey_type,depart_date,depart_time,return_date,return_ti me,seats_available,journey_message,user_type)
VALUES('$pjFrom','$pjTo','$radioJourneyType','$departDate','$departTime','$returnDate','$re turnTime','$seatcounter','$textareanotes','$radUserType')";
$db->exec($query);
// Perform Query
$result = mysql_query($query);
// the rest of your code here
...
}
Upvotes: 1