[英]Retrieve previously selected chosen dropdown subject value(s)
我在編碼方面遇到問題,因為當我再次單擊它來激活它時,無法將所選的下拉菜單多選為1.4.2版,無法從下拉菜單中檢索以前選擇的主題值。
我正在使用兩個不同的表,每個表都有一個字段名,所以我試圖將成員表中的t_subjects字段名與類別表中的名稱字段名進行匹配,如果存在匹配項, subject字段名稱將導致<option value='subject_name' selected >subject_name</option>
,如果不匹配,則將成為<option value='subject_name'>subject_name</option>
這就是我試圖在第一篇博文之后的任何時候單擊匹配的主題時發生的事情。
在選定的多選dd菜單選項中動態加載了42個主題。
使用implode方法將主題名稱發布到數據庫時,我沒有任何問題。
if(isset($_POST['submit']))
{
$subjects = implode(',', $_POST['subjects']);
但是,如果我再次打開頁面以使主題字段名稱為空的另一篇文章,我會收到一條錯誤消息:
Warning: implode() [function.implode]: Invalid arguments passed in...
因此,您可以看到為什么再次激活它時需要選擇以前的主題值。 這是所選dd菜單的代碼。
<tr>
<td width="32%">Subjects:</td>
<td width="68%">
<input type="radio" name="utype" id="sutype" value="s" />Subject(s)
<div id="studspan" style="display:none;">
<strong style="vertical-align:top;">Select Subject(s) :</strong>
<select name="subjects" id="subjects" data-placeholder="Select Subject(s)" style="width:350px;" multiple class="chosen-select">
<?php
$cat_sele = mysql_query("SELECT * FROM category");
while ($cat_row=mysql_fetch_array($cat_sele)) {
if($_POST['subjects'] == $cat_row['name']) $s = " selected"; else $s = "";
echo "<option value='{$cat_row['name']}'$s>{$cat_row['name']}</option>";
}
?>
</select>
</div>
問題似乎出在代碼的這一部分: if($_POST['subjects'] == $cat_row['name'])
,因為當我用$_POST['subjects']
'Accounting'
替換$_POST['subjects']
來檢查它時, ,當我再次激活它時將顯示已選擇“會計”,但是如果添加另一個主題名稱,它將顯示所有已選擇的主題。 我什至嘗試過if($_POST['t_subjects'] == $cat_row['name'])
以及("SELECT name FROM category")
,但是它們也不起作用。 因此,任何幫助這位老師的工作將非常感激。
我還包括了過程中涉及的代碼的其他部分。
elseif($_SESSION['user_type']=="m")
{
$getuser_sele = "select * from member where member_id = '".$_SESSION['ses_id']."'";
$getuser_qry = mysql_query($getuser_sele);
$getuser_row = mysql_fetch_array($getuser_qry);
$subjects = stripslashes($getuser_row['t_subjects']);
================================================== ===========
elseif($subjects=="" && $_SESSION['user_type']=="m")
{
$error="Please Enter Preferred Subjects";
}
================================================== ===========
elseif($_SESSION['user_type']=="m")
{
$qr=mysql_query("update member set
t_subjects='".addslashes($subjects)."',
================================================== ===========
<body onload="$('.chosen-select').show();
$('.chosen-select').chosen();">
================================================== ===========
<script type="text/javascript">
$("#sutype").click(function () {
$("#studspan").show(1000);
$('.chosen-select').chosen('destroy');
$('.chosen-select').show();
$('.chosen-select').chosen();
});
</script>
<script src="js/chosen.jquery.js" type="text/javascript"></script>
================================================== ===========
更新:
特里斯坦(Tristan),它可以工作,但它會在選擇列表中顯示已選擇和取消選中的所有主題名稱,這不是我想要的。 對於每個主題名稱,我在源代碼中也遇到以下錯誤。 我只是在下面顯示第一個。
<b>Warning</b>: array_search() expects parameter 2 to be array, null given in <b>/home/.../.../edit.php</b> on line <b>2784</b><br /> <option value='Accounting' selected>Accounting</option><br />
我認為問題在於如何在dbase中設置表/字段。
這是基於t_subject的第一行應該發生的情況。 如果我以成員1身份登錄並打開所選的dd菜單,則應該選擇t_subject的第一行中的Accounting,Athletics,Art,而在所選的dd菜單中未選擇其余主題列表。 當他們第一次發布時,每個成員列出的行t_subject都會發生這種情況。
使用<select name="subjects" ... multiple>
僅發送一個選擇的帖子數據。 您需要使用<select name="subjects[]" ... multiple>
來發送帖子數據中的所有選定選項。
然后$_POST['subjects']
將是一個數組,因此您需要在該數組中搜索類別名稱。
$cat_sele = mysql_query("SELECT * FROM category");
while ($cat_row=mysql_fetch_array($cat_sele)) {
if(array_search($cat_row['name'], $_POST['subjects']) !== false) $s = " selected"; else $s = "";
echo "<option value='{$cat_row['name']}'$s>{$cat_row['name']}</option>";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.