請問表單內可以有3個以上的命令按鈕嗎?

edited 十月 2013 in 進階PHP討論
請問大大!假設我在form1內有3個命令鈕,第一個是新增,第二個是刪除,第三個是編輯,因為這三個按鈕的功能都不一樣,就小弟所知,當按鈕按下後就會依照表單內所設定的action去呼叫另一個網頁/程式, 假設action的值設定add.php那麼不管我按下按鈕一或按鈕二,表單就呼叫add.php並且將變數傳到add.php,這樣就沒辦法達到3個按鈕有3種功能的設定了。
請問要怎解決這問題呢?

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

評論

  • edited 九月 2005
    兩個想法:

    1. 為每一個按鈕建立獨立的 FORM,這樣子每次點選所傳送的數值就不一樣,而且比較簡單。

    2. 透過JAVASCRIPT,不熟...,請自行研究
  • edited 九月 2005
    kiang 寫道:
    兩個想法:

    1. 為每一個按鈕建立獨立的 FORM,這樣子每次點選所傳送的數值就不一樣,而且比較簡單。

    2. 透過JAVASCRIPT,不熟...,請自行研究
    <input type="button" onclick="document.location='網頁名稱'">
    此做法不會影響到FORM的使用
    希望有所幫助囉
  • edited 九月 2005
    可能是我表達得不夠清楚!
    假設表單上面有2個index可以輸入的文字欄位,有3個命令按鈕分別是新增、刪除、編輯,當按下新增時,文字欄位內的值會存入資料庫,當按下刪除時資料會從資料庫中刪除,當按下編輯時文字欄位內的值會清空。就小弟剛剛研究完的結果.....當按下新增時,表單內的值除了2個文字欄位內的值會被傳送之外,而所按下的按鈕的值也會一併傳送過去。
    這樣我的問題也算解決了吧!只要在接收的那個網頁/程式判斷是哪個按鈕值再去run新增或刪除。
  • edited 九月 2005
    sunnylee 寫道:
    可能是我表達得不夠清楚!
    假設表單上面有2個index可以輸入的文字欄位,有3個命令按鈕分別是新增、刪除、編輯,當按下新增時,文字欄位內的值會存入資料庫,當按下刪除時資料會從資料庫中刪除,當按下編輯時文字欄位內的值會清空。就小弟剛剛研究完的結果.....當按下新增時,表單內的值除了2個文字欄位內的值會被傳送之外,而所按下的按鈕的值也會一併傳送過去。
    這樣我的問題也算解決了吧!只要在接收的那個網頁/程式判斷是哪個按鈕值再去run新增或刪除。
    程式沒有對錯只有結果
    您的方法當然可以解決
    只是提出一點小建議:
    當你需要處理的數據越來越多時
    會造成程式長度過長
    將刪除與新增分開處理,一來一隻程式可以專心處理一件事
    這樣程式會比較"清爽"
    新增修改功能,也會比較方便吧

    一些個人心得...
  • edited 九月 2005
    的確!sam0228大大說的我也蠻同意的!但是問題是我不知道要怎麼去讓新增按鈕呼叫新增的程式,刪除的按鈕呼叫刪除的程式!因為在同一個表單中action的值只能設定單一個不是add.php就del.php這兩種(假設add.php是新增,del.php是刪除)。
    必竟新增按鈕及刪除按鈕都在同一個表單內。
    然而您又提到用此<input type="button" onclick="document.location='網頁名稱'">方法!小弟馬上就試試看!
    可是form的action要指定嗎?如果不指定可以送出兩個text欄位中的值嗎?
    謝謝大大
  • edited 九月 2005
    sunnylee 寫道:
    的確!sam0228大大說的我也蠻同意的!但是問題是我不知道要怎麼去讓新增按鈕呼叫新增的程式,刪除的按鈕呼叫刪除的程式!因為在同一個表單中action的值只能設定單一個不是add.php就del.php這兩種(假設add.php是新增,del.php是刪除)。
    必竟新增按鈕及刪除按鈕都在同一個表單內。
    然而您又提到用此<input type="button" onclick="document.location='網頁名稱'">方法!小弟馬上就試試看!
    可是form的action要指定嗎?如果不指定可以送出兩個text欄位中的值嗎?
    謝謝大大
    <form method="post" name="form1" action="新增頁面">
    <input type="text" name="AA">
    <input type="text" name="BB">
    <input type="sumit" name="ADD" value="新增">
    <input type="button" onclick="document.location='刪除頁面?AA=' + form1.AA.value + '&BB=' + form1.BB.value" value="刪除">
    </form>
    以這個程式來做範例
    form中的action會執行新增的submit功能(當user是click新增)
    而當user是click刪除的時候,ie會將AA跟BB的值以類似url(get)的方式送出(有時value要寫成Value,實際上我也還沒完全搞清楚)

    這例子有使用到一些java script

    希望能有幫助囉
  • edited 九月 2005
    sunnylee 寫道:
    請問大大!假設我在form1內有3個命令鈕,第一個是新增,第二個是刪除,第三個是編輯,因為這三個按鈕的功能都不一樣,就小弟所知,當按鈕按下後就會依照表單內所設定的action去呼叫另一個網頁/程式, 假設action的值設定add.php那麼不管我按下按鈕一或按鈕二,表單就呼叫add.php並且將變數傳到add.php,這樣就沒辦法達到3個按鈕有3種功能的設定了。
    請問要怎解決這問題呢?

    不知道這個方法如何
    用GET或POST作METHOD
    <form action="action.php" method="post" name="action">
    <input type="submit" value="新增" name="add">
    <input type="submit" value="刪除" name="del">
    <input type="submit" value="編輯" name="edit">
    </form>
    <?php
    if (isset($add))
    {
    echo "add";
    }
    if (isset($del))
    {
    echo "del";
    }
    if (isset($edit))
    {
    echo "edit";
    }
    ?>

    在if裡面可以加入各項動作就可以了,
    基本上小弟覺得可以另外寫三個檔
    add.php del.php edit.php
    然後再三個if分別用include_once呼叫會比較好管理
    因為小弟還是新手
    如有任何錯誤還請各位包涵
  • edited 九月 2005
    不知道這個方法如何
    用GET或POST作METHOD
    <form action="action.php" method="post" name="action">
    <input type="submit" value="新增" name="add">
    <input type="submit" value="刪除" name="del">
    <input type="submit" value="編輯" name="edit">
    </form>
    <?php
    if (isset($add))
    {
    echo "add";
    }
    if (isset($del))
    {
    echo "del";
    }
    if (isset($edit))
    {
    echo "edit";
    }
    ?>

    在if裡面可以加入各項動作就可以了,
    基本上小弟覺得可以另外寫三個檔
    add.php del.php edit.php
    然後再三個if分別用include_once呼叫會比較好管理
    因為小弟還是新手
    如有任何錯誤還請各位包涵[/quote]
    謝謝上面這位大大的意見!此方法小弟也試過!的確是不錯的一個方法!謝謝啦~若有更好的方法也可以告訴 小弟我!
  • edited 九月 2005
    通常在作新增修改刪除的動作的時候,
    其實動作都不見得會很複雜,
    通常我是以switch case 的方式去判斷,
    用MVC的方式去寫也是可以,
    除非我要作的動作會動用到超過兩三百行程式,
    不然新增修改刪除這些事情,我通常是會寫在一起
    這都是見仁見智的選擇性問題

    至於開版的問題,很多朋友都有答覆了,
    只是通常的管理介面邏輯,
    都是在 list 資料的程式裡面,
    加上新增刪除跟修改的動作
    新增是完全不需要用到 form 的資料
    所以<input type="button" onclick="location.href='目的地.php'" value=新增>
    修改就把form 的內容送出,
    刪除通常會用 checkbox 選取之後送出作刪除動作

    一句話,還是見仁見智囉
  • edited 九月 2005
    jagerhu大大您有提到這一行程式!
    <input type="button" onclick="location.href='目的地.php'" value=新增>
    我想問一下,要怎把值傳到"目的地.php"呢?
    3qq
  • edited 九月 2005
    sunnylee 寫道:
    jagerhu大大您有提到這一行程式!
    <input type="button" onclick="location.href='目的地.php'" value=新增>
    我想問一下,要怎把值傳到"目的地.php"呢?
    3qq

    <input type="button" onclick="location.href='目的地.php'" value=新增>

    既然這是 button 而不是 submit
    最常見的一種方法就是
    <input type="button" onclick="location.href='目的地.php?variableName=formName.id.value'" value=新增>
    前面的sam 網友已經有提供過寫法,下面在詳細說明一下

    如上面有個
    <form name="form1" ...........以下略>
    <input type="text" name="birth"....後面略>
    就可以用
    <input type="button" onclick="location.href='目的地.php?birth=form1.birth.value'" value=新增>
    當然上面一行的 birth 就看你自己要傳什麼名字的 variable,
    就自己用這樣的variableName就可以
    譬如上面的birth
    下一頁的程式就可以用$_GET 去接
    當然也可以用 $_REQUEST 去接
  • edited 九月 2005
    我的程式如下:
    ---傳送端----
    <form name="form1" method="post" action="">
    <table border="1" align="center">
    <tr>
    <td><p align="center"><input name="aa" type="text" id="aa"></p></td>
    </tr>
    <tr>
    <td><div align="center">
    <input type="button" name="Submit" value="傳送" onClick="location.href='seleget.php?bb=form1.aa.value'" >
    </div></td>
    </tr>
    </table>
    </form>
    ----接收端----
    <?
    echo $_GET;
    ?>
    當我在aa這個text中輸入123或其他值,在接收端都只收到form1.aa.value這個值!
    請問我是哪裏出錯了呢?
    button這個用法有限定在什麼系統下才可以用嗎?我的os是xp
  • edited 九月 2005
    sunnylee 寫道:
    我的程式如下:
    ---傳送端----
    <form name="form1" method="post" action="">
    <table border="1" align="center">
    <tr>
    <td><p align="center"><input name="aa" type="text" id="aa"></p></td>
    </tr>
    <tr>
    <td><div align="center">
    <input type="button" name="Submit" value="傳送" onClick="location.href='seleget.php?bb=form1.aa.value'" >
    </div></td>
    </tr>
    </table>
    </form>
    ----接收端----
    <?
    echo $_GET;
    ?>
    當我在aa這個text中輸入123或其他值,在接收端都只收到form1.aa.value這個值!
    請問我是哪裏出錯了呢?
    button這個用法有限定在什麼系統下才可以用嗎?我的os是xp

    <input type="button" name="Submit" value="傳送" onClick="location.href='seleget.php?bb=form1.aa.value'" >
    改成
    <input type="button" name="Submit" value="傳送" onClick="location.href='seleget.php?bb=' + form1.aa.value" >

    以你原來的寫法來說
    'seleget.php?bb=form1.aa.value'
    直接被單引號包住
    所以不經過html處理直接當成字串傳出
    結果就會是
    bb=form1.aa.value

    當改成
    'seleget.php?bb=' + form1.aa.value
    在html送出之前
    會先處理
    form1.aa.value
    將aa這個text的值加在後面
    結果才會是
    bb=123

    建議你有興趣的話可以找幾本javascript跟html的書看看
    打好基礎進步將會很快
  • edited 九月 2005
    原來是這樣哦!那可否請sam大大提供一下有哪幾本試合新手看的js以及html呢?本身是有點程式的蓋念了!但遇到要配合網頁這種嵌入式的寫法,真的是考倒我了!
  • edited 九月 2005
    我比較習慣直接網路上查

    yahoo或google打上html或javascript都能找到很多資料
    而php當然首推www.php.net囉
  • edited 九月 2005
    底下的程式是小弟我剛剛run出來的,也正好是我想要的結果!
    ----傳送端---
    <form name="form1" method="post" action="seleget.php">
    <table border="1" align="center">
    <tr>
    <td width="15"><p align="center">aa:<br>
    bb:</p>
    </td>
    <td width="180"><input name="aa" type="text" id="aa">
    <br>
    <input name="bb" type="text" id="bb" value="<? echo $_GET?>"></td>
    </tr>
    <tr>
    <td colspan="2"><div align="center">
    <input type="button" name="Submit" value="傳給bb" onClick="location.href='seletest.php?bb='+form1.aa.value" >
    <input type="submit" name="Submit" value="送出">
    </div></td>
    </tr>
    </table>
    </form>
    接收端
    <?
    echo $_POST;
    ?>
    非常感謝sam大大及jagerhu大大!
  • edited 九月 2005
    不好意思,做了錯誤的示範,
    的確是忘了加上 ' ' 的語法
    就像是alert('here is the value=' + formName.id.value ) 的道理
    只是寫到html 裡面也要記得加上

    感謝指證
  • edited 九月 2005
    直接用 javaScript 修改 form action 的方法應該也很好用...

    例如:
    function formAcriotChang(formID,actionUrl){
    document.getElementById(formID).action = actionUrl;
    }

    範例請參考:
    http://home.v-dark.net/~darkhero/test/3submit.php
    http://home.v-dark.net/~darkhero/test/3submit.phps
  • edited 九月 2005
    我也來試試看!Darkhero大大的提供!謝啦~
Sign In or Register to comment.