با سلام خدمت دوستان گل
يه سوال كوچيك اما در ظاهر يا باطن بزرگ :
يه دونه ليست داريم با اين كد :
<select name="select">
<option value="a">a</option>
</select>
حالا ميخواهيم وقتي روي مقدار كليك كرديم يا مقدار را انتخاب كرديم فلان كد php اجرا شود . به عنوان مثال من روي رويداد كليك اين كد رو نوشتم كه جواب نميده
:
<select name="select">
<option value="a" onclick="<?php echo "select shod"; ?>" >a</option>
</select>
ميخوام وقتي روي يكي از مقدار ها كليك كرد يا آنرا انتخاب كرد يك كوئري اجرا شده و مثلا در ليست دوم مقدار هايي رو درج كنه كه id ان در ليست اول انتخاب شده بوده.
اميدوارم صورت مسئله رو درست پرسيده باشم و گويا باشه .
ميخوام كد كليك و تغيير مقدار ها با كد php باشه نه جاوا.
(چون نميدونم كه ميشه تو كد جاوا ، php هم نوشت يا نه؟)
پيشاپيش تشكر
[لبخند]
آقاي Boyanalam عزيز !
يه لطفي كن و راه حل نشونم بده.
سلام
امیدوارم این فایل های پیوست شده مورد استفاده قرار بگیره.
سلام دوست گل آقايxooker
شرمنده مرام شما !
دست گلت درد نكنه !
ديشب تو سايت هاي خارجي يه سرچ زدم مشكل چك باكس رو حل كردم و از شما بابت زحمتتون تشكر ميكنم.
بابت فايل پيوستي ليست باكس واقعا كمك كرد تو يه كار ديگه . از شما دوست عزيز تشكر ميكنم.
اما در مورد ليست باكس مشكل اينه كه ميخواستم حل كنم :
در صفحه ويرايش ، مثلا يه فيلد داريم كه نوع سرويس خبر رو انتخاب ميكنيم مثلا خبر از نوع فرهنگي يا علمي .
حالا ميخواستم وقتي اطلاعات در ليست باكس نمايش داده ميشه تمام سرويس هاي خبر از ديتابيس درون ليست باكس لود بشه ولي داده اي به صورت پيش فرض انتخاب شده باشه كه سرويس همون خبر هست
واسه اين كار اول فكر كردم كه يه بار يه كوئري بزنم سرويسي رو نمايش بده كه id اون مساوي id درج شده در خبر مي باشد و وقتي روي ليست باكس كليك كرديم يك كوئري ديگر اجرا شده و آنگاه تمام سرويس ها رو نمايش بده.
روش ديگه اي كه فكر كنم بهتره ولي مشكل دارم اين هست كه داده ها رو نمايش بدم و بعد از خاصيت selected براي نمايش پيش فرض استفاده كنم . به اين كدم نگاه كنيد:
$category2 = mysql_query("SELECT * FROM `category` where `category-id`='$catid'");
$category = mysql_query("SELECT * FROM `category`");
#--------------------------
<select name="category-id" class="input3" id="category-id">
<?php while ($result2 = mysql_fetch_assoc($category)){ ?>
<option value="<?php echo $result2['category-id']?>"><?php echo $result2['category-name']?></option>
<?php } ?>
</select>
اين كد بالا اطلاعات رو درست نمايش ميده و وقتي update هم ميكنم مقدار درست فيلد انتخاب شده درج ميشه اما با اضافه كردن كد selected زير ميخواستم سرويس پيش فرض انتخابي خبر نمايش داده شود و بعد اگر خواست سرويس را تغيير دهد:
<select name="category-id" class="input3" id="category-id">
<?php while ($result2 = mysql_fetch_assoc($category)){ ?>
<option value="<?php echo $result2['category-id']?>" selected="<?php echo $result3['category-name']?>"><?php echo $result2['category-name']?></option>
<?php } ?>
</select>
البته روش ساده اي هم هست كه مقدار پيش فرض سرويس خبر انتخابي در يك textbox يا هرچيز ديگري نمايش داده شود و بتوان با يك ليست باكس اگر خواست نوع سرويس را تغيير دهد. اما من ميخوام كار كمي حرفه اي تر باشه .
هدف از اينكار اينه كه شخص بداند كه اول نوع سرويس خبر انتخابي چيست و بعد از دانستن اگر خواست نوع سرويس را تغيير دهد.
اگه ميشه ، منت گذار و راهنمايي كن.
از دوست عزيز آقاي xooker
[آره] معذرت ميخوام كه سوال اينقدر طولاني شد . ميخواستم خوب اصل مشكل رو برسونم .
شرمنده كه وقت شما رو ميگيرم .
[نه]
تشكر
کد زیر رو تست نکردم ولی مفهوم رو رسوندم .اگه بخواهید مقدار پیش فرض رو لحاظ کنید یه راهش اینه که یه If اضافه کنید به شکلی که اگه ای دی پیش فرض شما برابر مقدار دریافتی از کوئری باشه اون وقت همون ایتم سلکت بمونه.
در قسمت If:
اگه defualt_id مقدار مشخصی داره پس چه بهتر به جای default_id مقدارش رو بذارید(مثلا 12) وگرنه
یا مقدار مورد نظر رو توی یک Hidden Field گذاشته و به صفحه مربوطه ارسال کنید
یا از کوئری برای گرفتن مقدار پیش فرض استفاده کنید .
<select name="category-id" class="input3" id="category-id">
<?php
$category = mysql_query("SELECT * FROM `category`");
while ($result2 = mysql_fetch_assoc($category))
{
if($result2['category-id']=='$default_id')
?>
<option value="<?php echo $result2['category-id']?>" selected="<?php echo $result3['category-name']?>">
<?php echo $result2['category-name']?></option>
<?php else ?>
<option value="<?php echo $result2['category-id']?>"><?php echo $result2['category-name']?></option>
<?php
}
?>
</select>
سلام خدمت جناب xooker
عزيز : اون كدي كه شما زحمت كشيدي رو زدم . اصلا به نظر من شرط نميخواد . چون مقدار id سرويس خبر انتخابي مشخص هست . حالا با اين كد وقتي اجرا ميشه همه مقادير ليست باكس درست پر ميشه طبق جدول ولي ولي ولي!

هميشه بصورت پيش فرض فيلد آخري رو انتخاب ميكنه .
فكر كنم :
اگه ما دستور
$category = mysql_query("SELECT * FROM `category`");
<?php while ($result2 = mysql_fetch_assoc($category)){
رو نزنيم فقط يه مقدار رو درج ميكنه و مقدار اول رو .
اگر هم كوئري رو مثل زير بنويسم
$category2 = mysql_query("SELECT * FROM `category` where `category-id`='$catid'");
درست جواب ميده ولي ولي ولي
فقط يه مقدار از ديتابيس رو درج ميكنه . حالا اگر هم از while استفاده كنم چون براي كوئري شرط گذاشتم دوباره فقط يه مقدار رو درج ميكنه . 
بصورت ديگه نميشه كه مقدار پيش فرض رو انتخاب كرد . چون در اصل يه بار بايد با حلقه while كل سرويس هاي خبري رو درج كنيم و دوباره با يك كوئري مقدار پيش فرض سرويس رو انتخاب كنيم كه با هم ايجاد تداخل ميكنه .
انشاءاله منظور رو رسونده باشم.
xooker جان : اگر هم سورس كد برنامه ميتونه كمك كنه براي راهنمايي بگو تا حتماً فايل رو zip كنم تا روي كد اصلي نگاه كني تا مشكل قابل فهم تر بشه .
باز هم ممنون
سلام
فکر نمی کنم .دستور شرطی رو گذاشتم تا بشه مقدار پیش فرض رو گرفت وربطی به حلقه نداره .
پس با اين اوضاع
بايد از همون روش ساده استفاده كنم كه نوع سرويس خبر رو درون يك textbox نمايش بدم و بعد اگر لازم بود بتواند نوع سرويس را از ليست انتخاب كند.
دوستان كسي راه حل شيك تري نداره.
اگه بشه با اين ليست باكس چنين كرد كه خيلي عالي ميشد.
باز هم از راهنمايي شما دوست عزيز آقاي xooker تشكر ميكنم.
سلامي دوباره به همه دوستان :
مشكل اين ليست باكس و انتخاب يك مقدار مشخص از داده هاي fetch شده از ديتابيس در ليست باكس رو حل كردم .
كدش رو ميزارم اينجا تا شايد دوستاني كه اين مشكل رو دارند ازش استفاده كنند.
<select name="category-id[]" id="category-id[]">
<?php while ($result= mysql_fetch_assoc($category)){ ?>
<option value="<?php echo $result['category-id']?>" <?php if ($result['category-id']==داده مورد نظر) echo 'selected'; ?>><?php echo $result2['category-name']?></option>
<?php } ?>
</select>
فكر نكنم نيازي به توضيح باشه . اول با حلقه while تمام ركودهاي مورد نظر رو خوانده و بعد در سمت مورد نظر اونو قرار ميديم.
مثلا قسمت value كه مقدار اون و در قسمت خود option نام اختياري يا همان alias name مربوط به خودش و كد selected كه از اين آرايه اي كه از ديتابيس در ليست باكس وجود داره ، مياد داده انتخابي رو به حالت انتخاب پيش فرض قرار ميده.
اميدوارم به درد دوستان بخوره.
اگر كسي متوجه نشد بگه تا يه سورس كد براش بزارم تا كاملا كاربردش گويا بشه.
---------------------------------------------------------
خدايا! :..: تقديرم را زيبا بنويس، كمك كن آنجه را تو زود ميخواهي من دير نخواهم و آنچه را تو دير ميخواهس من زود نخواهم.
خدايا! :..: كمكم كن همچنان كه ياري ام كردي...
سلام
اگر منظورتون اينه كه دفهي بعدي كه باكس رو مي بينيد فيلد انتخاب شده باشه بايد بنويسيد
SELECTED="SELECTED"
اگر جوابم ناقصه متوجهم كنيد
ممنون