2011-08-21 117 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事件。 –