1

我正在使用scriptcasephp 代码生成器。我有一个搜索表单,其中包含 4 个搜索字段,具体取决于彼此的数据。我想要实现的是以下内容:

  • 如果用户state在第一个字段中选择 ,则第二个字段应自动填充citiesthat state
  • 选择后city,第三个字段将自动填充schools该城市的。

我所有的数据都存储在数据库中的一个表中。我正在使用PHPMySQL

非常感谢任何帮助、提示或方向!

谢谢你们!

米雷拉

4

6 回答 6

1

我考虑过这个解决方案,但我们会考虑到我们不能在 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']."'>&nbsp; - ".$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'].">&nbsp; - ".$r['emer']."</option>";              
                }
 }

我不知道它可以在 scriptcase 中以这种方式使用...注意:这不是 scriptcase 代码。这只是一个例子

于 2012-10-04T09:40:41.310 回答
1

这个问题可以从 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}

您现在应该发现选择州将刷新城市列表。您可以根据需要在多个级别重复和级联此过程。在大多数情况下,将“使用标题”设置为是很有帮助,这样您就可以在下拉列表的顶部看到一个空白行。

于 2016-07-21T00:38:41.373 回答
0
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 有所不同

于 2012-10-04T08:12:40.073 回答
0

你在问2个问题:

  1. 如果输入a 更改,我如何更新输入 b
  2. 输入 b我想要一个自动完成框。

    • 1:我建议查看knoutoutjs 库,它为您提供了一个很好的界面,用于在 javascript中构建mvvm 模型。

    • 2:我建议查看 jquery 的自动完成框,这里有一个很好的示例

于 2012-10-04T08:01:32.743 回答
0

当用户选择州 onselect 时,调用一个 ajax 函数,该函数返回该州的城市并用城市填充 firld,在选择一个城市时调用另一个 ajax,它返回该城市的学校等等......

如果您尝试使用代码发布任何内容,我可以帮助您

于 2012-10-04T07:59:25.860 回答
0

有一篇非常好的文章准确描述了您的问题的解决方案

本文根据选定的州和选定的国家/地区填充城市。所有这三个字段都是下拉列表,其中填充了数据库中的数据,当然实现利用AJAX

此实现的唯一缺点是编写器使用mysql_*已弃用。而是尝试使用MySQLiPDO_MySQL

于 2012-10-04T08:00:01.730 回答