請問要如何接收多重選單的值呢?

edited 十月 2013 in 進階PHP討論
程式如下:
<tr>
<td><select name="aa" size="10" multiple id="aa">
<?php
do {
?>
<option value="<?php echo $row_rsmain6?>"<?php if (!(strcmp($row_rsmain6, $row_GET))) {echo "SELECTED";} ?>><?php echo $row_rsmain6?></option>
<?php
} while ($row_rsmain6 = mysql_fetch_assoc($rsmain6));
$rows = mysql_num_rows($rsmain6);
if($rows > 0) {
mysql_data_seek($rsmain6, 0);
$row_rsmain6 = mysql_fetch_assoc($rsmain6);
}
?>
</select></td>
</tr>
以上程式的意思是:從資料庫內抓出值並將值顯示於一個動態的多重選單,小弟想要在接收端程式中接收來至這個選單的值,我知道單一個值接收的方法,但不知道要怎接收2個以上的值(若選單中有兩筆以上的資料被選擇)!3q~~

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=842

評論

  • edited 九月 2005
    sunnylee 寫道:
    程式如下:
    <tr>
    <td><select name="aa" size="10" multiple id="aa">
    <?php
    do {
    ?>
    <option value="<?php echo $row_rsmain6?>"<?php if (!(strcmp($row_rsmain6, $row_GET))) {echo "SELECTED";} ?>><?php echo $row_rsmain6?></option>
    <?php
    } while ($row_rsmain6 = mysql_fetch_assoc($rsmain6));
    $rows = mysql_num_rows($rsmain6);
    if($rows > 0) {
    mysql_data_seek($rsmain6, 0);
    $row_rsmain6 = mysql_fetch_assoc($rsmain6);
    }
    ?>
    </select></td>
    </tr>
    以上程式的意思是:從資料庫內抓出值並將值顯示於一個動態的多重選單,小弟想要在接收端程式中接收來至這個選單的值,我知道單一個值接收的方法,但不知道要怎接收2個以上的值(若選單中有兩筆以上的資料被選擇)!3q~~

    <select name="aa" size="10" multiple id="aa">
    改成
    <select name="aa[]" size="10" multiple id="aa">
  • edited 九月 2005
    <select name="aa[]" size="10" multiple id="aa">
    那在接收端要怎麼接呢?謝謝
  • edited 九月 2005
    <?php
    if($_POST){
    for($i=0;$i<sizeof($_POST);$i++)
    echo $_POST[$i] . '<br>';
    }
    $items = array('one', 'two', 'three', 'four', 'five', 'six', 'seven');
    ?>
    <form method="post">
    <select multiple name="item[]">
    <?php
    foreach($items as $item)
    echo '<option>'.$item.'</option>';
    ?>
    </select>
    <input type="submit" name="go" value="go">
    </form>
  • edited 九月 2005
    kiang 寫道:
    <?php
    if($_POST){
    for($i=0;$i<sizeof($_POST);$i++)
    echo $_POST[$i] . '<br>';
    }
    $items = array('one', 'two', 'three', 'four', 'five', 'six', 'seven');
    ?>
    <form method="post">
    <select multiple name="item[]">
    <?php
    foreach($items as $item)
    echo '<option>'.$item.'</option>';
    ?>
    </select>
    <input type="submit" name="go" value="go">
    </form>

    抱歉抱歉,趕時間沒說清楚

    借kiang大大的程式說明一下
    一開始的狀況是
    html無法將select的值全部送出
    (若你把原本程式的$_POST或$_GET全部抓出來看就可以發現
    原本例子中只能抓到有選的option中的最後一個)

    而將select改成$item[]
    則是告訴html此變數為array
    這樣就可以將select所選的全部值以array帶出

    array的處理相信大家都很有經驗所以就不再贅述了
  • edited 九月 2005
    嗯!謝謝兩位大大的提供!小弟已經try出來了!^^
  • edited 九月 2005
    小弟現在又遇到問題了!
    ----傳送端---
    <form name="form1" method="post" action="seletest.php">
    <table border="1" align="center">
    <tr>
    <td><select name="select[]" size="16" multiple>
    <option>aaa</option>
    <option>bbb</option>
    <option>ccc</option>
    </select></td>
    <td><select name="select1[]" size="16" multiple id="select1[]">
    <? for ($i=0;isset($_POST[$i]);$i++){
    echo "<option>";
    if(isset($_POST[$i])){
    echo $_POST[$i];
    }}
    echo "</option>";?>
    </select></td>
    </tr>
    <tr>
    <td colspan="2"><div align="center">
    <input type="submit" name="Submit" value="傳右邊">
    <input type="submit" name="Submit" value="送出">
    </div></td>
    </tr>
    </table>
    </form>
    上面程式是兩個可以復選的表單,兩個按鈕,當選好左邊表單的值後按下"傳右邊"鈕,右邊的表單就會接收到左邊傳送過來的值,但是我想要按下"送出"鈕後把值傳送到接收端!
    請問我要怎做呢?謝謝大大
  • edited 九月 2005
    小弟現在又遇到問題了!
    ----傳送端---
    <form name="form1" method="post" action="seletest.php">
    <table border="1" align="center">
    <tr>
    <td><select name="select[]" size="16" multiple>
    <option>aaa</option>
    <option>bbb</option>
    <option>ccc</option>
    </select></td>
    <td><select name="select1[]" size="16" multiple id="select1[]">
    <? for ($i=0;isset($_POST[$i]);$i++){
    echo "<option>";
    if(isset($_POST[$i])){
    echo $_POST[$i];
    }}
    echo "</option>";?>
    </select></td>
    </tr>
    <tr>
    <td colspan="2"><div align="center">
    <input type="submit" name="Submit" value="傳右邊">
    <input type="submit" name="Submit" value="送出">
    </div></td>
    </tr>
    </table>
    </form>
    上面程式是兩個可以復選的表單,兩個按鈕,當選好左邊表單的值後按下"傳右邊"鈕,右邊的表單就會接收到左邊傳送過來的值,但是我想要按下"送出"鈕後把值傳送到接收端!
    請問我要怎做呢?謝謝大大
  • edited 九月 2005
    sunnylee 寫道:
    小弟現在又遇到問題了!
    ----傳送端---
    <form name="form1" method="post" action="seletest.php">
    <table border="1" align="center">
    <tr>
    <td><select name="select[]" size="16" multiple>
    <option>aaa</option>
    <option>bbb</option>
    <option>ccc</option>
    </select></td>
    <td><select name="select1[]" size="16" multiple id="select1[]">
    <? for ($i=0;isset($_POST[$i]);$i++){
    echo "<option>";
    if(isset($_POST[$i])){
    echo $_POST[$i];
    }}
    echo "</option>";?>
    </select></td>
    </tr>
    <tr>
    <td colspan="2"><div align="center">
    <input type="submit" name="Submit" value="傳右邊">
    <input type="submit" name="Submit" value="送出">
    </div></td>
    </tr>
    </table>
    </form>
    上面程式是兩個可以復選的表單,兩個按鈕,當選好左邊表單的值後按下"傳右邊"鈕,右邊的表單就會接收到左邊傳送過來的值,但是我想要按下"送出"鈕後把值傳送到接收端!
    請問我要怎做呢?謝謝大大

    這個問題已經屬於java script了
    對於java script我沒有很深的研究
    給你一個範例,這範例只能處理單選,至於要怎麼加強?已經超出我能力範圍

    <script language = "javascript">
    function add()
    {
    if(document.form1.s1.length<=0)
    {
    var x =document.getElementById("sone");
    x.disabled=true;
    }
    else
    {
    var index = document.form1.s1.options.selectedIndex;
    var values = document.form1.s1.options[index].value;
    var length = document.form1.s2.length;
    document.form1.s2.options[length] = new Option(values,values);
    document.form1.s1.options[index] = null;
    }
    }

    function del()
    {
    if(document.form1.s2.length<=0)
    {
    var x =document.getElementById("stwo");
    x.disabled=true;
    }
    else
    {
    var index = document.form1.s2.options.selectedIndex;
    var values = document.form1.s2.options[index].value;
    var length = document.form1.s1.length;
    document.form1.s1.options[length]=new Option(values,values);
    document.form1.s2.options[index]=null;
    }
    }
    </script>
    <form name=form1>
    <select name="s1" id="sone" size="10" multiple>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    </select>
    <input type="button" name="b1" value=">>" onClick="add()">
    <input type="button" name="b2" value="<<" onClick="del()">
    <select name="s2" id="stwo" size="10">
    </select>
    </form>
  • edited 九月 2005
    謝謝sam0228大大的提供!原來要做出這樣的方法是用java scrip才能做得到!
  • edited 九月 2005
    上面已經有 Sam 網有詳細的說明
    小弟就不再多放砲,
    只想說明一下
    因為PHP 是屬於 server side 執行的程式語言,
    Javascript 卻是屬於 cilent side 的語言,
    如果要處裡網頁上面的資料流,
    可以考慮用 Javascript 去處裡
    Server 端的程式架構如果太大的話,
    容易造成 server 處裡上的流量,
    有些東西放在 client side 去處理,
    可以減輕很多server 的負擔
    尤其是 javascript 學得好的話
    可以應用的非常廣泛
    以上
  • edited 九月 2005
    所以我這樣說對嗎?若要寫網頁的話,最好多學一些網頁的嵌入語言嘍!如js、php...等等!
  • edited 九月 2005
    sunnylee 寫道:
    所以我這樣說對嗎?若要寫網頁的話,最好多學一些網頁的嵌入語言嘍!如js、php...等等!

    這就看個人了

    要寫網頁第一個一定要會的就是html
    再來如果網頁要有程式功能,這時可以選擇的不少
    像php,asp,jsp,cgi,perl,甚至於c++,delphi都可以
    要生動活潑,可以學習javascript
    要更往上還可以學flash
Sign In or Register to comment.