[英]how can I use jquery variable in mysql query
目前,我正在使用$ _GET来查询mysql并填充一条select语句,这很好用。 但是,我现在需要使用jquery变量查询数据库,并且无法找到使用'depts'而不是'$ _GET ['dept']'的方法。
我已经声明了var全局变量,但是意识到不能在查询中使用var。
如果有人可以向我展示如何修改代码以实现此目标,我将不胜感激。 谢谢
PHP代码来填充选择
<?php
$conn = mysql_connect("localhost", "root", "");
mysql_select_db("sample", $conn);
$result = mysql_query("SELECT * FROM boxes where department = '{$_GET['dept']}' and status = 1 ORDER BY custref ASC");
?>
<select name="boxdest[]" id="boxdest" size="7" multiple="multiple">
<?php
$i=0;
while($row = mysql_fetch_array($result)) {
?>
<option value="<?php echo $row["custref"];?>"><?php echo $row["custref"];?></option>
<?php
$i++;
}
?>
</select>
jQuery更改事件代码
<script type="text/javascript">
var depts;
$('#dept').on('change', function() {
depts = $('#dept option:selected').html();
if (depts === 'Select a Department') {
$('#deptResult').html('<p>ERROR: You must Select a department to proceed<p/>').css({'color':'red'});
$( "#submit" ).prop( "disabled", true );
return;
}
$('#deptResult').html('<p>SUCCESS: You have selected the following dept: ' + depts + '</p>').css({'color':'black'});
});
</script>
像这样使用jQuery ajax()
:
$.ajax({
url : 'process.php',
method : 'get',
async : false,
data : {
variable : value,
// you can pass multiple variables like this and this is available in php like $_REQUEST['variable']
},
success : function(response){
// do what ever you want with the server resposne
}
});
process.php:
$variable = $_REQUEST['variable']; // you can use $variable in mysql query
你是否可以? 是
您必须使用AJAX
。 我可以建议为此任务设计简单的API。 使用JSON的示例:
<?php
function output($arr) {
echo json_encode($arr);
exit();
}
if (!isset($_GET['dept'])) {
output([
'success' => false,
"message" => "Department not defined"
]);
}
$mysqli = new mysqli("localhost", "root", "", "test");
if ($mysqli->connect_errno) {
output([
'success' => false,
'dept' => $_GET['dept'],
'message' => "Connect failed: ". $mysqli->connect_error
]);
}
$result = $mysqli->query("SELECT DISTINCT(`department`) FROM `boxes`");
if (!$result) {
output([
'success' => false,
'dept' => $_GET['dept'],
'message' => "Query failed"
]);
}
$departments = [];
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
$departments[] = $row['department'];
}
if (!in_array($_GET['dept'], $departments)) {
output([
'success' => false,
'dept' => $_GET['dept'],
'message' => "Department not present in database"
]);
}
$result = $mysqli->query("SELECT `custref` FROM `boxes` WHERE `department`='". $_GET['dept'] ."' ORDER BY `custref` ASC");
if (!$result) {
output([
'success' => false,
'dept' => $_GET['dept'],
'message' => "Query failed"
]);
}
$custref = [];
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
$custref[] = $row['custref'];
}
output([
'success' => true,
'dept' => $_GET['dept'],
'custref' => $custref
]);
$result->free();
$mysqli->close();
$(function () { $('select[data-key][data-value]').each(function (i, element) { var key = $(element).data("key"); var value = $(element).data("value"); var $originSelector = $('[name="'+ key +'"]'); /** * Get options from element by name */ function getOptions () { var request = {}; request[key] = $originSelector.val(); $.ajax({ url: "./api.php", method: "GET", dataType: "json", data: request }).done(function(data) { setOptions(data); }); } /** * Remove old options */ function clearOptions () { $(element).find('option').remove(); } /** * Put new options in input */ function setOptions (data) { if (data['success'] && data[value] !== undefined) { clearOptions(); $.each(data[value], function (i, option) { $(element).append('<option value="'+ option +'">'+ option +'</option>'); }); } } getOptions(); $originSelector.on("change", function () { getOptions(); }); }); });
<select name="dept"> <option value="accounting">Accounting</option> <option value="it">Information technology</option> </select> <select name="boxdest[]" id="boxdest" size="7" multiple="multiple" data-key="dept" data-value="custref"></select> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.