PDA

View Full Version : یک سوال از لیست کشویی



mohammad-gh
دوشنبه 23 خرداد 1390, 20:32 عصر
با سلام لیست کشویی به صورت زیر دارم که موقع ذخیره شدن اطلاعات مقدار گزینه انتخابی را در بانک ذخیره می کند
می خواهم در هنگام ویرایش همین لیست با بهترین روش (کمترین کد) گزینه ذخیره شده را به صورت گزینه انتخابی در بیاورم



<select name="vez" style="font-family: tahoma;background:#FFFFBF;">
<option value='1' >مجرد</option>
<option value='2'>متاهل</option>
<option value='3'>طلاق گرفته</option>
<option value='4'>در حال جدايي</option>
<option value='5'>همسر مرحوم</option>
</select>

alismith
سه شنبه 24 خرداد 1390, 01:37 صبح
سلام

من اینجا یک مثال برای شما زدم البته در هنگام استفاده نیاز به فرم ندارید و فقط کافیه در تابع مربوطه متغییر php را قرار دهید که از طریق دیتابیس مقدار دهی شده است



<?php
$status = 1; // e.g. 1 , select your default value with query in database
?>

<html>
<head>
<script src="http://www.google.com/jsapi"></script>
<script>google.load("jquery","1.5");</script>
<script>

$(document).ready(function(){

var getStatus = function(e){

$('#selectBox').val(e).attr('selected', 'selected');

}

getStatus('<?php if(isset($_POST['changeStatus'])){ echo $status;} else{echo 2;}?>');
});

</script>
</head>
<body>

<select id="selectBox" name="vez" style="font-family: tahoma;background:#FFFFBF;">
<option value='1'>مجرد</option>
<option value='2' selected>متاهل</option>
<option value='3'>طلاق گرفته</option>
<option value='4'>در حال جدايي</option>
<option value='5'>همسر مرحوم</option>
</select>
<br/>
<form method="post">
<input type="submit" name="changeStatus" value="مجرد"/><br/>
</form>

</body>
</html>


در اینجا با زدن کلید این فرضیه حاکم می شود که شما می خواهید از طریق مقدار ذخیره شده در دیتابیس select را set کنید



موفق باشید

mohammad-gh
سه شنبه 24 خرداد 1390, 12:24 عصر
ممنون از جوابتون
ولی راستش من سر در نیاوردم
یه مشکلی هم که این اسکریپت داره اینه که اسکریپت گوگل رو فرا می خونه که خیلی تو سرعت لود تاثیر میذاره

alismith
سه شنبه 24 خرداد 1390, 12:38 عصر
سلام


راستش من سر در نیاوردم

همون طور که من از سوال شما متوجه شدم ، شما می خواهید وقتی ایتمی از این لیست رو انتخاب و در دیتابیس ذخیره می کنید ، این ایتم در مراحل بعدی بازدید صفحه برای اون کاربر جز ایتم select شده و به عبارتی اولین ایتمی باشه که در select box نمایش میده
درست حدس زدم ؟

-----------------------------------------

من با این فرض روشی رو براتون پیاده سازی کردم تا هر وقت صفحه لود شد تابع مذکور مقدار متغییر status رو که به مقدار ذخیره شده در دیتابیس اشاره داره را به عنوان آرگومان دریافت کنه و تغییرات را در select box اعمال کنه ، اما چون به دیتابیس وصل نبودیم یک مثال با مقدار دهی دستی براتون زدم که از همین الگوریتم استفاده می کنه

امیدوارم درست حدس زده باشم و این کد کمکتون کنه !

در رابطه با اسکریپت ، من در اینجا از jquery استفاده کردم پس مجبورم این کتابخانه را در برنامه اضافه کنم ، حالا شما می تونید برید به سایت jquery.com و آخرین نسخه این کتابخانه را دانلود کنید تا برای localhost نیازی به اتصال اینترنت نباشه و سرعت هم پایین نیاد.


موفق باشید

mohammad-gh
سه شنبه 24 خرداد 1390, 19:10 عصر
روش دیگری به ذهنتان نمی رسه

alismith
سه شنبه 24 خرداد 1390, 20:45 عصر
سلام
شما مقادیر select box رو از سمت سرور مثلا دیتابیس پر می کنید یا پیش فرض هستش؟

اگه با هر بار نمایش سایت این DropDown مقادیرش پر میشه سعی می کنم در اسرع وقت یک مثال دیگه براتون بزنم


موفق باشید

alismith
سه شنبه 24 خرداد 1390, 21:25 عصر
سلام

این هم یک روش دیگه فقط همین طور که گفتم در این روش با هر بار لود صفحه کنترل select دوباره بازسازی میشه :



<?php
$arr =array("item1"=>1,"item2"=>2,"item3"=>3);
?>
<select>
<?php
foreach($arr as $key => $val){


if($val == 2){

?>

<option name="<?=$key;?>" value="<?=$val;?>" selected ><?=$key;?></option>

<?php


}else{
?>
<option name="<?=$key;?>" value="<?=$val;?>"><?=$key;?></option>
<?php

}




}
?>
</select>


در اینجا شرط select عدد 2 بودش که شما باید این عدد رو با مقداری که در دیتابیس ذخیره کردید جایگزین کنید (این کار هم با گرفتن query انجام پذیر هستش)


موفق باشید

mohammad-gh
پنج شنبه 26 خرداد 1390, 11:39 صبح
آقا دستت درد نکنه
با همین مثال و با تغییراتی تونستم کارم رو راه بندازم
استفاده از آرایه , راه حل کلیدی این مشکل بود