按提交按钮分<input type="submit" name="update" 
<input type="submit" name="delete"
if(!empty($_POST["update"])) //if(isset($_POST["update"]))
if(!empty($_POST["delete"]))

解决方案 »

  1.   

    做好後在IE裡不行,不但提交不了表單值,javascript也操作不了form裡的元素,=============================================================
    这个是没有问题的,检查你的代码...
      

  2.   

    <form name="main_form" id="main_form">
    <?php while (....){?>
    <input type="checkobx" name="selectid[]" id="selectid[]">記錄的標題[回復]
    <form>
    .....
    </form>
    <?php }?>
    </form>
    =====================
    //全选
    function select_all(formid,checkid){
    for (var i=0;i<document.getElementById(formid).elements.length;i++)
       if (document.getElementById(formid).elements[i].name==checkid)
          document.getElementById(formid).elements[i].checked=true;
    }
    =================
    按扭:onClick="select_all('main_form','selectid[]');"
    可能在ie里可以传值,没有试,只是js代码在ie里取不到值,
    上面是我的外层form的chechbox全选的js代码,在FF里没问题,在IE里就全选不了,去掉嵌套的form在IE就正常全选了,
    不全选用手点击勾选一个后js取不到值,下面是提交后判断是否有勾选,这个也通不过,提示“请至少选择一项”,同样去掉嵌套的form就可以:
    function select_one(formid,checkid){
      var selectone=false;
      for (var i=0;i<document.getElementById(formid).elements.length;i++){
    if (document.getElementById(formid).elements[i].name==checkid){
      if (document.getElementById(formid).elements[i].checked==true){
    selectone=true;
                    return true;
      }
    }
      }
      if(!selectone){
         alert("请至少选择一项 !");
     return false;
      }
      

  3.   

    用数组?不用吧??一般是post和get方式而已啊~
      

  4.   

    不行的,可以用JS整合了form的值再传递给PHP
      

  5.   

    但我想要有這樣的功能不嵌套怎麼實現
    -------------------
      没想通为什么非要嵌套
    =============================
    <form name="main_form" id="main_form"><input type="checkobx" name="selectid[]" id="selectid[]">記錄的標題[回復]
    <form>
     <textarea name="Content" id="Content">textarea>
     <input type="submit" name="Submit" value="提交加復">
    </form>
    --------------
    <input type="checkobx" name="selectid[]" id="selectid[]">記錄的標題[回復]
    <form>
     <textarea name="Content" id="Content">textarea>
     <input type="submit" name="Submit" value="提交加復">
    </form>
    --------------
    <input type="checkobx" name="selectid[]" id="selectid[]">記錄的標題[回復]
    <form>
     <textarea name="Content" id="Content">textarea>
     <input type="submit" name="Submit" value="提交加復">
    </form>
    -------------
    <input type="checkobx" name="selectid[]" id="selectid[]">記錄的標題[回復]
    <form>
     <textarea name="Content" id="Content">textarea>
     <input type="submit" name="Submit" value="提交加復">
    </form>
    -------------
    <input type="button" name="Submit" value="全選" onClick="select_all('main_form','selectid[]');">
    <input type="button" name="Submit" value="取消選擇">
    <input type="submit" name="Submit" value="刪除記錄">
    </form>
    ==============================
    循環輸出後結構就是這樣,每條記錄有一個回復功能,又可以批量刪除記錄,
    如果回復是另開窗口的就不用嵌套了,但我用了ajax做無刷新回復,點擊[回復]在相應的記錄下顯示原本隱藏起來的textarea輸入框,直接對這條記錄回復。回復成功後又隱藏textarea輸入框顯示回復內容,整個過程都不用刷新網頁。
    textarea名字是動態命名,不會重復的,
    <textarea name="Content<?php echo $i?>" id="Content<?php echo $i?>"></textarea>
    後台用$_POST["Content".$i];
    現在我想去掉嵌套form.全部用一個form,但不知道怎麼識別提交的是第幾第記錄,也就是後台的$_POST["Content".$i];中的i的值不知道怎麼得到,
      

  6.   

    在firefox中正常沒有問題,做的時候沒在ie上測試,做好後才發現在ie上不行。
      

  7.   

    建议做个多维数组,将checkbox,textarea, button进行绑订.
      

  8.   

    現在我想去掉嵌套form.全部用一個form,但不知道怎麼識別提交的是第幾第記錄,也就是後台的$_POST["Content".$i];中的i的值不知道怎麼得到,--------------------------------------------------------------------
     可以给你的submit input用不同的name,就可以区分开,
      

  9.   

    可以给你的submit input用不同的name,就可以区分开
    ======================
    我用記錄的id給它們命名,id是唯一的,所以所有form裡面的東西名字都不同的,
    submit名字也是不同的,但是我又怎麼知道我點擊了哪個submit呢?
      

  10.   

    ff竟然可以嵌套form.可以加一条<input type=hidden name="contentID" value="文章唯一id">
    程序通过$_POST['contentID']知道提交的是哪一篇文章。
      

  11.   

    你的问题好像是要将一个表单中的内容分开来提交吧。 可以考虑用两个form,分开来提交。
    用两个不同ID的普通按钮用javascrip提交,一个提交你希望被包含的form;另一个用来提交主动包含的form。
    其中主动包含的form中添加对应的隐藏域,通过javascrip方法给其赋值。
    两个form不要互相包含,两个按钮可以放在任意位置。
      

  12.   

    可以加一条<input type=hidden name="contentID" value="文章唯一id">
    程序通过$_POST['contentID']知道提交的是哪一篇文章。
    ====================
    會有很多個<input type=hidden name="contentID" value="文章唯一id">,循環一次就有一個,重名$_POST['contentID']會了錯
      

  13.   

    可以考虑用两个form,分开来提交。
    ====================
    怎麼分開?分開checkbox多項選擇刪除怎麼實現?
      

  14.   

    可以换种角度考虑
    里层的循环照旧,
    外层的批量删除可以通过javascript构造sql的方式传递 IDs 
    delete.php?id[1]=XXX&id[2]=XXX纯属理论,有待考证
      

  15.   

    IE也不是不行,得变通下,不能直接嵌套的,要用其他方式,比如说用javascript进行控制
      

  16.   

    用表单数组<input type=hidden name="contentID[<?=$id?>]" value="文章唯一id">
      

  17.   

    用表单数组好象行得通,
    <input type=hidden name="setID[]" value="">
    <input type=button name="" value="提交回复">
    <input type=hidden name="getid" value="<?php echo id?>">
    ======================
    我想这样,将getID[]放在提交回复按扭旁边,点击“提交回复”用将getid的值赋给setID[],
    这样只有一个setID[]是有值的,其它都是空,
    然后在后台读取所有setID[],有值的就是要回复的id记录了,就可以得到回复内容$_POST["Content".$setID];回复成功后再用js将所有的setID[]设成空值。
    这样的操作不能用id名字赋值,要用点击"提交回复"后,将它的下一个元素的值赋给上一个元素,不知道怎么操作上下元素的值?
    请问怎么将下一个元素的值传给上一个元素?然后再怎么设置所有setID[]的值为空?
      

  18.   

    這樣可以操作上下元素了,可以知道提交哪條記錄了,理論上解決了,今晚測試
    <input type=button name="" value="提交回复" onClick="javascript:this.previousSibling.setAttribute('value',this.nextSibling.getAttribute('value'));">
      

  19.   

    用上下元素方法在ie上解决了,在ff上又出现了怪问题,提交回复按扭:
    <input type=hidden name="setID[]" value="">
    <input type=button name="" value="提交回复" onlick="setID('formname',this,'setID[]')">
    <input type=hidden name="getid" value="<?php echo id?>">
    -----------------------------
    function setID(formid,buttonid,preid){
      for (var i=0;i<document.getElementById(formid).elements.length;i++){
       if (document.getElementById(formid).elements[i].name==preid){
          document.getElementById(formid).elements[i].value="";
       }
      }
    buttonid.previousSibling.setAttribute('value',buttonid.nextSibling.getAttribute('value'));
    }
    ========================
    这样在ie上没问题了,在ff上不能setAttribute赋值给“提交按扭”前面的元素setID[],
    for 循环是赋值前清空所有setID[]的值,可以正确清空,但就是因为这个for使setAttribute赋值在ff上出问题,
    去掉for在ff上就可以给setID[]设置getid有值了,下面这样就可以:
    function setID(formid,buttonid,preid){
    buttonid.previousSibling.setAttribute('value',buttonid.nextSibling.getAttribute('value'));
    }
    为什么?setID[]只能一个有值,我需要在赋值前清空所有setID[]的值,为什么有for循环在ie上行在ff上就不行,在ff上setAttribute和前面的for有什么关系?就差这一点了,惨啊
      

  20.   

    解决了,不过还不知道在ff里for清空值后为什么不能再setAttribute设置值。
    上面用了笨方法,其实不用数组的,
    不要将这句放在循环里<input type=hidden name="setID[]" value="">,放在外面改成<input type=hidden name="setID" id="setID" value="">
    这样就只有一个setID,不必用数组操作这么麻烦了,
    然后提交函数改成这样就知道提交哪条记录了,好简单啊:onclick=setID(this,"setid")
    function setID(buttonid,preid){
       document.getElementById(preid).value=buttonid.nextSibling.getAttribute('value');
    }
      

  21.   

    所以HTML5开始支持在form外的input