[英]How can I display all the results of a row in a loop within a loop?
我想要的是,使用節名稱“ 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);
}
}
}
}
但是由於某種原因,我無法獲得選擇菜單的選項以發送到數據庫。
無需運行嵌套的第二個循環(它總是產生相同的輸出)。 我將首先以字符串形式獲取此輸出:
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>
';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.