选择、插入MySQL和PHP
我创建了一个搜索函数,能够显示行 但我不知道该怎么办: 例如,我搜索了以J开头的名称,并列出了所有以J开头的名称,以及登录时间和尚未注销的名称。也就是说,超时从一开始就被设置为null。它显示如下:选择、插入MySQL和PHP,php,html,mysql,Php,Html,Mysql,我创建了一个搜索函数,能够显示行 但我不知道该怎么办: 例如,我搜索了以J开头的名称,并列出了所有以J开头的名称,以及登录时间和尚未注销的名称。也就是说,超时从一开始就被设置为null。它显示如下: 1 | Johny | 7:58 | (timeOut) 4 | Jess | 8:05 | (timeOut)` 超时是一个输入类型=按钮。我想要的是,每当我单击注销时,例如,我为Johny单击超时,它现在将为超时插入值,而不影响Jess的行 我有以下代码: <?php $result=
1 | Johny | 7:58 | (timeOut)
4 | Jess | 8:05 | (timeOut)`
超时是一个输入类型=按钮。我想要的是,每当我单击注销时,例如,我为Johny单击超时,它现在将为超时插入值,而不影响Jess的行
我有以下代码:
<?php
$result=mysqli_query($con,"SELECT * FROM records WHERE PlateNumber LIKE '%$name%'");
while($row = mysqli_fetch_array($result)) {
if($row['TimeOut'] == null){
echo "<table border='1'>" . "<tr>" ."<td style='width:100px;'>" . $row['Number']. "</td>". "<td style='width:100px;'>" . $row['PlateNumber']. "</td>". "<td style='width:100px;'>" . $row['TimeIn'] . "</td>" ."<td style='width:100px;'>" . "<form>" . "<input type='submit' name='logout' value='Log Out'/>" . "</form>". "</td>" . "</table>" ;
if(isset($_POST['logout'])){
//HELP ME IN THIS PART
}
}
}
?>
我不是很擅长php,所以请接受我的建议。感谢您的帮助。您需要使用update语句,并使用where子句根据用户id将记录范围限定到当前用户,而不是select语句 所以对你来说是这样的:
UPDATE records
SET logouttime=now()
WHERE userid='4'
我认为您的意思是更新而不是插入,您必须提供用户ID来更新特定的行 此外,您不需要生成循环中的每个表单。改为用表单包装表格
if(isset($_POST['logout'])) { // if logout button is submitted
// do not insert but update
$id = $con->real_escape_string($_POST['logout']);
$query = $con->query("UPDATE records SET TimeOut = NOW() WHERE id = '$id'");
}
$name = $con->real_escape_string($name);
$result = mysqli_query($con, "SELECT * FROM records WHERE PlateNumber LIKE '%$name%'");
echo '<form method="POST">';
echo '<table boder="1" cellpadding="10">';
while($row = mysqli_fetch_assoc($result)) {
if(empty($row['TimeOut'])){
$id = $row['id'];
echo
"<tr>" .
"<td style='width:100px;'>" . $row['Number']. "</td>".
"<td style='width:100px;'>" . $row['PlateNumber']. "</td>".
"<td style='width:100px;'>" . $row['TimeIn'] . "</td>" .
"<td style='width:100px;'>" .
"<button type='submit' name='logout' value='$id'>Logout</button>" . "</td>" .
"</tr>";
}
}
echo '</table>';
您需要在输入的“值”部分放入某种类型的记录ID。不仅仅是注销。您需要发布注销jess,或者更好,只发布jess,这样在检索时就不必编辑它以从字符串中删除注销。通常这是通过主键字段完成的。但它也可以在任何独特的领域完成。因此,请尝试value='Jess',而不是value='logout' 然后$\u POST['logout']实际上将包含Jess,您可以从中构建更新sql查询
另一种方法是完全跳过表单,只在Jess旁边的注销上构建一个web链接,其中包含GET参数而不是POST参数。看起来可能更简单。您需要基于注销用户的更新查询?从PlatNumber(如“%$name%”的记录中选择*您应该为TimeOut添加另一个WHERE子句,使其不影响性能。此外,对于名称,您需要准确,因为如果通过代码对所有结果2records进行循环,尽管它只显示一条记录,但它会在TimeOut下更新所有列。我遗漏了一些东西这是评论而不是回答对不起。我在手机上,编辑速度不够快。现在最好避免链接到W3,而改用php.net,这就是为什么抱歉。谢谢你。下次我会记得的。我可以知道$id的用途吗?对不起,我就是不明白out@yun我想这是独一无二的,对吗?如记录id主键自动increment@yun是的,它必须是独一无二的,如果它不是,那将是怪异和不正确的