PHP / MySQL - 使用自己的单选按钮列出行,然后使用选定的单选按钮添加所有行

时间:2015-06-04 10:29:24

标签: php html mysql

我绝对不知所措,所以我会尽力解释它。

我想为我正在制作的网络应用制作一个考勤系统(没有公开,只是一个封闭的个人系统)。我想抓住“用户”中的所有数据。表和显示' forename'和姓氏'在桌子上。然后每个人的姓名'将有一个单选按钮组。像这样:



<?php
include "functions.php";
$query = "SELECT * FROM users ORDER by surname ASC";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($result);
?>
<table>
<tr>
<td>Name</td>
<td colspan="5"></td>
</tr>
<form id="form" name="form" method="post" action="process.php">
<?php do { ?>
<tr>
<td><?php echo $row['forename']. ' ' .$row['surname']; ?></td>
<td><input type="radio" name="<?php echo $row['id']; ?>" id="<?php echo $row['id']; ?>_PU" value="PU" >PU</td>
<td><input type="radio" name="<?php echo $row['id']; ?>" id="<?php echo $row['id']; ?>_PC" value="PC">PC</td>
<td><input type="radio" name="<?php echo $row['id']; ?>" id="<?php echo $row['id']; ?>_AA" value="AA">AA</td>
<td><input type="radio" name="<?php echo $row['id']; ?>" id="<?php echo $row['id']; ?>_S" value="S">S</td>
<td><input type="radio" name="<?php echo $row['id']; ?>" id="<?php echo $row['id']; ?>_AWOL" value="AWOL">AWOL</td>
</tr>
<?php } while ($row = mysql_fetch_assoc($result)); ?> 
</form>
</table>
&#13;
&#13;
&#13;

现在,我需要做什么,以便当我按下提交按钮时,它将获取所有这些数据,并将数据添加到名为attendance的表中?我希望桌子看起来像这样

id | user_id | record | date
1  | 1       | PU     | CURRENT_TIMESTAMP

id和日期是自动的。

任何人都可以光明吗?我对此非常陌生,只是在摆弄

非常感谢提前

2 个答案:

答案 0 :(得分:0)

在下面查看编辑 - 我会回答真正的问题,而不是用折旧的功能搞乱你。
以下是您可以使用的非特定功能示例:

(mysql函数被折旧,使用PDO或mysqli更安全)。

<?php

// Fill these infos with correct parameters
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "";

include "functions.php";
$query = "SELECT * FROM users ORDER by surname ASC";

$mysqli = new mysqli($servername, $username, $password, $dbname);

if ($mysqli->connect_error) {
die('Connexion Error (' . $mysqli->connect_errno . ') '
        . $mysqli->connect_error);
}

$result = mysqli->query($query);

删除该行:$row = mysql_fetch_assoc($result);  将while ($row = mysql_fetch_assoc($result));更改为while ($row = $result->fetch_assoc());

如果问题仍然存在 - 可能是查询问题。你能给我们一个:

print "<pre>";
print_r($row);
print "</pre>";

编辑:

情况:你必须通过<form>携带id_student(int)+ tag_student(str)(让他们这样称呼它们)。

这意味着每个单选按钮必须携带2个信息:

  • 相关的id_student
  • 标签

最佳展示是一个阵列:

    [array2insert] => Array
    (
        [0] => Array(
                     [num_student] => 14
                     [tag_student] => PU)
        [1] => Array(
                     [num_student] => 15
                     [tag_student] => PC)
)

我倾向于使用将数组用于单选按钮名称的技巧+格式化所有需要使用此模式存储的数据:(id_student)_(tag_student)。

示例:

[array2insert] => Array
    (
        [0] => 14_PU
        [1] => 15_PC
        [2] => 16_AA
        [3] => 17_AWOL
        [4] => 18_S
    )

最后这里是代码:(我使用int作为number_student使其变得简单 - 只需用结果查询循环替换我的经典循环)

<?php 
if(isset($_POST) && !empty($_POST))
{
    $pattern = '/(\d{1,})_(.*?)$/';

    foreach($_POST['array2insert'] as $row)
    {
        preg_match($pattern, $row, $output);
        echo "num student : " . $output[1] . " tag : " . $output[2] . "<br />"; 
    }    
    print "<pre>";
    print_r($_POST);
    print "</pre>";
}
?>
<html>
<body>
<form action="" method="post">

<?php 
$num_student = 14;
for($i = 0; $i < 5; ++$i)
{ ?>
    <table>
    <tr>
    <td><input type="radio" name="array2insert[<?php echo $i; ?>]" 
              value="<?php echo $num_student;?>_PU">PU</td>
    <td><input type="radio" name="array2insert[<?php echo $i; ?>]" 
              value="<?php echo $num_student;?>_PC">PC</td>
    <td><input type="radio" name="array2insert[<?php echo $i; ?>]" 
              value="<?php echo $num_student;?>_AA">AA</td>
    <td><input type="radio" name="array2insert[<?php echo $i; ?>]" 
              value="<?php echo $num_student;?>_S">S</td>
    <td><input type="radio" name="array2insert[<?php echo $i; ?>]" 
              value="<?php echo $num_student;?>_AWOL">AWOL</td>
    </tr>
    </table>
<?php 
    ++$num_student; 
} ?>
<input type="submit" name="submit" value="Get Selected Values" />
</form>
</body>
</html>

输出示例:

num student : 14 tag : PU
num student : 15 tag : PC
num student : 16 tag : AA
num student : 17 tag : AWOL
num student : 18 tag : S

所有数据都经过$ _POST并由正则表达式提取。希望它有所帮助。

答案 1 :(得分:0)

好吧,首先你可以进行查询以获取表用户的所有结果,然后执行一个循环foreach来打印所有单选按钮,例如

foreach($result as $row){
    <input type="radio" name="<?php echo $row['id']; ?>" id="<?php echo $row['id']; ?>_PU" value="PU" >PU
}

然后在表单按下按钮后,您可以获取所选值,因为它将从输入中返回名称,然后您可以再次查询该特定用户的数据库,并将您想要的值传递给另一个表中的相同的查询或使用结果进行2查询。我的英语不好,但我认为你有意思