我正在尝试列出按作者分组的书籍列表,并将结果填充到单选按钮中,以便用户可以选择属于不同作者的书籍。我设法获得结果并显示列表,就像我想要的那样,但是具有相同名称的单选按钮使用户只能选择one
本书,即使作者不同。
我的数据库表数据看起来像这样:
id author books
1 Author A Book1
2 Author A Book2
3 Author B Book3
我目前的编码如下:
$sql = "SELECT author, GROUP_CONCAT(books SEPARATOR ',') as books FROM library GROUP BY author";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$books = explode(',',$row['books']);
$i = 1;
echo '<ul class="list-unstyled subjects">';
echo '<li class="bordered" style="width: 30%;">'.$row['author'].'</li>';
echo '<li class="bordered">';
echo '<ul><li><input name="books" type="radio" value="" checked>N/A</li></ul>';
foreach ($books as $book) {
echo '<ul>';
echo '<li><input name="books" type="radio" value="'.$book.'" />'.$book.'</li>';
echo '</ul>';
}
echo '</li>';
echo '</ul>';
$i++;
}
}
$sql = NULL;
所以我试图使用变量$i
在单选按钮名称的每一端添加编号,但它会使所有单选按钮具有不同的名称。我希望每个作者群都有相同的名称。
答案 0 :(得分:2)
您为每位作者设置$i
回1
。您需要在 while
循环之前初始化它。
if ($result->num_rows > 0) {
$i = 1;
while($row = $result->fetch_assoc()) {
$books = explode(',',$row['books']);
echo '<ul class="list-unstyled subjects">';
echo '<li class="bordered" style="width: 30%;">'.$row['author'].'</li>';
echo '<li class="bordered">';
echo '<ul><li><input name="books$i" type="radio" value="" checked>N/A</li></ul>';
foreach ($books as $book) {
echo '<ul>';
echo '<li><input name="books$i" type="radio" value="'.$book.'" />'.$book.'</li>';
echo '</ul>';
}
echo '</li>';
echo '</ul>';
$i++;
}
}