0

以下の HTML および PHP コードを使用して、3 つのカスケード ドロップダウンリストを作成しました。

<?php

@$city=$_GET['city'];
@$locality=$_GET['locality'];// Use this line or below line if register_global is off
if(strlen($city) > 0 and !is_numeric($city)){ // to check if $city is numeric data or not.
echo "Data Error";
exit;
}
if(strlen($locality)>0 and is_numeric($locality)){
echo "Data Issue";
exit;
}


///////// Getting the data from Mysql table for first list box//////////
$quer2=mysql_query("SELECT DISTINCT city_name,city_id FROM city order by city_name");
///////////// End of query for first list box////////////

/////// for second drop down list we will check if category is selected else we will display all the subcategory/////
if(isset($city) and strlen($city) > 0){
$quer=mysql_query("SELECT DISTINCT locality_name FROM locality where city_id='$city' order by locality_name");
}else{$quer=mysql_query("SELECT DISTINCT locality_name FROM locality order by locality_name"); }
////////// end of query for second subcategory drop down list box ///////////////////////////

echo "<form method=post name=f1>";
/// Add your form processing page address to action in above line. Example action=dd-check.php////
////////// Starting of first drop downlist /////////
echo "<select name='city' onchange=\"localityload(this.form)\"><option value=''>Select one</option>";
while($noticia2 = mysql_fetch_array($quer2)) {
if($noticia2['city_id']==@$city){echo "<option selected value='$noticia2[city_id]'>$noticia2[city_name]</option>"."<BR/>";}
else{echo "<option value='$noticia2[city_id]'>$noticia2[city_name]</option>";}
}
echo "</select>";
////////////////// This will end the first drop down list ///////////

////////// Starting of second drop downlist /////////
echo "<select name='locality' id='locality' onchange=\"localityload(this.form);\"><option selected value=''>Select one</option>";
while($noticia = mysql_fetch_array($quer)) {
echo "<option value='$noticia[locality_name]' >$noticia[locality_name]</option>";
}
echo "</select>"; 
if(isset($locality) and strlen($locality)>0)
{
$query=mysql_query("SELECT DISTINCT specialization FROM drsignup WHERE locality_name='$locality'");
}
else {$query=mysql_query("SELECT DISTINCT specialization FROM drsignup");}
echo "<select name='specialization'>";
echo "<option  selected='selected' value='Specialist In'>Specialist In</option>";

while($notic = mysql_fetch_array($query)) 
{
echo "<option  value='$notic[specialization]'>$notic[specialization]</option>";
}
echo "</select>";


<!--<input type="submit" name="submit" value="SignUp" />-->

echo "</form>";

?>

都市と地域のドロップダウンリストの onchange イベントに以下の JavaScript 関数を使用しています

<script language=JavaScript>

function localityload(form)
{
var val=form.city.options[form.city.options.selectedIndex].value;
var val2=form.locality.options[form.locality.options.selectedIndex].value;
self.location='city-loc.php?city=' + val + '& locality=' +val2;
form.locality.options[form.locality.options.selectedIndex].selected=true;
}

</script>

最初のドロップダウンから都市を選択すると、2番目のドロップダウンに対応する地域名が入力され、誰かを選択すると選択がクリアされます.3番目のドロップダウンリストは、最初と2番目の選択に基づいて選択され、そこに保持されます.

2 番目のドロップダウン値を保持する解決策を教えてください。

4

2 に答える 2

0

完全に機能するコードは次のとおりです。

PHPコードは次のとおりです。

<?php

@$city=$_GET['city'];
@$locality=$_GET['locality'];// Use this line or below line if register_global is off
if(strlen($city) > 0 and !is_numeric($city)){ // to check if $city is numeric data or not.
echo "Data Error";
exit;
}
if(strlen($locality)>0 and is_numeric($locality)){
echo "Data Issue";
exit;
}


///////// Getting the data from Mysql table for first list box//////////


$quer2=mysql_query("SELECT DISTINCT city_name,city_id FROM city order by city_name");
///////////// End of query for first list box////////////

/////// for second drop down list we will check if category is selected else we will display all the subcategory/////
if(isset($city) and strlen($city) > 0){
$quer=mysql_query("SELECT DISTINCT locality_name FROM locality where city_id='$city' order by locality_name");
}else{$quer=mysql_query("SELECT DISTINCT locality_name FROM locality order by locality_name"); }
////////// end of query for second subcategory drop down list box ///////////////////////////


echo "<form method=post name=f1>";
/// Add your form processing page address to action in above line. Example action=dd-check.php////
////////// Starting of first drop downlist /////////
echo "<select name='city' onchange=\"localityload(this.form)\"><option value=''>Select one</option>";
while($noticia2 = mysql_fetch_array($quer2)) {
if($noticia2['city_id']==@$city){echo "<option selected value='$noticia2[city_id]'>$noticia2[city_name]</option>"."<BR/>";}
else{echo "<option value='$noticia2[city_id]'>$noticia2[city_name]</option>";}
}
echo "</select>";
////////////////// This will end the first drop down list ///////////

////////// Starting of second drop downlist /////////
echo "<select name='locality' id='locality' onchange=\"localityload(this.form);\"><option selected value=''>Select one</option>";


while($noticia = mysql_fetch_array($quer)) {
if ($noticia['locality_name']==@$locality) {
    echo "<option selected Value='$noticia[locality_name]'>$noticia[locality_name]</option>"."<BR/>";
}

else{
echo "<option value='$noticia[locality_name]' >$noticia[locality_name]</option>";
}
}
echo "</select>"; 



if(isset($locality) and strlen($locality)>0)
{

$query=mysql_query("SELECT DISTINCT specialization FROM drsignup WHERE locality_name='$locality'");
}
else {$query=mysql_query("SELECT DISTINCT specialization FROM drsignup");}
echo "<select name='specialization'>";
echo "<option  selected='selected' value='Specialist In'>Specialist In</option>";

while($notic = mysql_fetch_array($query)) 
{
echo "<option  value='$notic[specialization]'>$notic[specialization]</option>";
}
echo "</select>";





echo"</form>";

?>





javascript code is:

<script language=JavaScript>
function localityload(form)
{
var val=form.city.options[form.city.options.selectedIndex].value;
var val2=form.locality.options[form.locality.options.selectedIndex].value;
self.location='city-loc.php?city=' + val + '& locality=' +val2;
form.locality.options[form.locality.options.selectedIndex].selected=true;
}

</script>
于 2013-07-26T06:55:21.830 に答える
0

私は PHP の専門家ではありませんが、何が問題なのかは理解できたと思います。. .

JavaScript でこのコードを呼び出すと、次のようになります。

self.location='city-loc.php?city=' + val + '& locality=' +val2;

<select>変数として渡された最初の 2 つのドロップダウンからの 2 つの選択を使用して、ページをリロードします。次に、ページがリロードされたら、次のコードを使用します。

if ($noticia2['city_id']==@$city) {
    echo "<option selected Value='$noticia2[city_id]'>$noticia2[city_name]</option>"."<BR/>";
}

. . . cityオプション値が URL のパラメーターと一致する場合、最初のドロップダウンを作成するときに選択した値を設定します。

localityただし、 2 番目のドロップダウンを作成するときに、URL からパラメーターを確認するための同様のステートメントはありません。そのため、パラメーターを渡したとしても (そしてここで取得します: )、ページのリロード時にデフォルトで選択する必要が@$locality=$_GET['locality'];あるオプションを特定するために使用するコードはありません。locality

私が言ったように、私は PHP があまり得意ではありませんが、2 番目のドロップダウンを作成するときに、次のようなものが必要になると思います。

if ($noticia['locality_name']==@$locality) {
    echo "<option selected Value='$noticia[locality_name]'>$noticia[locality_name]</option>"."<BR/>";
}
于 2013-07-25T14:13:24.737 に答える