【发布时间】:2015-05-26 12:33:00
【问题描述】:
这是页面的样子:
这就是数据库的样子:
现在,我让这一切都与文本字段一起工作。 (当您按下保存时,文本字段会插入到 bogie_nr。
现在,我不想有文本字段而是复选框。
所以,如果我选择前 2 个复选框,然后按保存。我希望数据库通过 axle_nr 1 和 2 插入数字 1。
现在,我希望禁用前 2 个框(因此您不能再次检查它们)。
现在,当您选择第 3 个和第 4 个框时,然后按保存。我希望数据库在第三个和第四个axle_nr 之前插入数字2。
填写完所有内容后,我想要一个将我重定向到新页面的按钮。 我该怎么做?
代码(仅用于复选框):
<tr>
<?php
$show_axle = $database->bogies($_GET['train_id']);
foreach($show_axle as $bogiebox){ ?>
<input type='hidden' name='bogie_id[<?php echo $bogiebox['bogie_id']?>]' value='<?php echo $bogiebox['bogie_id']?>'>
<td>
<input type='checkbox' id="bogie_axle_fields" name='bogie_nr[<?php echo $bogiebox['bogie_id']?>]' placeholder = "enter bogie number">
</td>
<?php
}
?>
</tr>
功能:
function bogies($id){
$sql = "SELECT * FROM bogie WHERE train_id = :id2";
$sth = $this->pdo->prepare($sql);
$sth->bindParam(":id2", $id, PDO::PARAM_STR);
$sth->execute();
return $sth->fetchAll();
}
编辑:
在我的保存按钮后面是一个页面:end_result.php。就在那里我有一个功能:
function update_bogie($id) {
$sql = "UPDATE bogie SET bogie_nr = :bogie_nr WHERE bogie_id = :bogie_id";
$sth = $this->pdo->prepare($sql);
$sth->bindParam(':bogie_id', $id, PDO::PARAM_INT);
$sth->bindParam(":bogie_nr", $_POST['bogie_nr'][$id], PDO::PARAM_STR);
$sth->execute();
}
这会更新转向架表(当我将复选框更改为文本字段时有效)
我现在想要的:
复选框。当我选中前两个框时,然后按保存。我希望在数据库中为轴 1 和 2 插入 2 次数字 1。
之后,我希望禁用前 2 个框。所以你不能再次选择它们。
编辑:
ID 是什么样的:
几乎可以运行的编辑:
好的,现在复选框插入到数据库中。当它们被插入数据库时,它们也被禁用。现在只有几个问题:
- 当我第一次插入它们时。该值 = 1。但在 第二次插入它也是 1。而它应该是 2。
- 我需要刷新页面才能看到选择框 禁用。我希望这立即发生。
- 当我插入新值时。老(残疾人)回到
NULL。但它应该保持旧值。
我现在拥有的代码:
<form method='POST'>
<input type="hidden" value="true" id="y" name="y">
<div id="axle_bogie_border">
<div id="train_adjusted">
<h2>
Train
</h2>
</div>
<table id="distance_margin">
<div id="bogiebox">
<tr>
<?php
$x = 1;
foreach($show_axle as $bogiebox){ ?>
<input type='hidden' name='bogie_id[<?php echo $bogiebox['bogie_id']?>]' value='<?php echo $bogiebox['bogie_id']?>'>
<td>
<?php
if($bogiebox['bogie_nr'] == ''){
?>
<input type='checkbox' id="bogie_axle_fields" value="<?= $x ?>" name='bogie_nr[<?php echo $bogiebox['bogie_id']?>]' placeholder = "enter bogie number"></td>
<?php
}
else{
?>
<input type='checkbox' id="bogie_axle_fields" checked disabled value="<?= $x ?>" name='bogie_nr[<?php echo $bogiebox['bogie_id']?>]' placeholder = "enter bogie number"></td><?php } }
?>
</tr>
</div>
</table>
<input type='submit' id="add_train_button1" value='Save'>
<?php
if(isset($_POST['y'])){
$validbogies = false;
//validate
if(($_POST['bogie_id']) >0){
if($_POST['bogie_id'] >0){
$validbogies = true;
}elseif($_POST['bogie_id'] <= 0){
echo "Error!";
}
else{
echo "Error!." . "<br>";
}
}else{
echo "Error!" . "<br>";
}
//If valid, then insert.
if($validbogies){
foreach($_POST['bogie_id'] as $id) {
$update_axle = $database->update_bogie($id);
}
$x++;
unset($_POST['y']);
echo "Yea! Things have been moved to the database :)";
}
}
?>
</div>
</form>
而且功能还是和旧的一样。
编辑:
这里举个例子:
【问题讨论】:
-
这些复选框总是有 bogie_id 455-458 还是会有所不同?
-
它们各不相同。当我添加一辆新的火车时,有 8 个车轴。他们将是 459-466
-
您知道当前正在查看哪列火车吗?你已经在 php 或 javascript 中保存了你当前正在查看 117 号火车的地方?
-
当我第一次插入我的火车时,我会询问最后插入的 train_id。它也在这个函数中:($_GET['train_id'])。
-
这就是你所有的代码吗?因为你问的东西比你提供的代码要多,到目前为止你尝试了什么?