初心者向けのjava学習サイトを作成しているのですが、mysqlでデータベースから取得した特定の文字(ここではindexという文字列)のところに複数の違うIDとnameを持ったフォームを設置したいのです。
理想的には、indexという文字列のみを置き換えしたいのですが、置き換えの関数であるstr_replaceなどを使用しても、取得したデータベースの中身を全て繰り返し処理した分だけ表示されてしまいます。
何か良い方法はありますでしょうか。
php
1function read_kaitou(){ //問題ページの読み込み&空欄の作成 2 $a=null; 3 $count=0; 4 $word = "index"; 5 $id =$_GET['id']; 6 $hoge=db(); 7 $sql="SELECT * FROM mondai WHERE id=$id"; 8 $stmt= $hoge->prepare($sql); 9 $stmt->execute(); 10 $result = $stmt->fetch(PDO::FETCH_ASSOC); 11 $a= nl2br(htmlspecialchars($result["source2"])); 12 $count= substr_count( $a, $word ); 13 for($i=1;$i<=$count;$i++){ 14 15 if(strpos($a,'index') !== false){ 16 $replace = str_replace('index','<input type="text" id="textbox'.$i.'" name="input0'.$i.'" size="30">', $a); 17 echo $replace; 18 echo $count; 19 } 20 21 } 22}
html
1 <div class="card"> 2 <div class="card-header bg-primary">解答</div> 3 <div class="card-body"> 4 <!--解答の読み込み--> 5 <div style="display:inline-flex"><form id="result" method="POST" action="insert_clear.php?id='<?php echo $id ?>'" autocomplete="off"> 6 <?php read_kaitou(); ?> 7 </form></div>
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー追記
サイトについて・・・
PHPとmysqlを使用し、answer(答え)というテーブルに格納されている文字列と今回用意するフォームの中身を照合し、合致すれば赤い背景のフォームが緑に変わるというコンパイルと実行は必要ないタイプのサイトです。
下記のphpはindexという文字(自分で設定した文字列)を検索し、indexという文字列を見つけたら空欄(inputタグ)を作成するというものです。
空欄が1つであれば、実装することができたのですが、複数というところで苦戦しております。
データベースについてはこちらです。
CREATE
1CREATE TABLE `test_01`.`mondai1` ( `id` INT NOT NULL AUTO_INCREMENT , `top` TEXT NOT NULL , `source1` TEXT NOT NULL , `question` TEXT NOT NULL , `source2` TEXT NOT NULL , `answer` TEXT NOT NULL , `category` TEXT NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;
INSERT
1INSERT INTO `mondai` (`id`, `top`, `source1`, `question`, `source2`, `answer`, `category`) VALUES (NULL, '1.1「Hello World!」の表示 ', 'Hello World!', 'Hello Worldと表示されるプログラムを作成してください。', 'public class HelloWorld{\r\n public static void main(String[] args){\r\n System.out.println(\"index1\");\r\n index2\r\n }\r\n}', 'Hello World!', '1.1');
処理を行っている部分のHTMLはこのようになっています。
HTML
1<div class="card"> 2 <div class="card-header bg-primary">解答</div> 3 <div class="card-body"> 4 <!--解答の読み込み--> 5 <div style="display:inline-flex"><form id="result" method="POST" action="insert_clear.php?id='2'" autocomplete="off"> 6 public class HelloWorld{<br /> 7 public static void main(String[] args){<br /> 8 System.out.println("<input type="text" id="textbox1" name="input01" size="30">1");<br /> 9 <input type="text" id="textbox1" name="input01" size="30">2<br /> 10 }<br /> 11}<br /> 122public class HelloWorld{<br /> 13 public static void main(String[] args){<br /> 14 System.out.println("<input type="text" id="textbox2" name="input01" size="30">1");<br /> 15 <input type="text" id="textbox2" name="input01" size="30">2<br /> 16 }<br /> 17}<br /> 182 </form></div> 19 <div class="text-right"> 20 <button id="button1" type="button" class="btn-warning btn-lg" onclick="check();">チェック</button> 21 <button id="button2" type="submit" class="btn-secondary btn-lg" disabled form="result">送信</button> 22 </div> 23 </div> 24 </div> 25 </div>
-----------------------------------------追記2
どのように変化させたいかというと、上のHTML文が現状ですが、下のHTML文のように処理されるのが理想です。
HTML
1<div class="card"> 2 <div class="card-header bg-primary">解答</div> 3 <div class="card-body"> 4 <!--解答の読み込み--> 5 <div style="display:inline-flex"><form id="result" method="POST" action="insert_clear.php?id='2'" autocomplete="off"> 6 public class HelloWorld{<br /> 7 public static void main(String[] args){<br /> 8 System.out.println(" 9 <input type="text" id="textbox1" name="input01" size="30">1");<br /> 10 <input type="text" id="textbox2" name="input02" size="30">2<br /> 11 }<br /> 12}<br /> 13 </form></div> 14 <div class="text-right"> 15 <button id="button1" type="button" class="btn-warning btn-lg" onclick="check();">チェック</button> 16 <button id="button2" type="submit" class="btn-secondary btn-lg" disabled form="result">送信</button> 17 </div> 18 </div> 19 </div> 20 </div>
回答1件
あなたの回答
tips
プレビュー