【问题标题】:How do I update database using select form and submit?如何使用选择表单更新数据库并提交?
【发布时间】: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-&gt;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


【解决方案1】:

这就是它的外观。一定要以这种方式更新数据库吗?

【讨论】:

    猜你喜欢
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多