【发布时间】:2016-03-20 15:27:02
【问题描述】:
我的 db-table aktivitet 有一个名为 status 的列。该功能是当事件完成时,您应该借助选择表单和提交按钮将状态从Ej Klar(Not Done) 切换到Klar(Done)。
我已经连续两天坐在这里了,我尝试了很多不同的方法,但我就是无法让它发挥作用。请帮我解决这个问题?
这是代码
<?php
$pdo = new PDO('mysql:dbname=orion_db2;host=localhost', 'root', '');
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
echo "<table class='table' border='2'>";
echo "<th style='background-color:#334d4d;'><h1>Tid</h1></th>";
echo "<th style='background-color:#334d4d;'><h1>Uppgift</h1></th>";
echo "<th style='background-color:#334d4d;'><h1>Status</h1></th>";
foreach($pdo->query( 'SELECT * FROM aktivitet;' ) as $row){
$status = $row['status'];
if($status == 'Ej Klar'){
$status = 'Ej Klar';
}
elseif($status == 'Klar'){
$status = 'Klar';
}
echo "<tr>";
echo "<td><h2>".$row['tid']."</h2></td>";
echo "<td><h2>".$row['uppgift']."</h2></td>";
echo "<td><h3><form method='POST' action='index.php' name='stat'><select id='status' name='status' size='1' required><option value='Ej Klar' <?php if($status == 'Ej Klar') echo 'selected'; ?>Ej Klar</option><option value='Klar' <?php if($status == 'Klar') echo 'selected'; ?>Klar</option></optgroup><input type='submit' value='Ändra' /></select></form></h3></td>";
echo "</tr>";
}
echo "</table>";
if(isset($_POST['submit'])) {
$status2 = $_POST['status'];
$sql = "UPDATE members SET status=:status WHERE status=:status";
$stmt = $db->prepare($sql);
$stmt->bindValue(":status", $status2, PDO::PARAM_STR);
$stmt->execute();
}
?>
【问题讨论】:
-
运行此程序时的行为/结果是什么?
-
这里的分号
foreach($pdo->query( 'SELECT * FROM aktivitet;' ) as $row)正在那里停止执行。 -
这个
if(isset($_POST['submit'])) {...}永远不会启动。在这里,请亲自查看php.net/manual/en/function.error-reporting.php - 另外,if($status == 'Ej Klar')区分大小写。 -
表格按原样显示,我可以使用选择表单在“未完成”和“完成”状态之间切换,但它不会在数据库中存储任何更改
标签: php database select sql-update form-submit