2013-03-07 43 views
0

我有一個組合框,我想填補國家和Zip_code字段..它的工作,但它填補每個字段狀態「NY11715」和Zip_code「NY11715」...我是尋找填補國家「NY」和ZIP_CODE 11715 ......請幫我解決這個我如何填寫文本框字段與ajax

<select name="LookupCity" id="LookupCity" onchange="showZip(this.value)"> 
<option value="" <?php if (!(strcmp("", $_GET['City']))) {echo "selected=\"selected\"";} ?>>Select from menu</option> 
<?php do { ?> 
<option value="<?php echo $row_fmCity['City']?>"<?php if (!(strcmp($row_fmCity['City'], $_GET['City']))) {echo "selected=\"selected\"";} ?>><?php echo $row_fmCity['City']?></option> 
<?php 
} while ($row_fmCity = mysql_fetch_assoc($fmCity)); 
$rows = mysql_num_rows($fmCity); 
if($rows > 0) { 
mysql_data_seek($fmCity, 0); 
$row_fmCity = mysql_fetch_assoc($fmCity); } ?> </select> 

<a href="ZipLookup.php">select</a></td> 

</tr><tr valign="baseline"> 
<td nowrap="nowrap" align="right">State:</td> 
<td><input type="text" name="State" id="State" placeholder="NY" value="<?php echo $_GET['State']; ?>" size="5"/> 
<input type="text" name="Zip_Code" id="Zip_Code"placeholder="zip code" value="<?php echo $_GET['Zip']; ?>" size="10" /></td> 





Ajax code 


function showZip(str) 
{ 
if (str=="") 
    { 
    document.getElementById("State").innerHTML=""; 
    document.getElementById("Zip_Code").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("State").value=xmlhttp.responseText; 
    document.getElementById("Zip_Code").value=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","Getzip.php?q="+str,true); 
xmlhttp.send(); 
} 





PHP Code 


<?php 
$q=$_GET["q"]; 

$con = mysql_connect('localhost', 'root', 'root'); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("Leadbook", $con); 

$sql="SELECT * FROM Zip WHERE City = '".$q."'"; 

$result = mysql_query($sql); 

while($row = mysql_fetch_array($result)) 
    { 

    $State = $row['State']; 
    $Zip_Code = $row['Zip Code']; 

    } 
echo $State; 
echo $Zip_Code; 

mysql_close($con); 
?> 
+0

您正在使用[an **過時的**數據庫API](http://stackoverflow.com/q/12859942/19068),並應使用[現代替換](http://php.net/manual/) EN/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin 2013-03-07 16:18:53

回答

3

1.改變你的PHP代碼,使城市和郵政編碼是逗號分隔。

改變這樣的代碼:

echo $State; 
echo $Zip_Code; 

這樣:

echo $State; 
echo ","; 
echo $Zip_Code; 

2比更新JavaScript,以便該返回文本被分裂成兩個部分,並得到了尊重場。

改變這樣的代碼:

document.getElementById("State").value=xmlhttp.responseText; 
document.getElementById("Zip_Code").value=xmlhttp.responseText; 

這樣:

var string = xmlhttp.responseText; 
var array = string.split(','); 
document.getElementById("State").value=array[0]; 
document.getElementById("Zip_Code").value=array[1]; 

這應該做你要求什麼。

+0

謝謝......它的工作 – 2013-03-07 16:52:53