PDA

View Full Version : سوال: چگونه می توانم گزینه انتخاب شده در المان های مربوط به select و option را به یک تابع ارسال کنم؟



Ali_Sedaghat
سه شنبه 01 تیر 1389, 10:42 صبح
با سلام خدمت كاربران محترم سايت
من در حال طراحي قسمت ادمين يك سايت ورزشي هستم. در اين پروژه اي كه در دست دارم چند روزيه كه با يك مشكل جدي مواجه شده ام. و از هر راهي كه به ذهنم مي رسيد رفتم ولي باز هم جواب نگرفتم.
به همين خاطر اين مشكل و يا به عبارت بهتر سؤالم را اين جا مطرح مي كنم تا شايد به جواب مورد نظرم برسم.
قبل از مطرح كردن سؤال بايد چند مطلب عرض كنم :
1- اسكريپت زير با دو جدول Countries و Leagues كار مي كند.
2- به استثناي تابع ViewAllLeagues_Form در قسمت فراخواني تابع Do_MainPage بقيه توابع در فايل هاي ديگر قرار دارند كه با تابع require_once آن ها را فرا خواني مي كنم.
3- توابع مورد نياز جهت اين سؤال در پايين آمده است.
اما سؤال :
هدف از اجراي تابع ViewAllLeagues_Form نمايش رديف در ستون اول - كشورها به صورت مرتب شده (صعودي) در ستون دوم - انتخاب ليگ به صورت مرتب شده (صعودي) در ستون سوم - آيكن ويرايش ليگ و حذف ليگ به ترتيب در ستون هاي بعدي است.
به عنوان مثال :
فرض كنيد ادمين در رديف مربوط به كشور ايران قرار گرفته و مي خواهد در ستون مقابل ليگ مورد نظر را انتخاب نمايد. جهت انجام اين كار از المان هاي <select> و <option> استفاده كردم.
ادمين در ستون مقابل ايران از كادر انتخاب ليگ مربوطه را انتخاب نموده و يكي از آيكن هاي ويرايش يا حذف را كليك مي كند.
وقتي اين عمل انجام شد بايد شماره ليگ يعني LeagueID به تابع مربوط به ويرايش يا حذف ارسال شود. چون جدول Leagues بر اساس فيلد اصلي LeagueID كار مي كند.
مشكل من اين جاست كه با انتخاب ليگ مربوطه LeagueID مربوط به آن ليگ به توابع ويرايش يا حذف ارسال نمي شود يا يك شماره ديگر ارسال مي شود كه اين اشتباه است.
چند روزيه كه درگير اين مسأله هستم و هنوزم كه هنوزه نتونستم اين مشكل را برطرف كنم.
چنان چه از شما كاربران محترم كسي هست كه مي تونه مرا راهنمايي كنه ازش ممنون مي شم كه در اين زمينه بهم كمك كنه.
با تقديم احترام
صداقت
كدهاي نوشته شده جهت انجام اين كار. در ضمن فايل هاي مورد نياز به پيوست ارسال مي گردد.




<?php
session_start();

$LeagueID = addslashes(trim($_POST['ctl00$ContentPlaceHolder1$FormView1$SelectedLeagu eTextBox']));

//-------------------> Part 1 : ViewAllUsers's Functions
if (isset($_POST['ImageSelected']) && isset($_POST['LeagueIDPosted']))
{
switch($_POST['ImageSelected'])
{
case 'EditLeague':
Do_EditLeague('Leagues', $_POST['LeagueIDPosted'], '');
break;
case 'DeleteLeague':
Do_DeleteLeague('Leagues', $_POST['LeagueIDPosted']);
break;
case 'UpdateLeague':
if (!$LeagueID)
{
?>
<script type="text/javascript">
alert('لطفاً تمام اطلاعات را به طور كامل وارد نماييد و هيچ فيلدي را خالي نگذاريد');
</script>
<?php
Do_EditLeague('Leagues', $_POST['LeagueIDPosted'], '');
break;
}
Do_Update('Leagues', $_POST['LeagueIDPosted'], $NewCountryName);
break;
default:
Do_MainPage();
break;
}
}
else
{
Do_MainPage();
}


//------------------->
function Do_MainPage()
{
$Title = 'نمايش تمام كشورهاي ثبت شده در سايت';

Default_Header_Title($Title);
Manager_Style();
Default_Java1();
MainPage_Form();
Default_Java2();
Default_Header_Logo();
Default_Top_Menubar();
Default_Error_Table();
Manager_Menu();
ViewAllLeagues_Form(AllRecords_Array());
Default_Footer();
Manager_Java_Error();
End_Form();
exit;
}

//------------------->
function MainPage_Form()
{
?>

<script type="text/javascript">

function EditLeague_Java(varImageSelected, varLeagueIDPosted){
document.getElementById('ImageSelected').value=var ImageSelected;
document.getElementById('LeagueIDPosted').value=va rLeagueIDPosted;
document.aspnetForm.submit();
}

function EditLeagueBack_Java(){
document.aspnetForm.submit();
}

function DeleteLeagueConfirm_Java(varImageSelected, varLeagueIDPosted){
var Confirm = confirm('آيا از حذف شدن كشور ' + varLeagueIDPosted + ' مطمئن هستيد؟');
if (!Confirm){
document.aspnetForm.submit();
}
else{
document.getElementById('ImageSelected').value=var ImageSelected;
document.getElementById('LeagueIDPosted').value=va rLeagueIDPosted;
document.aspnetForm.submit();
}
}

function DeleteLeagueConfirmOfEditLeague_Java(varImageSelec ted, varLeagueIDPosted){
var Confirm = confirm('آيا از حذف شدن كشور ' + varLeagueIDPosted + ' مطمئن هستيد؟');
if (!Confirm){
document.getElementById('ImageSelected').value='Ed itLeague';
document.getElementById('LeagueIDPosted').value=va rLeagueIDPosted;
document.aspnetForm.submit();
}
else{
document.getElementById('ImageSelected').value=var ImageSelected;
document.getElementById('LeagueIDPosted').value=va rLeagueIDPosted;
document.aspnetForm.submit();
}
}

function ChangeLeague() {
document.getElementById('ctl00_ContentPlaceHolder1 _FormView1_SelectedLeagueTextBox').value = document.getElementById('ctl00_ContentPlaceHolder1 _FormView1_LeaguesDropDownList').value;
}

</script>

<form name="aspnetForm" method="post" action="EditLeague.php" id="aspnetForm">

<div>
<input type="hidden" name="ImageSelected" id="ImageSelected" value="" />
<input type="hidden" name="LeagueIDPosted" id="LeagueIDPosted" value="" />

</div>

<?php
}

//------------------->
function ViewAllLeagues_Form($Leagues_Array)
{
?>

<div class="main_nav">
<div id="ctl00_ContentPlaceHolder1_Panel1">

<div id="ctl00_ContentPlaceHolder1_ValidationSummary1" class="summary errorsummary errorsummaryfloat" style="color:Red;display:none;">

</div>
<span id="ctl00_ContentPlaceHolder1_CustomValidator1" style="color:Red;display:none;"></span>
<div class="rounded_STYLE boxheader" style="margin-right:2px">
<div class="tl"></div><div class="tr"></div>
ليست تمام كشورهاي ثبت شده در سايت
<div class="bl"></div><div class="br"></div>
</div>
<div class="rounded_STYLE" style="margin-right:2px; width:704px; height:auto;">
<div class="tl"></div><div class="tr"></div>

<table class="grid-view" cellspacing="0" border="0" id="ctl00_ContentPlaceHolder1_GridView1" style="width:704px;border-collapse:collapse;">
<tr class="header">
<th scope="col">رديف</th><th scope="col">نام كشور</th><th scope="col">نام ليگ</th><th scope="col">&nbsp;</th><th scope="col">&nbsp;</th><th scope="col">&nbsp;</th>
</tr>
<?php
for ($i = 0; $i < count(CountryID_Array($Leagues_Array)); $i++)
{
?>
<tr class="alternate">
<?php
$CountryID_Array = CountryID_Array($Leagues_Array);
$CountryID = trim(stripslashes($CountryID_Array[$i]));

$CountryName_Array = CountryID_Search($CountryID);
$CountryName = trim(stripslashes($CountryName_Array[0]['CountryName']));

?>
<td class="verticalline" style="width:50px;"><?php echo $i+1; ?></td>
<td class="verticalline" style="width:150px;padding-right:10px;text-align:right;"><?php echo $CountryName; ?></td>
<td class="verticalline" style="width:650px;padding-right:10px;text-align:right;">

<select name="ctl00$ContentPlaceHolder1$FormView1$LeaguesDropDow nList" id="ctl00_ContentPlaceHolder1_FormView1_LeaguesDropDow nList" onchange="ChangeLeague();" style="width:150px;">
<option selected="selected" value="0">انتخاب کنید</option>

<?php
$LeagueID_Array = LeagueID_Array($CountryID);
//$LeagueID = '1';
for ($j = 0; $j < count($LeagueID_Array); $j++)
{
$LeagueID = trim(stripslashes($LeagueID_Array[$j]['LeagueID']));

$LeagueName_Array = LeagueName_Array($LeagueID);
$LeagueName = trim(stripslashes($LeagueName_Array[0]['LeagueName']));

?>
<option value="<?php echo $LeagueID; ?>"><?php echo $LeagueName; ?></option>
<?php
}
?>

</select>
<input name="ctl00$ContentPlaceHolder1$FormView1$SelectedLeague TextBox" type="text" value="0" id="ctl00_ContentPlaceHolder1_FormView1_SelectedLeague TextBox" class="hidecontrol" />
</td>
<td style="width:25px;"><input type="image" name="ctl00$ContentPlaceHolder1$GridView1$ctl02$ibEdit" id="ctl00_ContentPlaceHolder1_GridView1_ctl02_ibEdit" title="ويرايش كشور" src="<?php echo Default_Current_Folder('Images/Edit.png'); ?>" onclick="EditLeague_Java('EditLeague', '<?php echo $LeagueID; ?>');" style="width:16px;border-width:0px;" /></td>
<td style="width:25px;"><input type="image" name="ctl00$ContentPlaceHolder1$GridView1$ctl02$ibDelete" id="ctl00_ContentPlaceHolder1_GridView1_ctl02_ibDelete" title="حذف كشور" src="<?php echo Default_Current_Folder('Images/delete.gif'); ?>" onclick="DeleteLeagueConfirm_Java('DeleteLeague', ctl00_ContentPlaceHolder1_FormView1_SelectedLeague TextBox.value);" style="width:16px;border-width:0px;" /></td>
</tr>
<?php
}
?>
<tr>
<td colspan="8">
</td>
</tr>

</table>
</div>
<div class="bl"></div><div class="br"></div>
</div>


</div>

<?php
}

//------------------->
function AllRecords_Array()
{
$Conn = db_connect();

// check if username is unique
$Query = "select * from Leagues order by CountryID";
$Result = $Conn->query($Query);
if (!$Result)
throw new Exception('عمليات پرس و جو از بانک اطلاعاتي با موفقيت انجام نگرفت.');

if ($Result->num_rows>0)
{
$Num_Results = $Result->num_rows;
for ($i = 0; $i < $Num_Results; $i++)
{
$New_Array[$i] = $Result->fetch_assoc();
}

return $New_Array;
}
}

//------------------->
function CountryID_Array($argArray)
{
$Counter = 0;
for ($i = 0; $i < count($argArray); $i++)
{
if ($argArray[$i+1]['CountryID'] != $argArray[$i]['CountryID'])
{
$New_Array[$Counter] = $argArray[$i]['CountryID'];
$Counter = $Counter + 1 ;
}
}
return $New_Array;
}

//------------------->
function CountryID_Search($CountryID)
{
$Conn = db_connect();
$Query = "select CountryName from Countries where CountryID = '$CountryID'";
$Result = $Conn -> query($Query);
if (!$Result)
echo 'Search Anjam Nashod.';
if ($Result -> num_rows > 0)
{
$Num_Results = $Result -> num_rows;
for ($i = 0; $i < $Num_Results; $i++)
{
$CountryName_Array[$i] = $Result -> fetch_assoc();
}
}
else
{
echo 'Moredi Peida Nashod.';
}
return $CountryName_Array;
}

//------------------->
function LeagueID_Array($CountryID)
{
$Conn = db_connect();
$Query = "select LeagueID from Leagues where CountryID = '$CountryID'";
$Result = $Conn -> query($Query);
if (!$Result)
echo 'Search Anjam Nashod.';
if ($Result -> num_rows > 0)
{
$Num_Results = $Result -> num_rows;
for ($i = 0; $i < $Num_Results; $i++)
{
$New_Array[$i] = $Result -> fetch_assoc();
}
}
else
{
echo 'Moredi Peida Nashod.';
}
sort($New_Array);
return $New_Array;
}

//------------------->
function LeagueName_Array($LeagueID)
{
$Conn = db_connect();
$Query = "select LeagueName from Leagues where LeagueID = '$LeagueID'";
$Result = $Conn -> query($Query);
if (!$Result)
echo 'Search Anjam Nashod.';
if ($Result -> num_rows > 0)
{
$Num_Results = $Result -> num_rows;
for ($i = 0; $i < $Num_Results; $i++)
{
$New_Array[$i] = $Result -> fetch_assoc();
}
}
else
{
echo 'Moredi Peida Nashod.';
}
return $New_Array;
}

//------------------->
function db_connect()
{
$Msg_Not_Connect = 'ارتباط با بانک اطلاعاتي برقرار نشد.';
$Sql_Hostname = 'localhost';
$DB_Username = 'root';
$DB_Password = '';
$DB_Name = 'delta';

$Result = new mysqli($Sql_Hostname, $DB_Username, $DB_Password, $DB_Name);
if (!$Result)
{
throw new Exception($Msg_Not_Connect);
}
else
{
return $Result;
}
}
?>

ببخشید که این پست من این قدر طولانی شد.

f_naderi
سه شنبه 01 تیر 1389, 16:26 عصر
سلام فکر میکنم که اشکال از این قسمت برنامه باشه:

<option value="<?php echo $LeagueID; ?>"><?php echo $LeagueName; ?></option>
شما <؟ بالای این دستور را بردارید و به جای دستور بالایی این دستور را بنویسید

echo '<option value="'.$LeagueID.'">'.$LeagueName.'</option>';
و <؟PHP زیر آن دستور بالایی را نیز بردارید

<?php
$LeagueID_Array = LeagueID_Array($CountryID);
//$LeagueID = '1';
for ($j = 0; $j < count($LeagueID_Array); $j++)
{
$LeagueID = trim(stripslashes($LeagueID_Array[$j]['LeagueID']));
$LeagueName_Array = LeagueName_Array($LeagueID);
$LeagueName = trim(stripslashes($LeagueName_Array[0]['LeagueName']));
echo '<option value="'.$LeagueID.'">'.$LeagueName.'</option>';
}
?>
ان شاالله که مشکلتون حل میشه.

Ali_Sedaghat
چهارشنبه 02 تیر 1389, 08:41 صبح
با سلام خدمت كاربران محترم
پيرو نامه ي قبلي بايد عرض كنم كه در صفحه نمايش ليگ ها پنج ستون به نام هاي رديف - نام كشور - نام ليگ - حذف و ويرايش وجود دارند.
رديف 1 - كشور آلمان و CountryID آن مساوي 5 مي باشد - ليگ هاي اين كشور 4 مورد است كه LeagueID هاي مربوط به آن به ترتيب عبارتند از : 1-2-3-4
رديف 2 - كشور اسپانيا و CountryID آن مساوي 13 مي باشد - ليگ هاي اين كشور 5 مورد است كه LeagueID هاي مربوط به آن به ترتيب عبارتند از : 5-6-7-8-9
رديف 3 - كشور انگلستان و CountryID آن مساوي 25 مي باشد - ليگ هاي اين كشور 8 مورد است كه LeagueID هاي مربوط به آن به ترتيب عبارتند از : 10-11-12-13-14-15-16-17
رديف 4- كشور ايتاليا و CountryID آن مساوي 29 مي باشد - ليگ هاي اين كشور 5 مورد است كه LeagueID هاي مربوط به آن به ترتيب عبارتند از : 18-19-20-21-22
رديف 5 - كشور ايران و CountryID آن مساوي 30 مي باشد - ليگ هاي اين كشور 6 مورد است كه LeagueID هاي مربوط به آن به ترتيب عبارتند از : 23-24-25-26-27-28
رديف 6 - كشور روسيه و CountryID آن مساوي 69 مي باشد - ليگ هاي اين كشور 4 مورد است كه LeagueID هاي مربوط به آن به ترتيب عبارتند از : 37-38-39-40
رديف 7 - كشور ژاپن و CountryID آن مساوي 75 مي باشد - ليگ هاي اين كشور 4 مورد است كه LeagueID هاي مربوط به آن به ترتيب عبارتند از : 41-42-43-44
رديف 8 - كشور فرانسه و CountryID آن مساوي 93 مي باشد - ليگ هاي اين كشور 4 مورد است كه LeagueID هاي مربوط به آن به ترتيب عبارتند از : 29-30-31-32
و الي آخر

در ابتداي كار گزارشي كه از جدول Leagues تهيه كردم بر اساس CountryID يا كد كشورها مرتب شده بودند. منتهاي مراتب كشورها تا رديف 5 مرتب بوده و از رديف 6 به بعد نامرتب بودند.
در ضمن هدف من از طراحي اين صفحه مرتب شدن گزارشم ابتدا بر اساس كد كشور و سپس كد ليگ ها بودند كه هيچ كدوم از آن ها عملي نشد. يعني كشورها مرتب بودند ولي ليگ ها نامرتب.
من اين گزارش را به هر شكلي كه ممكن بود تهيه كردم ولي باز هم آن ترتيبي كه مي خواستم صورت نگرفت.

بگذريم. در اسكريپتي كه در پست قبلي داده ام و دوست عزیز f_naderi زحمت جواب آن را داده اند عرض كنم كه كدهاي ليگ مربوط به رديف اول يعني كشور آلمان به درستي به تابع مورد نظرم ارسال مي گردند اما در مورد رديف هاي (كشورهاي) بعد فقط كد صفر ارسال مي گردد.
وقتي اسكريپت را خط به خط مي خونم هيچ مشكل يا خطايي ديده نمي شه ولي نمي دونم گير كارم كجاست.
مثلاً وقتي خط زير را اجرا مي كنم آخرين مقداري كه در متغير LeagueID ذخيره شده است را نمايش مي دهد. به عنوان مثال در كشور آلمان فقط عدد 4 در كشور اسپانيا عدد 9 و در بقيه كشورها نيز به همين ترتيب عمل مي كند.


<td style="width:25px;"><input type="image" name="ctl00$ContentPlaceHolder1$GridView1$ctl02$ibDelete" id="ctl00_ContentPlaceHolder1_GridView1_ctl02_ibDelete" title="حذف كشور" src="<?php echo Default_Current_Folder('Images/delete.gif'); ?>" onclick="DeleteLeagueConfirm_Java('DeleteLeague', '<?php echo $LeagueID; ?>');" style="width:16px;border-width:0px;" /></td>


يا زماني كه اين خط را اجرا مي كنم همان طور كه قبلاً هم عرض كردم كدهاي ليگ مربوط به كشور آلمان كه در رديف اول قرار دارند به درستي به تابع ارسال مي شوند اما در بقيه موارد (كشورها) فقط عدد صفر ارسال مي گردد.


<td style="width:25px;"><input type="image" name="ctl00$ContentPlaceHolder1$GridView1$ctl02$ibDelete" id="ctl00_ContentPlaceHolder1_GridView1_ctl02_ibDelete" title="حذف كشور" src="<?php echo Default_Current_Folder('Images/delete.gif'); ?>" onclick="DeleteLeagueConfirm_Java('DeleteLeague', document.getElementById('ctl00_ContentPlaceHolder1 _FormView1_LeaguesDropDownList').value);" style="width:16px;border-width:0px;" /></td>


احساس مي كنم حلقه for در نمايش كشورها و ليگ ها درست كار مي كند ولي در انتخاب ليگ ها خوب عمل نمي كند به عبارت ديگر فقط يك بار حلقه اجرا مي گردد.
خلاصه دوستان حسابي گير كردم و نمي دونم كه اين مشكلم را چه طوري حل كنم. چند روزه که درگیر این اسکریپتم.
اگه كسي هست كه مي تونه در اين زمينه بهم كمك كنه ازش ممنون مي شم مرا راهنمايي كنه.
با تقديم احترام
صداقت

Ali_Sedaghat
پنج شنبه 03 تیر 1389, 11:26 صبح
سلام دوستان گرامی
کسی نیست جواب سوال من را بدهد؟
نیاز مبرم به جواب این سوال دارم. لطفاً راهنمایی کنید.
با تشکر
صداقت