質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1015閲覧

PHP 掲示板 編集機能について

mochio_o7

総合スコア17

PHP

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/08/06 07:26

編集2017/08/14 05:55

プログラミング初心者です。
今はphpについて勉強しています。

そして、PHPで簡易掲示板を作成しています。

<入力フォーム>

<form action="" method="post"> 名前<br> <input type="text" name="name"><br> コメント<br> <textarea name = "comment" cols = "30" rows = "5"></textarea><br> <p> <input type="submit" value="投稿"><br> </p> </form>

php

1<?php 2$datafile ='11.txt'; 3if (isset($_POST["name"],$_POST["comment"])) { 4$name = ($_POST['name']); 5$comment = ($_POST['comment']); 6$time = date('Y')."年".date("m月d日 H:i:s"); 7$newdata = (count(file($datafile)) + 1)."<>".$name."<>".$comment."<>".$time. "\n"; 8$fp = fopen($datafile,'a'); 9fwrite($fp, $newdata); 10fclose($fp); 11} 12?>

そこで編集機能をつけたいのですがうまくできません。

したいことは、
・入力フォームに、取得した配列値を入力済み状態で表示させる
・その値をPOSTで送信して編集を行うが、編集かどうかわかるように<input type="hidden">タグを用いて、編集モードかどうかを判別する
・番号の比較をして、イコールの時に配列値を取得するのではなく送信された値と差し替える
・差し替えた配列をテキストに上書き保存する

〈編集番号指定用フォーム〉

<form action="" method="post"> 編集対象番号<br> <input type="text" name="edit"><br> <p> <input type="submit" value="編集"><br> </p> </form>

▽とりあえず自分でやってみましたが、分からなくなりました(:_;)

if (isset($_POST["edit"])) { $edit = $_POST["edit"]; $ediCon = file("kadai11.txt"); for ($k = 0; $k < count($ediCon); $k++) { $ediDate = explode("<>", $ediCon[$k]); if($edit == $ediDate[0]){ $data0 = $ediDate[0]; $data1 = $ediDate[1]; $data2 = $ediDate[2]; $data3 = $ediDate[3]; } } } <form action ="" method="POST"> 名前<br> <input type ="text" name="name" value = "<?php echo $data1;?>"><br> コメント<br> <textarea name = "comment" cols = "30" rows = "5"> <?php echo $data2;?> </textarea><br> <p> <input type = "submit" value = "投稿"> <input type = "hidden" name = "edit" value = $edit> </form> ?>

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/08/06 11:17

textarea@valueなんて属性はない(ということではなくて?)
guest

回答2

0

textareaのデフォルト値の指定には、value属性ではなく

<textarea name="comment" cols=40 rows=4> あいうえお </textarea>

のようにします。

投稿2017/08/06 18:17

tanat

総合スコア18713

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

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

mochio_o7

2017/08/14 05:54 編集

回答ありがとうございます。 ご指摘いただきましたように実行してみたのですが、できませんでした。 以下実行内容です。 <textarea name = "comment" cols = "30" rows = "5"> <?php echo $data2; ?> </textarea> 他にアドバイスありましたらお願いしたいです。(>_<)
motuo

2017/08/14 05:51

横からすいません。 $date1もしくは、$date2はソース上のどこにも設定されていない様ですが… もしかして、$data1(2)のtypoだったりしませんか?
mochio_o7

2017/08/14 05:59

タイプミスしてました!! ご指摘ありがとうございます! タイプミスも直したのですが、実行できませんでした(:_;) 他にありますでしょうか、、
guest

0

ベストアンサー

上記のソースをシンプルにしてテストしてみました。
テキストファイルの内容は2017/8/14<>あああ<>いいい<>うううとしています。

PHP

1<?php 2$edit = '2017/8/14'; 3$ediCon = file('kadai11.text'); 4$ediDate = explode('<>', $ediCon[0]); 5if($edit == $ediDate[0]){ 6 $data0 = $ediDate[0]; 7 $data1 = $ediDate[1]; 8 $data2 = $ediDate[2]; 9 $data3 = $ediDate[3]; 10} 11?> 12<form action ="" method="POST"> 13名前<br> 14<input type ="text" name="name" value = "<?php echo $data1;?>"><br> 15コメント<br> 16<textarea name = "comment" cols = "30" rows = "5"> 17<?php echo $data2;?> 18</textarea><br> 19<p> 20<input type = "submit" value = "投稿"> 21<input type = "hidden" name = "edit" value = $edit> 22</form>

この結果は、問題なく内容が表示出来る様です。

という事で考えらえれることとしては、、、

  1. 正常にファイルから文字列を取得できていない
  2. $edit == $ediDate[0]の判定条件に何らかの誤りがある。
  3. for文の条件に誤りがある(ふつうはforeachかと。敢えてforで書くならfor($k = 0; $k <= count($ediCon) - 1;$k++))

確認してみては如何でしょうか?

投稿2017/08/14 06:14

編集2017/08/14 07:02
motuo

総合スコア3027

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

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

mochio_o7

2017/08/14 07:00

回答ありがとうございます! 確認してみたところ、エラーは出ずに作動しました。 そして、もとあったフォームに入力されるようにしたいのですが、そのようにすると表示されなくなるのですがなぜなのでしょう、、。プログラムに順序って大事ですか?
motuo

2017/08/14 07:06

「もとあったフォームに入力されるようにしたいのですが、そのようにすると表示されなくなるのですが」では、どの様にプログラムを修正されたのか、結果どうなったのか全く分からないのですが… とりあえず、プログラムは基本的に上から実行されていくので順序は非常に大事です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問