PDA

View Full Version : سوال: مشکل در ارتباط لیست کشویی جاوا با PHP



ayelius
جمعه 11 شهریور 1390, 03:02 صبح
سلام
سوالم فکر کنم یکم گیج کننده باشه (یا لا اقل برا من اینجوره) پس خواهشاً همش با دقت بخونین که متوجه مشکل اصلیم بشین، ممنون
توی یه وبی که دارم مینویسم نیاز به یه لیست کشویی جاوا داشتم که به عنوان مثال اول از بین دو گزینه ماشین های سواری و باری یکی رو انتخاب کنم
و بعد مقدار اون تگ به دیتابیس ارسال بشه و زیرگزینه های اون توی لیست دوم نشون داده بشه و یکی رو انتخاب کنم
برای کارم از کد زیر استفاده کردم :

<head>
<script>
function Func(Cars) {
var _Cars = document.getElementById(&quot;model&quot;);
_Cars.options.length = 0;
if(Cars != &quot;&quot;) {
var arr = Cars.split(&quot;,&quot;);
for(i = 0; i < arr.length; i++) {
if(arr[i] != &quot;&quot;) {
_Cars.options[_Cars.options.length]=new Option(arr[i],arr[i]);
}
}
}
}
</script>
</head>
<body>
<form method=&quot;post&quot; id=&quot;form1&quot; name=&quot;FRM&quot; action=&quot;cars.php?act=list&rslt=show&quot;>
نوع : <select id=&quot;type&quot; name=&quot;type&quot; onchange=&quot;Func(this.value)&quot;>
<option value=&quot;<?php savari ();?>&quot;>سواری</option>
<option value=&quot;<?php bari ();?>&quot;>باری</option>
</select>
<br><br>
مدل : <select name=&quot;model&quot; id=&quot;model&quot;>
</select>
<br><br>
<input type=&quot;submit&quot; value=&quot;نمایش&quot;>
</form>
</body>
همونطور که میبینید برای گرفتن مقادیر از دیتابیس و قرار دادن اونها توی تگ آپشن از یه تابع دیگه استفاده کردم که به صورت زیر نوشتمش :

function savari () {
$conn = db_connect();
if (!$conn)
return ' سايت قادر به اتصال به بانک اطلاعاتي نمي باشد. لطفاً بعداً تلاش کنيد.';
$result = mysql_query(&quot;select * from models where type='savari'&quot;);
if (!$result)
return 'Could not execute query';
$num = mysql_num_rows($result);
for($i = 0; $i < $num; $i ++) {
$row = mysql_fetch_array($result);
echo &quot;$row[name], &quot;;
}
}
تا اینجا مشکلی ندارم و با اجرا شدن تابع savari() اسم همه مدل های ماشین های سواری
توی value آپشن سواری قرار میگیره و با انتخاب اون آپشن هرکدوم از مقادیر توی لیست دوم به عنوان یه آپشن نمایش داده میشن
این فرم من به به صفحه دیگه ارسال میشه که کدهاش به صورت زیر هست :

$type = $_POST['type'];
$model = $_POST['model'];
$conn = db_connect();
if (!$conn)
return ' سايت قادر به اتصال به بانک اطلاعاتي نمي باشد. لطفاً بعداً تلاش کنيد.';
$result = mysql_query(&quot;select * from cars where type='$type' and model='$model'&quot;);
if (!$result)
return false;
if (mysql_num_rows($result)==0)
echo &quot;نتیجه ای یافت نشد&quot;;
else {
$num = mysql_num_rows($result);
for($i = 0; $i < $num; $i ++) {
$row = mysql_fetch_array($result);
echo &quot;$row[name]&quot;;
echo &quot;<br />&quot;;
}
}
اگه یه نگاه به این سه قسمت کدی که گذاشتم بندازین میبینین که فرم من با استفاده از تابع savari()
میاد چند تا مقدار میزاره توی value اون آپشن و همونارو به عنوان مقادیر لیست دوم قرار میده ، مثلاً بعد از اجرا شدن تابع ، سلکت اول این شکلی میشه :

نوع : <select id=&quot;type&quot; name=&quot;type&quot; onchange=&quot;Func(this.value)&quot;>
<option value=&quot;ایران خودرو, سایپا&quot;>سواری</option>
<option value=&quot;سایپا, مزدا&quot;>باری</option>
</select>
حالا اگه آپشن اول انتخاب کنم ، سلکت دوم اینجوری میشه :

مدل : <select name=&quot;model&quot; id=&quot;model&quot;>
<option value=&quot;ایران خودرو&quot;>ایران خودرو</option>
<option value=&quot;سایپا&quot;>سایپا</option>
</select>
مشکل اینجاست که وقتی میخوام مقادیر این دو تا لیست رو به دیتابیس بفرستم و مثلاً از جدول ماشینها اون
ماشینهایی که با اطلاعات ارسالی مطابقت دارن رو چاپ کنم برای سلکت اول یه مقدار دو قسمتی ارسال میشه که توی جدول وجود نداره
مثلاً به جای اینکه ایران خودرو ارسال بشه ایران خودرو, سایپا ارسال میشه

چکار کنم که توی سلکت اول هم فقط همون اسم آپشن ارسال بشه نه مقادیری که آپشن های سلکت دوم رو انتخاب میکنه؟