我希望找到一种方法,在我的每个网页部分的根目录中放置一个页面,以保存我正在呼叫的所有数据库查询。
我正在使用一个小脚本.....
<script type="text/javascript">
$(function() {
var availableTags = <?php include('fn-search-em.php'); ?>;
$("#quick-add").autocomplete({
source: availableTags,
autoFocus:true
});
});
</script>
....执行用户输入时显示的SQL搜索。与此类似....
$sql = "SELECT * FROM stock_c_colours WHERE current_c_status = 'current' AND deleted = 'no'";
$result = mysqli_query($conn, $sql);
$results_list = array();
while($row = mysqli_fetch_array($result))
{
$colour_id = $row['id'];
$range_name = $row['range_name'];
$range_colour = $row['colour'];
$colour_code = $row['code'];
$p1 = $row['piece_size_1'];
$p2 = $row['piece_size_2'];
if($p1 > 1){
$p_mark = 'x';
}
else {
$p_mark = '';
}
$results_list[] = $range_name.' ('.$range_colour.' '.$colour_code.' '.$p1.$p_mark.$p2.') ID:'.$colour_id;
}
echo json_encode($results_list);
将一个JSON数组形式的列表回显到文本框,然后是列表。但是,我现在正在处理的网站有大约20个搜索框,出于各种原因散布在周围(用户请求),这是否意味着我必须拥有20个单独的php功能页面,每个页面都有自己的查询,或者可以使用单页吗?
我怀疑java需要修改一点才能在多个查询的页面上调用特定的函数,但我对Java并不擅长,所以非常感谢一些帮助。
我最初尝试在Java脚本中添加?action =到PHP地址的末尾,希望另一端的GET能够将PHP端分成几个部分,但没有运气。
答案 0 :(得分:1)
你可以通过创建一个带有switch语句的php文件来控制在Ajax调用期间执行的代码:
JS:
$.ajax({url: 'ajax.php', method: 'POST', async:true, data: 'ari=1&'+formData,complete: function(xhr){ var availableTags = JSON.parse(xhr.responseText);}});
PHP:
<?php
switch($_REQUEST['ari']){
case 1:
$sql = "SELECT * FROM stock_c_colours WHERE current_c_status = 'current' AND deleted = 'no'";
$result = mysqli_query($conn, $sql);
$results_list = array();
while($row = mysqli_fetch_array($result)){
$colour_id = $row['id'];
$range_name = $row['range_name'];
$range_colour = $row['colour'];
$colour_code = $row['code'];
$p1 = $row['piece_size_1'];
$p2 = $row['piece_size_2'];
if($p1 > 1){$p_mark = 'x';}
else { $p_mark = ''; }
$results_list[] = $range_name.' ('.$range_colour.' '.$colour_code.' '.$p1.$p_mark.$p2.') ID:'.$colour_id;
}
echo json_encode($results_list);
break;
case 2:
// another SQL Query can go here and will only get run if ARI == 2
break;
}
?>
这允许您将多个AJAX处理程序保存在同一个文件中,只需在调用PHP文件时传递所需处理程序的索引,否则不会发生任何事情。
答案 1 :(得分:1)
您需要将<?php include('fn-search-em.php'); ?>;
更改为<?php $action = 'mode1'; include('fn-search-em.php'); ?>;
。
然后在fn-search-em.php
文件中,使用$action
变量来确定您的MySQL查询类型。
例如:
if ($action == 'mode1')
$sql = "SELECT * FROM stock_c_colours WHERE current_c_status = 'current' AND deleted = 'no'";
else
$sql = "SELECT * FROM stock_c_colours WHERE current_c_status = 'mode1' AND deleted = 'no'";