Click here to Skip to main content
15,886,873 members
Please Sign up or sign in to vote.
4.00/5 (1 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.

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

PHP
<?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)
	{
	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);
	
	include('index.php');
	}
}
else
{
	$error = "Invalid product data. Check all fields and try again.";
	include('error.php');
}
//Display the Product List page
?>
Posted
Updated 25-Mar-13 9:38am
v3

1 solution

Try modifying your if condition as shown below
PHP
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.

Regards,
 
Share this answer
 
Comments
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)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900