Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP-Dropdown, die jeweils zuverlässig sind

In diesem Fall müssen Sie mit Ajax arbeiten. Ohne Aktualisieren der Seite Wenn Sie eine der Spalten A auswählen, erhalten Sie den entsprechenden Wert in Spalte B. Zum Beispiel

<form method="post" name="form1">
 <table border="0" cellpadding="0" cellspacing="0" width="60%"><tbody>
  <tr>
   <td width="150">Country</td>
   <td width="150"><select style="background-color: #ffffa0" name="country" onchange="getState(this.value)"><option>Select Country</option><option value="1">USA</option><option value="2">Canada</option>       </select></td>
  </tr>
 <tr>
  <td>State</td>
  <td>
  <p id="statediv">
  <select style="background-color: #ffffa0" name="state"><option>Select Country First</option>       </select></td>
</tr>
<tr>
  <td>City</td>
  <td>
  <p id="citydiv">
  <select style="background-color: #ffffa0" name="city"><option>Select State First</option>       </select></td>
</tr>
</tbody></table>
</form>

Wie Sie oben sehen können, wird im onChage-Ereignis des Länder-Dropdowns die getState()-Funktion des Javascripts aufgerufen, die die Optionswerte des State-Dropdowns ändert. Schauen wir uns den Code der getState()-Funktion an.

function getState(countryId)
{
   var strURL="findState.php?country="+countryId;
   var req = getXMLHTTP();
   if (req)
   {
     req.onreadystatechange = function()
     {
      if (req.readyState == 4)
      {
     // only if "OK"
     if (req.status == 200)
         {
        document.getElementById('statediv').innerHTML=req.responseText;
     } else {
       alert("There was a problem while using XMLHTTP:\n" + req.statusText);
     }
       }
      }
   req.open("GET", strURL, true);
   req.send(null);
   }
}

Der Code der PHP-Datei findState.php, die die Optionen im Dropdown-Menü des von Ajax abgerufenen Status ausfüllt, ist unten angegeben

<? $country=intval($_GET['country']);
$link = mysql_connect('localhost', 'root', ''); //changet the configuration in required
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('db_ajax');
$query="SELECT id,statename FROM state WHERE countryid='$country'";
$result=mysql_query($query);

?>
<select name="state" onchange="getCity(<?=$country?>,this.value)">
 <option>Select State</option>
  <? while($row=mysql_fetch_array($result)) { ?>
    <option value=<?=$row['id']?>><?=$row['statename']?></option>
  <? } ?>
</select>

In der obigen Status-Dropdown-Liste wird die getCity()-Funktion im onChage-Ereignis mit den Parametern countryId und stateId aufgerufen. Sehen wir uns nun den Code der getCity()-Funktion an

function getCity(countryId,stateId)
{
  var strURL="findCity.php?country="+countryId+"&state="+stateId;
  var req = getXMLHTTP();
  if (req)
  {
    req.onreadystatechange = function()
    {
      if (req.readyState == 4) // only if "OK"
      {
        if (req.status == 200)
        {
          document.getElementById('citydiv').innerHTML=req.responseText;
        } else {
          alert("There was a problem while using XMLHTTP:\n" + req.statusText);
        }
      }
    }
    req.open("GET", strURL, true);
    req.send(null);
  }
}

In der obigen Ajax-Funktion wird findcity.php aufgerufen und diese PHP-Datei füllt das Stadt-Dropdown-Menü gemäß den bereitgestellten Parametern country und state von der get-Methode. Schauen wir uns nun den Code von findcity.php an,

<?php $countryId=intval($_GET['country']);
$stateId=intval($_GET['state']);
$link = mysql_connect('localhost', 'root', ''); //changet the configuration in required
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('db_ajax');
$query="SELECT id,city FROM city WHERE countryid='$countryId' AND stateid='$stateId'";
$result=mysql_query($query);

?>
<select name="city">
 <option>Select City</option>
  <?php while($row=mysql_fetch_array($result)) { ?>
 <option value><?=$row['city']?></option>
<?php } ?>
</select>

Und das ist alles, die dreifache Dropdown-Liste mit Stadt, Land und Staat, die Ajax und PHP verwendet, wird ausgefüllt.