2011-08-21 120 views
0

我做了一個簡單的(非常規)表單,它將每個答案存儲爲一個變量(我這樣做是因爲某些問題不會被回答,因爲出現的問題取決於您在上一個問題上回答的問題)。如何通過php將這些JQuery變量傳遞給Mysql?

我想將它發送給一個php文件,該文件將搜索Mysql數據庫中是否存在匹配項,並以xml格式返回。

下面是變量:

  • 正確答案爲:如果填寫,必須等於什麼是在MySQL
  • Checkbox1/2/3/3:如果一個或多個將檢索數據這些被檢查。例如,如果選中「咖啡」和「果汁」,則將返回咖啡或果汁設爲真的行。
  • Dropdown1/2:二是從/到指定範圍的

這裏的變量是我的代碼:) http://jsfiddle.net/pufamuf/S6smg/1/

HTML:

<div id="que1">Question One: 
    <input id="inp1" type="text"> 
    <input type="button" value="Next Question" id="but1"></div> 

<div id="que2" class="hiddendiv">Question Two:<br> 
    <input type="checkbox" id="checkbox1" value="coffee">Coffee<br> 
    <input type="checkbox" id="checkbox2" value="tea">Tea<br> 
    <input type="checkbox" id="checkbox3" value="latte">Latte<br> 
    <input type="checkbox" id="checkbox4" value="juice">Juice<br> 
    <input type="button" value="Next Question" id="but2"></div> 

<div id="que3" class="hiddendiv">Question Three: 
    From: 
    <select id="dropdown1"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    </select> 
    To: 
    <select id="dropdown2"> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    </select> 
    <input type="button" value="Finish" id="but3"></div> 

<br><br><br> 
<b>Variables</b><br> 
Answer1:<div id="answer1"></div> 
Checkbox1:<div id="answer2a"></div> 
Checkbox2:<div id="answer2b"></div> 
Checkbox3:<div id="answer2c"></div> 
Checkbox4:<div id="answer2d"></div> 
Dropdown1:<div id="answer3a"></div> 
Dropdown2:<div id="answer3b"></div> 

的Jquery:

$("input[type='button']").click(function() { 
    var question1 = ''; 
    var question2a = ''; 
    var question2b = ''; 
    var question2c = ''; 
    var question2d = ''; 
    var question3a = ''; 
    var question3b = ''; 
    switch (this.id) { 
    case 'but1': 
     question1 = $("#inp1").val(); 
     $("#answer1").html(question1); 
     $('#que1').addClass('hiddendiv'); 
     $('#que2').removeClass('hiddendiv'); 
    break; 
    case 'but2': 
     if($('#checkbox1').is(':checked')){ 
     question2a = '1'; 
     } 
     if($('#checkbox2').is(':checked')){ 
     question2b = '1'; 
     } 
     if($('#checkbox3').is(':checked')){ 
     question2c = '1'; 
     } 
     if($('#checkbox4').is(':checked')){ 
     question2d = '1'; 
     } 
     $("#answer2a").html(question2a); 
     $("#answer2b").html(question2b); 
     $("#answer2c").html(question2c); 
     $("#answer2d").html(question2d); 
     $('#que2').addClass('hiddendiv'); 
     $('#que3').removeClass('hiddendiv'); 
    break; 
    case 'but3': 
     question3a = $("#dropdown1").val(); 
     question3b = $("#dropdown2").val(); 
     $('#que3').addClass('hiddendiv'); 
     $("#answer3a").html(question3a); 
     $("#answer3b").html(question3b); 
    break; 
} 
}); 

非常感謝大家:)))!

這裏是PHP文件看起來像現在我的舊的HTML表單:

<?php 
require("db_access.php"); 

function parseToXML($htmlStr) 
{ 
$xmlStr=str_replace('<','&lt;',$htmlStr); 
$xmlStr=str_replace('>','&gt;',$xmlStr); 
$xmlStr=str_replace('"','&quot;',$xmlStr); 
$xmlStr=str_replace("'",'&#39;',$xmlStr); 
$xmlStr=str_replace("&",'&amp;',$xmlStr); 
return $xmlStr; 
} 

$name=$_POST['name']; 
$address=$_POST['address']; 
$type=$_POST['type']; 


// Opens a connection to a MySQL server 
$connection=mysql_connect (localhost, $username, $password); 
if (!$connection) { 
    die('Not connected : ' . mysql_error()); 
} 

// Set the active MySQL database 
$db_selected = mysql_select_db($database, $connection); 
if (!$db_selected) { 
    die ('Can\'t use db : ' . mysql_error()); 
} 




// Select all the rows in the markers table 
$inputs = array('name', 'address', 'type'); 
$where = array(); 

foreach($inputs as $input) 
{ 
    if(!empty($_POST[$input])) { 
     $where[] = "{$input} = '" . mysql_real_escape_string($_POST[$input]) . "'"; 
    } 
} 

if ($where) { 
    $query = 'SELECT * FROM markers WHERE ' . implode(' AND ', $where); 
} else { 
    user_error("No rows returned by:<br />\n$query"); 
} 
$result = mysql_query($query); 
if($result == false) { 
    die(mysql_error() . "<br />\n$query"); 
} 
if(mysql_num_rows($result) == 0) { 
    user_error("No rows returned by:<br />\n$query"); 
} 

header("Content-type: text/xml"); 

// Start XML file, echo parent node 
echo '<markers>'; 

// Iterate through the rows, printing XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    echo '<marker '; 
    echo 'name="' . parseToXML($row['name']) . '" '; 
    echo 'address="' . parseToXML($row['address']) . '" '; 
    echo 'type="' . parseToXML($row['type']) . '" '; 
    echo 'lat="' . $row['lat'] . '" '; 
    echo 'lng="' . $row['lng'] . '" '; 
    echo '/>'; 
} 

// End XML file 
echo '</markers>'; 

?> 

回答

1

你需要做一個HTTP請求到PHP頁面,並處理在服務器端表單數據。根據表單類型,它將在$_GET$_POST之間。

如果你想使用AJAX,你可以使用form plugin或手動收集數據並使用$.get提交。

  1. 爲每個表單元素分配一個name值。
  2. 使用name從表格中提取數據,例如,如果該字段的名稱爲foo,並且您使用POST請求數據,則將使用$_POST['foo']
+0

嗨,尼克,我發佈了一個PHP源代碼,我現在使用一個簡單的3問題表單。但是,我不知道如何將這些變量移入該文件 – pufAmuf

+0

啊,所以我甚至不需要使用變量呢?然而,我只是意識到,我有一個問題,四個按鈕決定下一個問題將是什麼 - 這就是爲什麼我決定使用變量。我能以某種方式將某個按鈕點擊轉移到名稱值嗎? – pufAmuf

+1

沒有冒犯,但你應該考慮寫一本關於PHP/JavaScript的書。這是非常基本的東西。你可以在jQuery中使用'$ .bind'綁定click事件。 –