我正在使用scriptcase
php 代码生成器。我有一个搜索表单,其中包含 4 个搜索字段,具体取决于彼此的数据。我想要实现的是以下内容:
- 如果用户
state
在第一个字段中选择 ,则第二个字段应自动填充cities
thatstate
。 - 选择后
city
,第三个字段将自动填充schools
该城市的。
我所有的数据都存储在数据库中的一个表中。我正在使用PHP
和MySQL
。
非常感谢任何帮助、提示或方向!
谢谢你们!
米雷拉
我考虑过这个解决方案,但我们会考虑到我们不能在 scriptcase 中包含其他 php 文件......
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$("#monedha").change(function()
{
var val=$(this).val();
var dataString="&val="+val;
//var dataString= fatura_file;
$.ajax
({
type: "GET",
url: "modules.php?name=Expenses_2&file=get_monedha_ajax",
data: dataString,
cache: false,
success: function(html)
{
$("#select_tr").empty();
$("#select_tr").append(html);
}
});
});
});
</script>
<?php
echo "<td align='right' width='50%' nowrap>Monedha:</td>";
echo "<td align='left' colspan='3'>";
echo "<select name='monedha' id='monedha'>";
echo "<option value='ALL' selected >Lek</option>";
echo "<option value='EUR' $ee>Euro</option>";
echo "<option value='USD' $eu>USD</option>";
echo "<option value='GBP' $eg>GBP</option>";
echo "</select>";
echo "</td>";
echo "</tr>";
echo "<tr bgcolor='$bgcol[0]'>";
echo "<td align='right' width='50%'>Llogaria:</td>";
echo "<td align='left' colspan='3'>";
if($error[11]) echo "<b><font color='red'>Please select Llogaria!</font></b><br>";
echo "<div >";
$kat = $db->sql_query("SELECT * FROM nuke_banks WHERE monedha='lek' OR monedha='ALL'");
echo "<select name='lloji' id='select_tr'>";
while($r = $db->sql_fetchrow($kat))
{
echo "<option value='".$r['id']."'> - ".$r['emer']."</option>";
}
echo "</select>";
echo "</div>";
?>
modules.php?name=Expenses_2&file=get_monedha_ajax
这是用于调用第二个下拉内容的 php 文件:
if( isset($_GET['val'])){
$kat = $db->sql_query("SELECT * FROM banks $_GET['val']");
while($r = $db->sql_fetchrow($kat))
{
echo "<option value=".$r['id']."> - ".$r['emer']."</option>";
}
}
我不知道它可以在 scriptcase 中以这种方式使用...注意:这不是 scriptcase 代码。这只是一个例子
这个问题可以从 Scriptcase 中完全解决。
以州和城市为例。假设这些是分别称为 state_id 和 city_id 的字段。
在 state_id 字段中选中 Ajax 处理框并选择刷新 city_id 字段。
在 city_id 字段中,将 select 语句设置为
SELECT city_id,city_name
FROM city_list
WHERE state_id = {state_id}
您现在应该发现选择州将刷新城市列表。您可以根据需要在多个级别重复和级联此过程。在大多数情况下,将“使用标题”设置为是很有帮助,这样您就可以在下拉列表的顶部看到一个空白行。
function search(){
$q=$_GET["entry"];
$b=array();
$a; //get your database values to variable a;
if (strlen($q) > 0){
$lq=strtolower($q);
for($i=0; $i<count($a); $i++){
$la=strtolower($a[$i]->state);
if ((substr_count($la,$lq))>0){
$b[]=$a[$i]->state;
}
}
}
if (count($b)==0){
$response="no name exits with ". "<b>".$q."</b>";
echo $response;
} else {
$response=json_encode($b);
echo $response;
}
}
这是在 ajax 调用后使用数据库值搜索的代码,现在在第一页中将其用于 ajax 调用并使用 ajax 构建选择框
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
function showhint(str){
if (str.length==0){
document.getElementById("create").innerHTML="";
return;
}
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
hint=xmlhttp.responseText;
obj=eval('('+hint+')');
var create = '<select>';
for(i=0;i<obj.length;i++){
create += '<option>'+obj[i]+'</option>';
}
create += '</select>';
}
jQuery('#create').html(create);
}
xmlhttp.open("GET","search.php?entry="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
country name: <input type="text" onkeyup="showhint(this.value)" size="20" />
<br><br>
<span id="show"></span>
</body>
</html>
在第二个代码中,我将国家名称设为文本,我认为您将其用作选择框,您的逻辑可能会根据国家名称从调用函数 onkeyup 到 onselect 和数据库记录到 $a 有所不同
你在问2个问题:
在输入 b我想要一个自动完成框。
1:我建议查看knoutoutjs 库,它为您提供了一个很好的界面,用于在 javascript中构建mvvm 模型。
2:我建议查看 jquery 的自动完成框,这里有一个很好的示例。
当用户选择州 onselect 时,调用一个 ajax 函数,该函数返回该州的城市并用城市填充 firld,在选择一个城市时调用另一个 ajax,它返回该城市的学校等等......
如果您尝试使用代码发布任何内容,我可以帮助您