در این آموزش ، ما می خواهیم یاد بگیریم که چگونه گزینه لیست کشویی منطقه را بر اساس نام دولت انتخاب شده با استفاده از PHP-PDO تغییر دهیم.

در این مثال ، ما دو لیست کشویی برای لیست ایالات و نواحی داریم. با تغییر مقادیر کشویی حالت ها ، مقادیر کشویی مربوطه با استفاده از jQuery AJAX به صورت پویا بارگیری می شود.

ساختار فایل برای این آموزش

config.php – پرونده اتصال پایگاه داده.

index.php – پرونده اصلی دارای کشویی است

get_district.php – برای بازیابی منطقه براساس نام ایالت انتخاب شده استفاده می شود.

ساختار پایگاه داده MySQL برای این آموزش

در این آموزش از دو جدول MySQL Database استفاده شده است.

دولت ساختار جدول

CREATE TABLE `state` (
  `StCode` int(11) NOT NULL,
  `StateName` varchar(150) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

ناحیه ساختار جدول

CREATE TABLE `district` (
  `DistCode` int(11) NOT NULL,
  `StCode` int(11) DEFAULT NULL,
  `DistrictName` varchar(200) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

مرحله 1: ایجاد یک فایل اتصال پایگاه داده (config.php)

<?php 
// DB credentials.
error_reporting(0);
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','');
define('DB_NAME','demos');
// Establish database connection.
try
{
$dbh = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USER, DB_PASS,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
}
catch (PDOException $e)
{
exit("Error: " . $e->getMessage());
}
?>

گام 2: یک فرم HTML با دو قسمت درست کنید. یکی برای ایالت و دیگری برای ناحیه.

<form name="insert" action="" method="post">
  <table width="100%" height="117"  border="0">
  <tr>
    <th width="27%" height="63" scope="row">Sate :</th>
    <td width="73%"><select onChange="getdistrict(this.value);"  name="state" id="state" class="form-control" >
<option value="">Select</option>
<!--- Fetching States--->
<?php
$sql="SELECT * FROM state";
$stmt=$dbh->query($sql);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row =$stmt->fetch()) { 
  ?>
<option value="<?php echo $row['StCode'];?>"><?php echo $row['StateName'];?></option>
<?php }?>
</select></td>
  </tr>
  <tr>
    <th scope="row">District :</th>
    <td><select name="district" id="district-list" class="form-control">
<option value="">Select</option>
</select></td>
  </tr>
</table>

</form>

مرحله 3: گرفتن ایالات با استفاده از jQuery AJAX

این اسکریپت شامل تابعی است که با تغییر مقادیر کشویی حالت فراخوانی می شود. این درخواست AJAX را به صفحه PHP ارسال می کند تا گزینه های کشویی مربوطه را دریافت کند.

<script>
function getdistrict(val) {
$.ajax({
type: "POST",
url: "get_district.php",
data:'state_id='+val,
success: function(data){
$("#district-list").html(data);
}
});
}
</script>

مرحله 4: جدول منطقه را با استفاده از PHP بر اساس نام ایالت انتخاب شده بخوانید.

این کد PHP پایگاه داده را برای بازیابی مقادیر جدول منطقه بر اساس شناسه وضعیت منتقل شده توسط تماس jQuery AJAX متصل می کند.

<?php
require_once("config.php");
if(!empty($_POST["state_id"])) 
{
$stateid=$_POST["state_id"];
$sql=$dbh->prepare("SELECT * FROM district WHERE StCode=:stateid");
$sql->execute(array(':stateid' => $stateid));	
?>
<option value="">Select District</option>
<?php
while($row =$sql->fetch())
{
?>
<option value="<?php echo $row["DistrictName"]; ?>"><?php echo $row["DistrictName"]; ?></option>
<?php
}
}
?>

نحوه اجرای این اسکریپت

1. فایل zip را بارگیری کنید

2. پرونده را استخراج کرده و پوشه statementistdropdown-pdo را کپی کنید

3. چسباندن داخل دایرکتوری ریشه (برای xampp xampp / htdocs ، برای wamp wamp / www ، برای لامپ var / www / html)

4. PHPMyAdmin را باز کنید (http: // localhost / phpmyadmin)

5. یک پایگاه داده با نامهای نمایشی ایجاد کنید

6. فایل regdb.sql را وارد کنید (در داخل بسته zip ارائه شده است)

7. اسکریپت http: // localhost / statementistdropdown-pdo را اجرا کنید