انجمن‌های فارس وب

نسخه کامل: سوال در باره كليك روي ليست باكس و انجام يه كار
شما در حال بازدید از بایگانی ارسال های انجمن هستید این نسخه کامل نیست : برای مشاهده نسخه کامل اینجا کلیک کنید
با سلام خدمت دوستان گل

يه سوال كوچيك اما در ظاهر يا باطن بزرگ :

يه دونه ليست داريم با اين كد :

<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 ($resultmysql_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"
اگر جوابم ناقصه متوجهم كنيد
ممنون
مرجع آدرس ها