Click here to Skip to main content
13,049,172 members (64,539 online)
Rate this:
Please Sign up or sign in to vote.
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, when I click/tap the submit button it inserts into the database even if there is no data in the form elements and redirects to my localhost/share/add_journey.php. 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 data-role="content">
            <form action="add_journey.php" method="post" id="postAJourneyForm">
<!--Top of multipage layout-->
require 'database.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($pjFrom) || empty($pjTo))
	$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)
	$query = "INSERT INTO journey
	$error = "Invalid product data. Check all fields and try again.";
//Display the Product List page
Posted 25-Mar-13 4:57am
Updated 25-Mar-13 9:38am

1 solution

Rate this: bad
Please Sign up or sign in to vote.

Solution 1

Try modifying your if condition as shown below
if ((isset($_POST['radUserType']) && !empty($_POST['radUserType'])) && (isset($_POST['pjFrom']) && !empty($_POST['radUserType'])) && (isset($_POST['pjTo']) && !empty($_POST['pjTo'])) && (isset($_POST['radioJourneyType']) && !empty($_POST['radioJourneyType'])) && (isset($_POST['departDate']) && !empty($_POST['departDate'])) && (isset($_POST['returnDate']) && !empty($_POST['returnDate'])) && (isset($_POST['textAreaNotes']) && !empty($_POST['textAreaNotes'])))

isset alone won't work as blank values will also get sent as part of POST request and isset only checks whether a variable or array element is set or not. Which in this case will always return true. Adding !empty will ensure that the value is also present.

Colin Roe 25-Mar-13 15:45pm
Thanks Prasad. I updated my php. Can I ask if you know why after I click/tap "Submit" on my form, if the insert occurs, I am redirected to the index page with the url (http://localhost/share/add_journey.php) while if there is an error with the form, I am directed to the same url (http://localhost/share/add_journey.php), but is blank. Only if I refresh the page, do I see the error.php page.
Prasad Khandekar 26-Mar-13 4:45am
In case of error the php execution halts and hence you don;t get to see the page. If you do a view source from browser you might as weel see the partial html code.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy | Mobile
Web02 | 2.8.170713.1 | Last Updated 25 Mar 2013
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100