Php 从复选框中获取错误的变量

Php 从复选框中获取错误的变量,php,html,mysql,variables,checkbox,Php,Html,Mysql,Variables,Checkbox,我有一个带有复选框的HTML表,它将显示MYSQL数据库中的行。 问题是,当我标记其中一行在其上执行某些操作时,它会给我一个错误的值,但MYSQL代码运行正常,并且它会更新正确的行, 我很困惑,不知道是什么问题,直到一小时前它还工作得很好。 我使用了echo函数来查看值的结果,每次$I和地址为零的数组都显示为零,但是MYSQL更新代码得到了正确的值并更新了正确的行 HTML表格: <?php $connection = mysql_connect('localhost',

我有一个带有复选框的HTML表,它将显示MYSQL数据库中的行。 问题是,当我标记其中一行在其上执行某些操作时,它会给我一个错误的值,但MYSQL代码运行正常,并且它会更新正确的行, 我很困惑,不知道是什么问题,直到一小时前它还工作得很好。 我使用了echo函数来查看值的结果,每次$I和地址为零的数组都显示为零,但是MYSQL更新代码得到了正确的值并更新了正确的行

HTML表格:

<?php
        $connection = mysql_connect('localhost', '', '');
        $db = mysql_select_db('table', $connection);
        mysql_query("SET CHARACTER SET utf8;");
        mysql_query("SET SESSION collation_connection = 'utf8_persian_ci'"); 


        /* Inbox section */
        $query = mysql_query("SELECT * FROM article WHERE editor='' && status='Under Review' ", $connection);

            $string = '';

            if (mysql_num_rows($query)){
            $_SESSION["count"]=mysql_num_rows($query);
            ?>

        <form method="POST" action="">
        <table cellspacing='0' width="800"  border='1'>
            <tr>
                <th>Title</th>
                <th>Firstname</th>
                <th>Lirstname</th>
                <th>Article Title</th>
                <th>Article File</th>
                <th>Reviewer Email Address</th>
                <th>Mark</th>

            </tr>

        <?php   while($row = mysql_fetch_assoc($query)){ ?>



            <tr>
                <td align='center'><input type='text' name='title[]' id='title' value= "<? echo $row['title']; ?>" ></td>
                <td align='center'><input type='text' name='fname[]' id='fname' value= "<? echo $row['fname']; ?>" ></td>
                <td align='center'><input type='text' name='lname[]' id='lname' value= "<? echo $row['lname']; ?>" ></td>
                <td align='center'><input type='text' name='mastitle[]' id='mastitle'  value= "<? echo $row['mstitle']; ?>"></td>
                <td align='center'><input type='text' name='file[]' id='file' value="<? echo $row['msfile']; ?> "></td>
                <td align='center'><input type='text' name='editoremail[]' id='editoremail' ></td>
                <td align="center"><inputtype="checkbox" name="checkbox[]" id="checkbox" value="<? echo $row['id']; ?>" /></td>

            </tr>               
      <?php } ?>

            </table>
            <div class='cleaner h10'></div>
            <input type='submit' name='send' id='send' value='Send'>
        </form>


您的复选框和输入字段在php代码中没有正确映射。复选框[1]并不总是指倾斜[1]、fname[1]……等。使用复选框名称,如name=“checkbox[]”,其中$loop\u计数器的值为0、1、2…如果这样做,我应该如何检查我选择的是哪一个,以及我应该在mysql查询代码中用什么来代替{where
id
='$set\u id'}?您只需要更改这行代码$set\u id=$\u请求['checkbox'][$i];如果您告诉我$\u会话[“count”]的业务逻辑,我可以这样做。$\u会话[“count”]是用于计算可用行数的,我已将其添加到代码顶部。@Fred ii-SESSION_START位于我的页面顶部,我没有在此处显示它。提前谢谢,您可以解释一下您所做的工作吗?现在,复选框存储两个信息,db_table_row_id和form_table_row_counter,用“\u”分隔。有效吗..我遇到了您修复的代码的另一个问题,如果有一行或记录,您的代码将不起作用,$article和$TOmail&$manuttitle变量值为空。但是如果记录数超过一行,它将起作用,确切的问题是您的代码将不计算第一行,并开始计算后面的记录呃第一个,我应该怎么做呢?$row的值是多少?…在这个例子中它应该是“0”,在这个例子中,$\u请求有什么类型的值。它不像$\u请求['file']=array('value')?
 <?php
        // Check if button name "Submit" is active, do this 
        if(isset($_POST['send']) && $_POST['send'] == 'Send')
         {


            for($i=0;$i<=$_SESSION["count"];$i++)
            {
                if(isset($_REQUEST['checkbox'][$i]))
                    {
                        $set_id = $_REQUEST['checkbox'][$i];

                        $sql_new=mysql_query(" UPDATE `article` SET  `editor`='SENT'  WHERE `id`='$set_id' ", $connection);
                    echo $i;
                    echo "<br>" .   $article=$_REQUEST['file'][$i];
                    echo "<br>" .   $TOmail=$_REQUEST['editoremail'][$i];
                    echo "<br>" .   $manutitle=$_REQUEST['mastitle'][$i];

                    }   
            }
        }
    ?>
<?php
$row_counter = 0;
while($row = mysql_fetch_assoc($query)){ ?>
    <tr>
        <td align='center'><input type='text' name='title[]' id='title' value= "<? echo $row['title']; ?>" ></td>
        <td align='center'><input type='text' name='fname[]' id='fname' value= "<? echo $row['fname']; ?>" ></td>
        <td align='center'><input type='text' name='lname[]' id='lname' value= "<? echo $row['lname']; ?>" ></td>
        <td align='center'><input type='text' name='mastitle[]' id='mastitle'  value= "<? echo $row['mstitle']; ?>"></td>
        <td align='center'><input type='text' name='file[]' id='file' value="<? echo $row['msfile']; ?> "></td>
        <td align='center'><input type='text' name='editoremail[]' id='editoremail' ></td>
        <td align="center"><inputtype="checkbox" name="checkbox[]" id="checkbox" value="<? echo $row['id'].'_'.$row_counter++; ?>" /></td>
    </tr>                
 <?php } ?>
            $a_set_id = explode('_', $_REQUEST['checkbox'][$i]);
            $set_id   = $a_set_id[0];
            $row_no   = $a_set_id[1];

            $sql_new=mysql_query(" UPDATE `article` SET  `editor`='SENT'  WHERE `id`='$set_id' ", $connection);
            echo $i;
            echo "<br>" .   $article=$_REQUEST['file'][$row_no];
            echo "<br>" .   $TOmail=$_REQUEST['editoremail'][$row_no];
            echo "<br>" .   $manutitle=$_REQUEST['mastitle'][$row_no];