嗨,我目前使用javascript来调用在辅助页面上运行sql查询的小函数。我有大约4到5个这样的小脚本,我只是想知道如何将它们放在一起,并能够从这个页面中调用我需要的脚本,而不是有5个不同的脚本,其中有3到5行代码。我的代码和过程如下。
首先是我目前正在使用的JavaScript。
$("select#principle").attr("disabled","disabled");
$("select#type").change(function(){
var id = $("select#type option:selected").attr('value');
$("select#principle").attr("disabled","disabled");
$("select#principle").html("<option>wait...</option>");
$.post("select_principle.php", {id:id}, function(data){
$("#Options").addClass("active");
$("select#principle").removeAttr("disabled");
$("select#principle").html(data);
});
});
这是一个JavaScript函数,我使用它来检查是否选择了下拉框,然后删除下一个下拉框的disable属性。但是正如您所看到的,有一个$.Post
,它调用PHP页面。
被调用的页面是
<?php
include "select.class.php";
echo $opt->ShowPrinciple();
?>
这是进入select.class.php页面并运行sql查询的php代码。这也是我有多个的代码。我希望这个代码在一个脚本中,其他脚本以相同的方式调用其他函数,但它们只有在被调用时才能运行。
运行的SQl查询低于
// this displays the principle when called
public function ShowAllPrinciple()
{
$sql = "SELECT principle.principle_id,principle.description,principle.section_id,COUNT(media.principle_id) as media_count
FROM principle
LEFT OUTER JOIN media ON principle.principle_id = media.principle_id
AND principle.section_id = media.section_id
WHERE principle.section_id={$_POST['id']}
GROUP BY principle.principle_id,principle.description";
$res = mysql_query($sql,$this->conn);
$principle = '<option value="%">choose...</option>';
while($row = mysql_fetch_array($res))
{
$principle .= '<option value="' . $row['principle_id'] . '">' . $row['description']. '...('.$row['media_count'].') </option>';
}
return $principle;
}
这只是一个简单的SQL查询,它连接到数据库,然后获取数据并将其显示在下拉框中。
关于如何将这些小脚本放在一个页面中并使用JavaScript调用特定函数的任何想法——只有小脚本才需要在PHP页面中,SQL查询在PHP页面内——这一点无法改变。
<?php
include "select.class.php";
echo $opt->ShowPrinciple();
?>
任何帮助都将不胜感激
根据你的问题,我认为你需要这样的东西:
<?php
include "select.class.php";
switch ($_POST['action']) {
case "firstAction":
echo $opt->ShowPrinciple();
break;
case "secondAction":
echo $opt->ShowSomethingElse();
break;
case default:
echo 'something went wrong';
break;
}
?>
其中$action
是您必须在url中发布或添加的操作。
javascript示例:第一个选择框的Javascript
$("select#type").change(function() {
var id = $("select#type option:selected").attr('value');
$("select#principle").attr("disabled", "disabled");
$("select#principle").html("<option>wait...</option>");
$.post("select_principle.php", {action: 'firstAction', id: id}, function(data) {
$("#Options").addClass("active");
$("select#principle").removeAttr("disabled");
$("select#principle").html(data);
});
});
第二个选择框的Javascript
$("select#type").change(function() {
var id = $("select#principle option:selected").attr('value');
$.post("select_principle.php", {action: 'sencondAction', id: id}, function(data) {
$("select#principle").html(data);
});
});
注意,我没有测试这个代码。一旦您进行了更改,脚本就会将操作以及id发布到php文件中。在开关中是基于php文件中的$_POST['action']
。