🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

1228閲覧

phpで特定の文字を置き換え、置き換えた部分だけを表示させたい。

watta_00

総合スコア16

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

1グッド

2クリップ

投稿2019/12/26 18:35

編集2019/12/28 00:47

初心者向けの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(&quot;<input type="text" id="textbox1" name="input01" size="30">1&quot;);<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(&quot;<input type="text" id="textbox2" name="input01" size="30">1&quot;);<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(&quot; 9 <input type="text" id="textbox1" name="input01" size="30">1&quot;);<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>
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pafe.aratani

2019/12/26 20:02

$aに入る値と、実際に出力されたHTMLソースを記載してもらわないと現状どうなっているのかよくわからないです。
m.ts10806

2019/12/26 20:42 編集

Java学習サイトでPHP? ちょっと状況良く分かりません →失礼、理解しました。
退会済みユーザー

退会済みユーザー

2019/12/26 23:38

まあ、sqlインジェクション起こすコード書いてるし、上からクイズアプリ作れと言われたのかな
退会済みユーザー

退会済みユーザー

2019/12/26 23:42

コンパイル及び実行しないといけないから、 phpで書くのは誤ってるな。 同じ結果を返すコードは多種多様ですし。
Orlofsky

2019/12/27 02:49

差し支えない範囲で、どういう条件でどんな文字列をどんな文字列に変換したいのか、質問に追記されては? >mysqlでデータベースから取得した特定の文字(ここではindexという文字列)のところに複数の違うIDとnameを持ったフォームを設置したいのです。
yambejp

2019/12/27 04:25

$result["source2"]の中身がどうなっているか提示してください
watta_00

2019/12/27 04:28

追記させていただきました。 よろしくお願いします。
watta_00

2019/12/27 05:27

orlofskyさん テーブルを作成した時のsqlとデータを「コード」で記述ということでしょうか?
Orlofsky

2019/12/27 05:49

URL にあるMarkdown のコードです。 少しは他の人の質問も読んでみては?
watta_00

2019/12/27 06:54

Orlofskyさん markdownのコードということは理解しています。 Tableを作成した時のsqlと、データベースに格納してある内容を追加すればよろしいのでしょうか。 無知ですみません。
m.ts10806

2019/12/27 08:01

要は他者がコピペで現在のDBを再現できる情報を提示してほしいということになりますね。 具体的にはCREATE文とINSERT文です。
watta_00

2019/12/27 08:08

m.ts10806さん 理解できました。 ありがとうございます。
Orlofsky

2019/12/27 09:40

m.ts10806さん、フォローありがとうございます。 INSERT文は複数行あるとPRIMARY KEYエラーになりませんか? Excel のキャプチャはうざいから削ってください。 で、どういう条件の時にどういうデータをどう変換をしたいのでしょうか?
watta_00

2019/12/28 00:43

Orlofskyさん 条件は、一番先頭のPHPの$count記述あたりから条件になるのですが、indexという文字列を検索し、文字列を見つけたらinputタグをindexと置き換えするというものです。 どのようなHTML文に変化させたいかを追記しますので、よろしくお願いします。
退会済みユーザー

退会済みユーザー

2019/12/28 02:23

ちなみに question: cd を探すプログラムを作成せよ source2 : /*(略)*/"abcdefgh".indexOf("index1")/*(略)*/ はどうしますか?w
watta_00

2019/12/28 03:30

asahina1979さん その場合ですと question: cd を探すプログラムを作成せよ source2 : /*(略)*/"abcdefgh".indexOf("index1")/*(略)*/ index1の部分を空欄に変更したいということです。
guest

回答1

0

自己解決

phpを以下に変更することにより、解決できました。
ご協力頂きましてありがとうございます。

php

1function read_kaitou(){ //問題ページの読み込み&空欄の作成 2 $a=null; 3 $count=0; 4 $word = "space"; 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,'space') !== false){ 16 $a = str_replace('space'.$i.'','<input type="text" id="textbox'.$i.'" name="input0'.$i.'" size="30">', $a); 17 } 18 19 } echo $a; 20}

投稿2019/12/28 07:10

watta_00

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問