我绝对不知所措,所以我会尽力解释它。
我想为我正在制作的网络应用制作一个考勤系统(没有公开,只是一个封闭的个人系统)。我想抓住“用户”中的所有数据。表和显示' 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;
现在,我需要做什么,以便当我按下提交按钮时,它将获取所有这些数据,并将数据添加到名为attendance
的表中?我希望桌子看起来像这样
id | user_id | record | date
1 | 1 | PU | CURRENT_TIMESTAMP
id和日期是自动的。
任何人都可以光明吗?我对此非常陌生,只是在摆弄
非常感谢提前
答案 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个信息:
最佳展示是一个阵列:
[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查询。我的英语不好,但我认为你有意思