ورود

View Full Version : سوال: ست كردن دو كمبو توسط يك كمبو



searchman
سه شنبه 16 مهر 1387, 07:48 صبح
با سلام خدمت دوستان
ببينيد اگه بخوايم يك كمبو توسط كمبوي ديگه ست بشه با استفاده از ajax و PHP همونطوري كه در http://www.barnamenevis.org/forum/showthread.php?t=118351 گفته شده امكان پذيره
واما سوال من اينه كه اگه بخوام دو تا كمبو (يا بيشتر) رو توسط يك كمبو ست كنم بايد چي كار كنم؟
البته كاري كه اول به ذهن ميرسه اينه كه رشته اي شامل مقادير كمبوي دوم و سوم رو به value كمبوي اول نسبت بديم و در JS اون ها رو از هم جدا كنيم كه قطعا روش مناسبي نيست.
پيشاپيش تشكر بابت راهنماييتون

searchman
جمعه 27 دی 1387, 01:20 صبح
با سلام
بر اساس اون چيزي كه توي پست اول گفتم كدهاي زير پياده شده
اگر در كمبوي اول نام بخش انتخاب بشه و متناسب اون نام پروژه ها و تيم ها در دو كمبو ست بشه(مقادير از DB مي آيند )

<!--انتخاب بخش-->
<select name="Section" onchange="Setprjnames(this.value);Setteamnames(this.value);">
<option value="" > </option>
<?
$SecNames=Get_SectionNames();
foreach($SecNames as $thisSecName)//2
{
$PrjNames=Get_PrjNames($thisSecName['fldSecId']);
$TeamNames=Get_TeamNames($thisSecName['fldSecId']);
echo '<option value="';
$i=0;
foreach($PrjNames as $thisPrjName)//4
{
$i=$i+1;
echo $thisPrjName['fldPrjName'].",".$thisPrjName['fldPrjId'].",";
}
for($j=$i;$j<100;$j++)//---------تا 100امين عنصر آرايه براي نام پروژه ها رزرو مي شه و مابقي براي نام تيم ها
echo "".",";
foreach($TeamNames as $thisTeamName)//5
{
echo $thisTeamName['fldTeamName'].",".$thisTeamName['fldTeamId'].",";

}//foreach5
echo'">'.$thisSecName['fldSecName'].'</option>';
}//foreach2

echo '</select>';
?>
</td>
<!--انتخاب پروژه-->

<td rowspan="2" >
<select name="PrjId" id="PrjId" >
<option value="" > </option>
</select>
</td>
<!--انتخاب تيم-->

<td rowspan="2" width="25%">
<select name="TeamId" id= "teamname" >
<option value="" > </option>
</select>
</td>

function Setprjnames(prjnames) {
var prjnameBox =window.document.getElementById("PrjId");
prjnameBox.options.length = 0;
if(prjnames != "") {
var arrprjnames = prjnames.split(",");
for(i = 0; i <100; i++) {
if(arrprjnames[i] != "") {
prjnameBox.options[prjnameBox.options.length] = new Option(arrprjnames[i], arrprjnames[i=i+1]);
}
}
}
}
/*----------------------------------------------------------------------------*/
function Setteamnames(teamnames) {
var teamnameBox =document.getElementById("teamname");
teamnameBox.options.length = 0;
if(teamnames != "") {
var arrteamnames = teamnames.split(",");
for(i = 100; i < arrteamnames.length; i++) {
if(arrteamnames[i] != "") {
teamnameBox.options[teamnameBox.options.length] = new Option(arrteamnames[i],arrteamnames[i=i+1]);
}
}
}
}

اولا اينكه قطعا اين روش روش مناسب و بهينه اي نيست و دوما به اين ترتيب به راحتي نمي شه تشخيص داد كه كدوم بخش انتخاب شده.
دوستان اگه راه مناسب و منطقي رو سراغ دارن لطفا راهنمايي بفرمايند.
با تشكر

محمدامین شریفی
جمعه 27 دی 1387, 20:50 عصر
خسته نباشید اساتید.
در این برنامه که نوشتم با تغییر index کمبو باکس،index کمبو باکس دیگر هم عوض میشود.
در این برنامه از دو روش رفتم،که با رنگ های سبز و آبی تمایز بینشان قرار دادم:


<html >
<head>
<script type="text/javascript" language="javascript">
function setter(field)
{
var s = document.getElementById("Select1");
var v = s.options[s.selectedIndex].text;

with (field)
{
if (value==null||value=="")
{
alert("you select nothings");
alert("you select nothings");
}
else
{
document.getElementById("Select2").selectedIndex=s.selectedIndex;
alert(v);
alert(value);
}
}
}
</script>
<title>barnamenevis.org</title>
</head>
<body>

<select id="Select1" onchange="setter(this)" runat="server">
<option value="persia">hello</option>
<option value="persia">persia</option>
</select>
<select id="Select2">
<option value="hello">hello</option>
<option value="persia">persia</option>
</select>

</body>
</html>
به این دلیل از text بجای value استفاده کردم،چون برنامه cross browser بشه.
نکته:شما در پروژه عملیتان باید تعداد index های کمبو باکس دومیتان را بدست آورید و در یک حلقه for ببینید که آیا چنین مقداری موجود هست یا خیر،سپس کمبو را تنظیم کنید.
درباره اون شهر و کشور ها هم.منبع شما هم میتواند xml باشد و هم میتوانید متغیری که از سوی فرم تحت وب شما response داده شده است،در این باره هم نمونه اش در کار گروهی بچه ها که در امضا هست وجود دارد.

اگر منظور دیگری داشتید بفرمایید.