我想要的是章节名称" asd"你也可以选择" Home"
,以及其他可能存在的选项,但由于某些原因,它不起作用。<table class="table">
<tr>
<td style="width: 60%;">Section name</td>
<td>Edit section</td>
<td>Category</td>
<td>Order</td>
</tr>
<form method="post">
<?php
$query = $handler->query('SELECT * FROM section ORDER BY sorder');
$cquery = $handler->query('SELECT * FROM category');
if($query->rowCount()){
while($fetch = $query->fetch(PDO::FETCH_ASSOC)){
echo'
<tr>
<td><strong>' . $fetch['secname'] . '</strong><br />' . $fetch['secdesc'] . '</td>
<td><a class="btn btn-warning" href="index.php?p=edit&id=' . $fetch['sc_id'] . '"><i class="fa fa-times fa-fw"></i> Edit</a>
<a class="btn btn-danger" href="index.php?p=del&id=' . $fetch['sc_id'] . '"><i class="fa fa-times fa-fw"></i> Delete</a></td>
<td><select name="' . $fetch['c_id'] . '" class="form-control" size="1">
';
while($cfetch = $cquery->fetch(PDO::FETCH_ASSOC)){
echo'<option value="' . $cfetch['c_id'] . '" ' . (($cfetch['c_id'] == $fetch['c_id'])? 'selected' : '') . '>' . $cfetch['categoryname'] . '</option>';
}
echo'
</select></td>
<td><input type="number" class="form-control" name="' . $fetch['sc_id'] . '" value="' . $fetch['sorder'] . '" style="width: 60px;" /></td>
</tr>
';
}
}
else{
echo '<tr><td colspan="4">' . $noResultsDisplay . '</td></tr>';
}
?>
<tr><td colspan="4"><input type="submit" name="section" class="btn btn-primary pull-right" value="Submit" /></td></tr>
</form>
</table>
随之而来的SQL:
CREATE TABLE IF NOT EXISTS category(
`c_id` int(10) NOT NULL auto_increment,
`categoryname` varchar(250) NOT NULL,
`corder` int(10) NOT NULL,
PRIMARY KEY `c_id` (`c_id`),
UNIQUE KEY (`categoryname`)
)Engine=InnoDB;
INSERT INTO category (`categoryname`, `corder`) VALUES ('Home', 1);
CREATE TABLE IF NOT EXISTS section(
`sc_id` int(10) NOT NULL auto_increment,
`c_id` int(10) NOT NULL,
`secname` varchar(250) NOT NULL,
`secdesc` varchar(500),
`secimage` varchar(500),
`sorder` int(10) NOT NULL,
PRIMARY KEY `sc_id` (`sc_id`),
UNIQUE KEY (`secname`)
)Engine=InnoDB;
我正在使用PDO,$ handler是我的连接点。
我可以看到我在正确的轨道上,但由于某种原因,第二个循环只循环一次,即使它应该循环多次。
发送表单后,我想在数据库中设置类别,这是我当前的代码:
if(isset($_POST['section'])){
$fetch = $query->fetch(PDO::FETCH_ASSOC);
$category = $_POST['category'];
foreach($_POST as $data => $value){
if($data != 'section'){
$sorder = (int)$value;
if($sorder != $fetch['c_id']){
echo"UPDATE section SET sorder = :sorder, c_id = :cid WHERE sc_id = :id', [':sorder' => $sorder, ':id' => $data, ':cid' => $category]";
//echo perry('UPDATE section SET sorder = :sorder, c_id = :cid WHERE sc_id = :id', [':sorder' => $sorder, ':id' => $data, ':cid' => $category], null);
}
}
}
}
但出于某种原因,我无法获得选择菜单的选项以便发送到数据库。
答案 0 :(得分:1)
无需运行嵌套的第二个循环(它总是产生相同的输出)。我首先得到一个字符串输出:
while($cfetch = $cquery->fetch(PDO::FETCH_ASSOC)){
$option .= '<option value="' . $cfetch['c_id'] . '" ' . (($cfetch['c_id'] == $fetch['c_id'])? 'selected' : '') . '>' . $cfetch['categoryname'] . '</option>';
}
然后在循环中回显它:
while($fetch = $query->fetch(PDO::FETCH_ASSOC)){
echo'
<tr>
<td><strong>' . $fetch['secname'] . '</strong><br />' . $fetch['secdesc'] . '</td>
<td><a class="btn btn-warning" href="index.php?p=edit&id=' . $fetch['sc_id'] . '"><i class="fa fa-times fa-fw"></i> Edit</a>
<a class="btn btn-danger" href="index.php?p=del&id=' . $fetch['sc_id'] . '"><i class="fa fa-times fa-fw"></i> Delete</a></td>
<td><select name="' . $fetch['c_id'] . '" class="form-control" size="1">
';
echo $option;
echo'
</select></td>
<td><input type="number" class="form-control" name="' . $fetch['sc_id'] . '" value="' . $fetch['sorder'] . '" style="width: 60px;" /></td>
</tr>
';
}