如何获取在php代码中由sql创建的表中的行中打印的单选按钮的值

问题描述 投票:0回答:1

我在获取表格的每一行的单选按钮的值加上while循环获取的该行的id时遇到了麻烦。这是获得学生出勤率并将其与ids保存的表格。但我无法这样做因为我已经在echo语句中循环粘贴了单选按钮。

如果我在PHP代码中获取值,它只需要取单元格按钮的值,但它不会获取行ID的值。但我同时想要他们两个

这是表格和单选按钮的代码

<?php
    $sql = "Select grno, CONCAT(stdname ,' ', stdlname)AS sname   from student";
    $result = $conn->query($sql);
    if($result->num_rows >0)
    {   
        while($rows = $result->fetch_assoc())
        {
            $id = $rows['grno'];
            $name = $rows['sname'];
            $sch = $rows['grno'];
            $asql = "Select * from attendence where lid = '$id'";
            $aresult = $conn->query($asql);
            $a= 'add';
            $b= 'Present';
            $c= 'Absent';
            $d= 'Leave';
            echo "
                <tr>
                <td><a href = 'view.php?id=".$id."'>".$name."</a></td>
                <td>".$sch."</td>
                    <td><form method='post' >
                    <input type='radio' name='att' value='PRESENT' />".$b."
                    <input type='radio' name='att' value='ABSENT' />".$c." 
                    <input type='radio' name='att' value='LEAVE' />".$d." 
                <input name='submit' type='submit' id='submit' value='Enter' />
                    </form>   </td>";
        }
        if (isset($_POST['submit']))
        {
            $att=$_POST['att'];
            $date = date('Y-m-d', time());
            $ssql = "Select * from attendence where date = '$date' and lid = '$id'";
            $sresult = $conn->query($ssql);
            if($sresult->num_rows > 0)
            {
                echo "<script>alert('Today`s attendence already inserted.');</script>";
            }
            else
            {
                $insql = "Insert into attendence(lid, date, status) values('$id', '$date', '$att')";
                if ($conn->query($insql) === TRUE) {
                    echo "<script>alert('Attendence record Inserted');</script>";
                } else {
                    echo "<script>alert('Error Occurred');</script>";
                }
            }
        }
    }
?>

当我这样写它然后它工作正常但该id的值不会输入数据库。你能告诉我如何将单选按钮的值放在echo语句中,或者当按下提交按钮时如何传递while循环的特定行的值。因为现在如果我在$id提交按钮的代码中打印ISSET的值,那么它获取最后一行的id但我想得到我按下单选按钮的行的id。

或者在第二种方法中,如果我想将单选按钮加id的值发送到下一页,例如

 echo "
                    <tr>
                    <td><a href = 'view.php?id=".$id."'>".$name."</a></td>
                    <td>".$sch."</td>
                        <td><form method='post' >
                        <input type='radio' name='att' value='PRESENT' />".$b."
                        <input type='radio' name='att' value='ABSENT' />".$c." 
                        <input type='radio' name='att' value='LEAVE' />".$d." 
                    <a href = 'view.php?id=".$idd."&amp; att=".$att."'><input name='submit' type='submit' id='submit' value='Enter' /></a>  
                        </form></a>   </td>";

我怎样才能做到这一点

php html
1个回答
0
投票

每行都有自己的表单,可以单独提交。一种可能性是将hidden字段添加到包含该行的id的每一行。在单击提交按钮时调用的PHP脚本中,您可以根据此ID在UPDATEINSERT中输入。

<form method='post' action='YOUR_PHP_SCRIPT'>
  <input type='hidden' name='row_id' value='" . $id . "'/>
  <input type='radio' name='att' value='PRESENT' />" . $b . "
  <input type='radio' name='att' value='ABSENT' />" . $c . " 
  <input type='radio' name='att' value='LEAVE' />" . $d . " 
  <input name='submit' type='submit' id='submit' value='Enter' />
</form>

在PHP脚本中(在本例中称为YOUR_PHP_SCRIPT),您可以检查$_POST['row_id']并使用此值来确定单击Enter按钮的行。我希望我能正确阅读你的代码,因为我认为grno是你唯一的标识符。

if (isset($_POST['submit'])) {
  $id = $_POST['row_id']; // add this line
  // ...
  if($sresult->num_rows > 0) {
    echo "<script>alert('Today`s attendence already inserted.')</script>";
  } else {
    $insql = "Insert into attendence(lid, date, status) values('$id', '$date', '$att')"; // $id is used here
    // ...
  }
}

编辑:您将表单包装成一个<a></a>元素,可以阻止提交您的表单,因为它可以在触发Enter(提交)之前触发。您可能会重新考虑这种结构。

请使用PHP Prepared Statements以避免SQL注入。

© www.soinside.com 2019 - 2024. All rights reserved.