2012-10-04 148 views
1

我正在使用scriptcase,一個php代碼生成器。我有一個搜索表單,具有4個搜索字段,具體取決於其他數據。我想實現的是以下幾點:基於另一個字段的數據自動填充表單字段

  • 如果用戶選擇在第一場state,第二場應該是自動充滿了statecities
  • city被選中後,第三個字段將自動填充該城市的schools

我所有的數據都存儲在數據庫中的一個表中。我正在使用PHPMySQL

任何幫助,提示或方向非常感謝!

謝謝大家!

米雷拉·

+1

Ajax是你的朋友 – Wearybands

+0

@Glavic你是認真的嗎? – Wearybands

+0

@GlavićHahahahahaha ...現在這些人的比例是什麼?現在,一個沒有在他們的機器上安裝JS的日子呢? – Wearybands

回答

0

當用戶選擇狀態ONSELECT狀態調用一個Ajax函數返回該國的城市和填充城市firld,在選擇一個城市調用另一個AJAX返回學校在這個城市的等等...

如果你試圖用後置代號任何它,我可以幫你

0

有一個非常好的文章描述完全解決您的問題here

本文基於所選國家和地區根據選定州和州填充城市。所有這三個字段都是用數據庫中的數據填充的下拉列表,當然實現利用AJAX

該實現的唯一缺點是作者使用mysql_*,不推薦使用。相反,嘗試使用MySQLiPDO_MySQL

+0

你知道你至少可以添加一些基本知識,而不僅僅是給一個鏈接,你也可以添加該鏈接,但是如果這個鏈接被刪除了,你的回答將會是空的 –

+0

我剛剛給出了一個OP可以開始閱讀的點,當卡住時回來(在實現基礎之後),然後我們可以根據具體的輸入進一步提供幫助。如果引用被認爲是_invalid_或_inappropriate_,那麼這裏的一半答案應該被刪除。 – pankar

0

你問兩個問題:

  1. 如何更新輸入B如果輸入一個改變
  2. 輸入B我想有一個自動完成框。

    • 1:我建議看knoutoutjs library,它給你一個漂亮的界面中的JavaScript構建MVVM模式

    • 2:我會建議看一下jquery的自動填充框,這裏是一個nice live example

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調用,並在與阿賈克斯

<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根據國名

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>"; 
     ?> 

這裏是php文件modules.php?name=Expenses_2&file=get_monedha_ajax它是用來調用第二的內容下拉:

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代碼。這只是一個例子

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} 

現在你會發現,選擇國家將刷新城市名單。您可以按照您的意願通過多個級別重複和級聯此過程。在大多數情況下,將「使用標題」設置爲以便在下拉列表的頂部顯示一個空行。

相關問題