【发布时间】:2019-07-12 21:51:58
【问题描述】:
我一直在尝试创建一个动态的待办事项模板列表,其中包含预先分配的项目、描述等。这个想法是从不时更改的表中提取模板列表。从那里,用户将从模板任务列表中取消选中他们不需要插入到另一个列表或“表”中的待办事项。
|示例 |
???? TaskName = "做作业" TaskDescription = "在家做功课" AssignedTo = "Greg"
???? TaskName = "锻炼" TaskDescription = "去健身房" AssignedTo = "Greg"
如果上述任务未选中,则将以下行插入“todos”表中,但未选中的行除外。
INSERT INTO todos (todo_name, todo_description,todo_assigned) Values (:taskname,:taskdecription, :taskassigned)
我试过了
<input type="checkbox" value=task[taskname][taskdesc] checked>
我的代码开始。
<?php
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('SELECT * FROM plan_list');
$stmt->execute();$count = $stmt->rowCount();
?>
<form method="post" action="insert_list_tasks.php">
拉取模板列表
<?
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$name= $row['plan_name']
$desc= $row['plan_desc']
$assigned= $row['plan_assigned']
echo "<input type='checkbox'value='task[".$name."][".$desc."][".$assigned."]' name='id[]'checked>".$name."<br>";
}
?>
<button>Add List To My ToDOs</button>
</form>
不确定我是否正确地执行了值数组。这就是我卡住的地方,将任务插入 TODOs 表。
<?php
$stmt_insert = $conn->prepare("INSERT INTO todos
(todo_name, todo_assigned) Values (:plan_name, :plan_assigned)");
$stmt_insert->bindParam(':plan_name', $plan_name);
$stmt_insert->bindParam(':plan_assigned', $plan_assigned);
$stmt_insert->execute();
?>
我希望从同一个复选框输入中获得多个值,但到目前为止我只能获得 1,或者它只是回显“数组”。在这一点上,我觉得自己很愚蠢。
对此的任何帮助将不胜感激。谢谢!
【问题讨论】:
-
您的代码在哪里使用
$_POST['id']?这是一个数组,你需要遍历它。 -
$name、$desc和$assigned都是表中的同一列。这似乎不对。 -
@Barmar 好球!当我将其格式化为堆栈时,我没有看到这一点。刚编辑过。我知道我必须使用 $_POST,但不确定如何进行循环并分配值。我应该使用“While”还是“Foreach”?
-
foreach ($_POST['id'] as $id) -
我建议您不要将所有列都放在复选框值中,而是将行的主键放入。在处理表单时,
todos表应包含指向plan_tasks的外键,而不是重复列。