2013-03-25 93 views
0

我正在制作一个jQuery移动web应用程序,我正在使用多页面布局。我在页面加载时连接到mySQL,并在第二个div页面上,我有一个表单,使用php文件在提交时将表单中的值发送到mySQL数据库。每当我刷新jquery移动页面时行被插入数据库

我的问题是,每次刷新Web应用程序时,都会将一行插入到数据库的表中。我明显不希望这种情况发生,直到我点击/点击提交按钮。我对Web应用程序开发比较陌生,希望得到任何帮助,看看我做错了什么。

关于如何在多页面布局上通过php最好地插入mySQL数据库的建议会很好。请让我知道是否需要展示更多代码。

<!--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'; 
?> 

再次更新

<?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 
?> 
+0

是的,我们展示了他是如何形成的被处理。 – 2013-03-25 12:37:59

+1

第一类:只使用HTTP-GET方法搜索/获取数据。使用POST进行插入/更新/删除。 – Teson 2013-03-25 12:39:54

回答

1

你需要打出来的插入逻辑和检查的形式是有效的,并准备提交。

伪代码:

// 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 
    ... 
} 
+0

感谢您的帮助Phill。我现在在提交之前检查表单是否有效。但是,如果我将表单元素留空,它仍会对数据库执行插入操作。然后它重定向到空白的url http://localhost/share/add_journey.php。我会在 – 2013-03-25 14:07:20

+1

以上显示我更新的php。您可能还需要检查空值,空白等等,或检查值以及 – 2013-03-25 16:03:05

+0

雅你的权利。谢谢。我更新了add_journey.php以检查是否有空值。我仍然感到困惑,为什么我提交后我重定向到localhost/share/add_journey.php,这是空白的。当我刷新此页面时,我看到了我的错误消息。 – 2013-03-25 17:24:14

相关问题