2017-08-28 21 views
1

私は、著者によってグループ化された書籍のリストをリストアップし、その結果をラジオボタンに入力して、別の著者に属する本を選択できるようにしようとしています。私は結果を得て、私が望むようにリストを表示することができますが、作者が異なっていてもoneの本のみを選択できるようにする同名のラジオボタンが表示されます。私の現在のコードは次の通りであるMySQLクエリ結果のForeachリスト

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を選択しますが、すべてのラジオボタンを別の名前にします。私は作者のすべてのグループのために同じ名前を持つようにしたい。

+1

あなたは決して '$ i'を使用しないようです。さらに、 '$ i'の値をインクリメントする同じブロック内に設定すると、インクリメントはむしろ無駄になります。何が起きても、' $ i'は常に1になります。しかし、もう一度、それはあなたがそれをとにかく使用しないので何も壊すことはありません。 – ksjohn

答えて

2

投稿者ごとに$i1に戻しています。 の前に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++; 
    } 
} 
+0

どこに置くべきかわからないので、私は '$ i'を置いていませんでした。ところで、私はあなたのソリューションを試しました。それは私が探しているものです。ありがとうございました! – Leon