主要是在删除多条记录时,要传递id的数组,用get和 post方法都得不到传递的值

解决方案 »

  1.   

    把你的记录列表放在一个提交表单里面.
    每条记录前加一个多选框,默认值设置为记录的编号.
    例:<INPUT TYPE="checkbox" NAME="id" VALUE=".$id."> 
    选择提交后
    通过  $_POST["id"];  得到数组!
      

  2.   

    因为有好几个动作处理,所以我的action提交给一个check.php,根据submit的name属性,返回不同的php处理,我现在每条记录前面用radiobox,只能删一条,是可以成功的:user.php<?
    mysql_connect ("localhost", "root", ""); 
    mysql_select_db ("mealorder"); 
    $userId =$_GET['userId'];
    mysql_query ("DELETE FROM USERINFO WHERE USERID='$userId'");
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <body ><form method= "POST"  name="form1" action= "check.php">
        <table border="1"  align=center>
            <tr>
                <td width=80  align="center">选择</td>
                <td width=200  align="center">姓名</td>
            </tr>
    <?  mysql_connect ("localhost", "root", ""); 
    mysql_select_db ("mealorder"); 
    $restlist=mysql_query ("SELECT USERID, USERNAME , PASSWORD FROM USERINFO ORDER BY USERNAME");
    while ( $aaa = mysql_fetch_array($restlist) ) {
    ?>
       <tr>
                 <td  align = "center"> <input type = "radio" name = "userId" value = <? echo($aaa["USERID"]); ?>></td>
          <td  align = "center"> <? echo($aaa["USERNAME"]); ?> </td>
      </tr>
    <?
      }?>
    </table>
       <table border="0"  align=center>
         <td><input type=button value="新 建" onclick="newAdd()"></td>
         <td><input type=submit name=reAddPeo value="修 改" onclick="reAdd()"></td>
         <td><input type=submit name=delPeo value="删 除" onclick="del()" ></td>
         <td><input type=button value="返 回" onclick="reList()"></td>
        </table></form>
    </body>
    </html><script language ="javascript">

    function reList()

     window.location.href = "login.php";
    } function newAdd()
    {
        window.location.href = "adduser.php";
    }function del()
    {
    form1.submit();
    }function reAdd()
    {
    form1.submit();
    }
    </script>
    check.php<?
       $userId = $_POST['userId'];
    if($_POST['delPeo']){
        $redirect_url = "user.php?userId=".$userId;
        header("Location: ".$redirect_url);
    }......
    ?>但是传id数组的时候,用了不少方法,不能从check.php会传到user.php
      

  3.   

    提交时可以用name="id[]"
    接收时用$id = $_POST['id']或$id = $_GET['id']
    然后这个$id就是个数组
      

  4.   

    我以前做过一个类似的。主要想法是把数组变成一个以某个符号分割的字符串,比如‘:’
    $id_str = array[0];
    for ($i=1; $i<count(array); $i++)
        $id_str = $id_str.':'.array[$i];
    然后urlencode,传递给操作页
    在deldete.php中使用split()分解数据库
    $id_arr = split (':',$id_str);我没仔细看你的代码,不确定你问的是不是这个意思,希望能帮到你
      

  5.   

    谢谢zfol_510(第九号梦想)不过我在传id数组到check.php时,得到的是所有一览画面出现记录的id,而不只是选择的那些记录的id。这个该怎么解决啊谢谢!
      

  6.   

    mynamesucks(C++ Primer钻研中) 
    已经说的很清楚了
    多选框命名用id[],这样post过去的变量就是你所选的id构成的数组!
      

  7.   


    说错了,我如果从第一条记录开始连续选择若干条,结果是正确的
    不过,如果不从第一条开始,或者中间空了几条再选,就会有问题,会少显示记录
    check.php
    <?
       $id = $_POST['id'];
    //print_r($id );$id_len = count($id);
    //echo "$id_len<br>";foreach($id as $key => $value){
     static $i=0;  
     $key = $i;
     $i++;
       //echo "key: ".$key."\n".$value."<br>" ;   
    }//echo "<br>";$id1 = $id[0];                
    for ($i=1; $i<$id_len; $i++)     
    {
    $id1 = $id1.':'.$id[$i];
    }
    echo "$id1";
      

  8.   


    多选框命名用id[]
    我回传时用的是类似于下面的语句,好像不能传递数组$redirect_url = "userinfo_maintenance.php?id=".$id1;
     header("Location: ".$redirect_url);如果我提交给本画面,用数组传自然没问题,我也实现了,但是现在还有修改等其他操作,我用name 属性区分不同动作,每个处理都提交给check.php,再由它返回给不同画面
      

  9.   

    我觉得没必要作check.php,三个处理都放到user.php,就是在action中出现了问题,   
     function Delete()
    {
    if(confirm("Delete?"))
    {
    document.form1.deleteflag.value = "delete";//删除
    document.form1.submit();
    }
    }
    还有,<table>  <form method="POST" action="user.php" name="form1">
    ......
    <td  align = "center"><input type="checkbox" name="<?php echo($aaa["USERID"]);?>"></td>
    ......
    </form>
    </table>