###前提・実現したいこと
PHPで入力フォームを作っています。
その中で、<select><option>タグを利用してMySQLにあるデータを取り出したい考えています。
ですが、一つ目の<select><option>タグの中ではデータを一覧で表示することはできたのですが、<select>タグをデータがあるだけ繰り返して複数選択でき、繰り返し表示されるような仕組みを作りたいです。
###発生している問題・エラーメッセージ
<select>タグはデータの数だけ表示されますが、<option>の中身は、一番上の行は<option>の中だけ置き換え文字でループしているのは確認取れたのですが、下の行にいくに従って中のデータが一つずつ増えていくようになっており、全ての<select>文にデータが全て表示されないです。
###該当のソースコード
test.html <form method="post" action="test2.php"> <tr> <td> <select name="name"> <option value="">選択してください</option> <#NAMELINE1#>//置き換え文字 </select> <#NAMELINE2#>//置き換え文字 <input type="submit" value="送信"> </td> </tr>
test.php $link = mysqli_connect(DB_SERVER,DB_ACCOUNT_ID,DB_ACCOUNT_PW,DB_NAME); $line = ""; $line_more = ""; $query = 'select name from meibo_list'; if($result = mysqli_query($link,$query)){ $i=0; while($row = mysqli_fetch_assoc($result)){ $name[$i] = $row['name']; $line .= "<option value=".$name[$i].">".$name[$i]."</option>"; //一行目のこの文はデータが全て入っていて、プルダウンにて表示されます $line_more .= "<select name='name'><option value=''>選択してください</option>".$line."</select>"; //これが二行目以降に繰り返し表示したい項目。 $i++; } mysqli_free_result($result); } mysqli_close($link); $fp = fopen('test.html','r'); while(!feof($fp)){ $line = fgets($fp); $line1 = str_replace('<#NAMELINE1#>',$line,$line1); $line2 = str_replace('<#NAMELINE2#>',$line_more,$line2); $lines = $line2; echo $lines; } fclose($fp); exit(); ?>
###試したこと
$line[$i]としてみたりしましたが、効果なく全ての<select>タブにデータが反映されていません、表現方法に悩んでおります。
ただ、この方法だとデータが膨大になった時に、入力フォームとして利用する時に見づらくなるとも思い、追加のようなボタンを押すと、<select>文が一つ追加されるようなのも調べていると見受けられました。
ただ、Javascriptがまだ自分では勉強中であるため、PHPやCSSで代用できないか模索しております。
初心者で申し訳ないのですが、どなたかご教授いただけると助かります。
###補足情報(言語/FW/ツール等のバージョンなど)
Mac OS