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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

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

Q&A

0回答

1263閲覧

PHP掲示板のコメントに編集をしたいです

退会済みユーザー

退会済みユーザー

総合スコア0

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

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

0グッド

0クリップ

投稿2020/06/01 17:54

前提・実現したいこと

初心者です。
PHPで掲示板を作成しています。index.phpに投稿されたコメントをedit.phpで編集をし、編集したものを再度index.phpに表示したいのですがうまくいきません。
様々なサイトを見て書いたのでかなり汚いソースコードになっていると思いますが、詳しい方よろしくお願いします。

index.php

<?php date_default_timezone_set('Asia/Tokyo'); $timestamp=time(); $time=""; $title= ""; $name = ""; $comment = ""; if (isset($_POST['send']) === true) { $time=$_POST["date"]; $title = $_POST["title"]; $name = $_POST["name"]; $comment = $_POST["comment"]; $fp = fopen("index.txt", "a"); fwrite($fp,date("Y/m/d",$timestamp)." \t". $title . "\t" . $name . "\t". $comment ."\n"); fclose($fp); } $fp = fopen("index.txt", "r"); $bord_array = []; while ($line = fgets($fp)) { $temp = explode("\t", $line); $temp_array = [ "date" => $temp[0], "title" => $temp[1], "name"=> $temp[2], "comment" => $temp[3] ]; $bord_array[] = $temp_array; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>掲示板</title> </head> <h2>掲示板</h2> <body> <form action="" method="post"> <div> <label for="title">タイトル</label> <input type="text" id="title" name="title"> </div> <div> <label for="name">名前</label> <input type="text" id="name" name="name"> </div> <div> <label for="comment">コメント</label> <input type="text" id="comment" name="comment"> </div> <input type="submit" name="send" value="投稿"> </form> <h2>表示欄</h2> <ul> <?php foreach ($bord_array as $data): ?> <article> <div> <?= $data["date"] . " " . $data["title"] . "</br>" . $data["name"]. ":" . $data["comment"]; ?> <p><a href="edit.php">編集</a> <a href="delete.php">削除</a></p> </div> </article> <?php endforeach; ?> </ul> </body> </html>

edit.php

<?php // データベースの接続情報 define( 'DB_HOST', 'localhost'); define( 'DB_USER', 'root'); define( 'DB_PASS', 'password'); define( 'DB_NAME', 'board'); // タイムゾーン設定 date_default_timezone_set('Asia/Tokyo'); // 変数の初期化 $message_id = null; $mysqli = null; $sql = null; $res = null; $error_message = array(); $message_data = array(); session_start(); if( !empty($_GET['message_id'])) { $message_id = (int)htmlspecialchars($_GET['message_id'], ENT_QUOTES); // データベースに接続 $mysqli = new mysqli( DB_HOST, DB_USER, DB_PASS, DB_NAME); // データの読み込み $sql = "SELECT * FROM message WHERE id = $message_id"; $res = $mysqli->query($sql); if( $res ) { $message_data = $res->fetch_assoc(); } else { // データが読み込めなかったら一覧に戻る header("Location: ./admin.php"); } $mysqli->close(); } ?> <!DOCTYPE html><html lang="ja"> <head> <meta charset="UTF-8"> <title>投稿の編集</title> </head> <h2>投稿の編集</h2> <body> <form action="" method="post"> <div> <label for="title">タイトル</label> <input type="text" id="title" name="title">   <?php if( !empty($message_data['title']) ){ echo $message_data['title']; } ?> </div> <div> <label for="name">名前</label> <input type="text" id="name" name="name"> <?php if( !empty($message_data['name']) ){ echo $message_data['name']; } ?> </div> <div> <label for="comment">コメント</label> <input type="text" id="comment" name="comment"> <?php if( !empty($message_data['comment']) ){ echo $message_data['comment']; } ?> </div> <a class="btn_cancel" href="index.php">キャンセル</a> <input type="submit" name="send" value="編集"> </form> </body> </html>

補足情報(FW/ツールのバージョンなど)

XAMPPです。

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

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

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

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

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

m.ts10806

2020/06/01 20:38

「うまくいきません」では何も伝わりません。 どういう問題が起きていて、それがどうなれば解決なのか、具体的に記載してください。 「とりあえず全部見て動かしてみて変なところあったら教えて」では回答者の負担が大きすぎますし(手をつける人は稀有です)、作りたいアプリケーションの仕様を握っているのは質問者なので、「どうなるのが正解か」は確実に伝えてください。
mari.rinn

2020/06/01 21:17 編集

素朴な疑問なのですが、編集の所ではデータベースを使われているのに、なぜ最初の書き込みはテキストファイルにされているのですか?最初からデータベースに書き込んでそれを表示→編集→表示する方が簡単だし、間違いも少ないと思うのですが。 それと編集の方でいきなりselectが出てきてますが、データベースに書き込みする部分のコードはここに載せてないだけで、ご自身のファイルの中にはありますか?あるならそれも載せて頂けますか?
m.ts10806

2020/06/02 03:30

とりあえず、自身が理解してないところを除いたらどんなコードになりますか?そこからスタートだと思います。 正直なところ、質問と回答と言う形式で解決する段階ではないです。 ほぼ丸々書き直しです。
m.ts10806

2020/06/02 03:33

設計 した方が良いです。メモ書きレベルでも良くて どういうレイアウトでどういう情報があってどういう時に(何をしたときに)どういう情報が渡されて、何が保存されて、どう表示されるか 後、データはどう持つかとか そういう感じで。何も整理されてないまま「考えながら書く」はやってはいけません。 下記の質問についたアドバイスを参考にしてみてください。 https://teratail.com/questions/266189
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問