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

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

ただいまの
回答率

89.10%

アプリ制作で行き詰まってます

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,390

a-_.

score 133

DBを使用した掲示板アプリを作成したいです
具体的には入力欄にタイトルと本文を入力し、「投稿」ボタンを押下することで入力した内容を表示する、といったような掲示板アプリです

アプリ内に必要な条件はテキストボックス、テキストエリア、ボタン(クリックで同じ画面に遷移し、名前・内容に入力された内容とその時の日付時刻をDBに格納する)、前3つの項目の下に投稿内容を表示する(画面表示時、DBから投稿を取得して表示して投稿がなければなにも表示せず、表示順は投稿日付時刻の降順)

言語はPHPとHTMLを使ってJavaScriptは使用しないで作成したいんですが、初心者のためどのようなコードを打てば良いのか全く分かりません

どなたか教えていただけませんか

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<form method="post" action="XXX.php">
名前:<input type="text" name="name"><br>
内容:<input type="text" name="contents">
<input type="submit" value="投稿">
</form>
</body>
</html>
<?php header('content-type: text/html; charset=UTF-8'); ?>
<html>
<body>
<?php
    $f1 = $_POST['XXX'];
    $f1 = htmlspecialchars( $f1, ENT_QUOTES, 'UTF-8');
?>
</body>
</html>

私が知っているのはこのHTMLコードのファイルとPHPコードのファイルを別に作成する方法しか分かりません
コードもこの書き方しか分かりません
ここで知りたいのはHTML・PHPファイルを別々に作るのではなく、一つのファイルでアプリを作成する方法です
またHTMLコードの「内容」と書いた箇所は上記でも説明しましたが、テキストエリアとして入力したいのです

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • tanat

    2016/06/28 12:07

    「私が知っているのはこのHTMLコードのファイルと一緒にPHPコードのファイルを別に作成するという方法しか分かりません」
    というのは、別々に作るのであれば自力で作成できるという事でしょうか?その場合は既にあるコードを追記していただくと良いかと思います。

    キャンセル

  • kei344

    2016/06/28 16:28

    コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。

    キャンセル

  • a-_.

    2016/06/28 17:07 編集

    見にくい質問文ですいません
    改善いたしました

    キャンセル

  • 退会済みユーザー

    2016/06/28 21:04

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 4

+3

すぐにプログラムを書こうとするのではなくて、
まずは質問で書いているようなことを自分なりに整理しましょう。

PHPのことはまだ考えず、画面をHTMLだけで作ってどのような遷移をするのかを決める。
HTMLがスラスラと作れないなら紙に書いてもいいです。

必要な項目は洗い出せてると思うので、それをDBにどのような型で格納するのかを決める。

PHPでは、どのように値が渡されるのか簡単な画面を作って確認する。

自分でわかること、わからないことを認識してひとつずつクリアしていってください。

いきなり一軒家は、作れません。犬小屋からはじめましょう^^

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/28 16:15

    ご回答ありがとうございます

    今回のコードに関して質問文で挙げているコード内容それぞれが何を意味しているのかは何となく見てて理解はできています

    >どのような遷移をするのかを決める
    >DBにどのような型で格納するのかを決める
    >どのように値が渡されるのか簡単な画面を作って確認
    それぞれどのようなことを指定しているのかもう少し詳しく教えていただけますか

    文中の遷移とは<form method="post" action="XXX.php">の箇所を意味しているのでしょうか

    キャンセル

  • 2016/06/28 16:30

    質問追記したんですね^^

    最初の質問があまりに漠然だったので。
    まとめると時間がかかるので、ががーっと書きます。

    >どのような遷移をするのかを決める

    掲示板を作るとして、最初にまずスレッドが表示されると思いますが、
    そこにいきなり入力フォームがあるのか、内容がすべて表示されるのかタイトルだけなのか古いデータはどのように表示されるのかとか、
    画面のイメージが無いとどのように遷移するのか自分でまず頭のなかにできないとですよね?

    >DBにどのような型で格納するのかを決める

    予定している名前と内容は、どの型にいれますか?
    例えば、varchar型なら何文字にするとか、内容の制限は必要がないのか場合によっては、varcharではダメな場合もあります。
    あとは、ユーザー入力が無くても登録日時等も必要ですよね?
    これがないと表示順が決められません。
    削除は、どのように実装するのかされたらどのような扱いにするのか
    数は少なくてもいろいろと考えることがあります。

    >どのように値が渡されるのか簡単な画面を作って確認

    とりあえず、名前と内容だけとして、HTMLで入力フォームを作ってみましょう。
    それをPHPに遷移するようにして、取得して表示できますか?
    見てくれはどうでもいいです。
    まずは、一番シンプルな画面で、やりたいことがどうすれば出来るのか理解しましょう。

    本のサンプルがあるなら、同じようなテキストボックスをもう一つ増やしてみるとか
    簡単なことからはじめます。

    他の方への返事によく何となくわかると書いているようですが、確実に分かるを
    ひとつずつ増やしていきましょう。

    諦めず慌てず取り組むことです。頑張ってください ^^

    キャンセル

  • 2016/06/28 16:32

    書き忘れました

    > 文中の遷移とは<form method="post" action="XXX.php">の箇所を意味しているのでしょうか

    そうです、それ以外にAタグのリンクもありえますね。それもどうするか考えないといけません

    普段あまり使わない言葉ですが、システムを開発するときは画面遷移図というのをよく作ります。

    キャンセル

checkベストアンサー

+2

基本はBJCRobotさんのおっしゃる通り、整理した方が良いと思います。
質問の内容が1つのPHPファイルでとのことでしたので
下記のようにPHPソースとHTMLソースを記載しています。

<?php
$message='';
// ボタンが押されたら
if(filter_input(INPUT_POST,'btn')==='register'):
// ①入力チェック
・・・
// ②DB接続&登録処理
・・・
// ③メッセージ
$message='登録完了しました。';
endif;

// 一覧データ取得を取得して$list_dataに格納(整形済みとする)
$list_data=dbAccess();

// 一覧を取得する関数
function dbAccess(){
// ①DB接続&一覧取得して、<table>とかで加工する
 ・・・・
 return $data;
}
?>
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
</head> 
<body>
<p style="color:#f00;"><?=$message?></p>
<form method="post" action="">
名前:<input type="text" name="name"><br> 
内容:<input type="text" name="contents"> 
<button type="submit" name="btn" value="register">投稿</button>
</form>
<!-- 一覧表示 -->
<?=$list_data?>
</body> 
</html>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/01 13:51

    普通にgoogleとかで「var_dump($_POST)」で調べて出てきませんか??

    var_dump($_POST)の書き方があっているかあっていないかは入力フォームをコーディングして実行すれば一目瞭然です。
    ★プログラムしていて想定通りに動いたことが確認できた時って楽しいと思うので、回答は控えますw

    あと、前回のご質問で入力チェックについてですが、それを決めるのは貴方ですよ。
    例えば
    未入力は登録させない
    名前はカタカナのみ
    など、登録したくないデータを除外するためのチェックのことです。
    var_dumpしてみれば送信したデータと結果がわかるのでそこから導けばよいと思います。

    すべてのコード
    ①入力フォーム
    ②DB登録
    ③リスト表示
    機能を分ければ①だけで今回の質問は解決します。
    ①で出力したデータを②で登録、登録したデータを③で出力。
    ひとつひとつ理解して頑張ってください。 ^^)b

    キャンセル

  • 2016/07/04 14:37 編集

    度々ありがとうございます
    調べていて思ったのでいくつかまたお聞きします

    ①入力フォームについてですが、HTMLで作成したのとは別にPHPで別のコードを入力するのか、HTMLのコードをそのままPHP側へコピペすればいいってことなのでしょうか

    ②教えていただいた2つの「DB接続」は同じコードってことなのでしょうか

    ③先日私が書き込んだ「try{$dbh~」って教えていただいたコードの中で言うと、DB接続・登録処理・一覧取得のどれかに当たるのでしょうか

    キャンセル

  • 2016/07/05 15:36

    返信が遅くなり申し訳ありません。
    すでに同内容をほかの質問で投稿しているようなので、この質問はクローズしてもらってもよいですか?

    キャンセル

+1

追記ありがとうございます。

追記された質問内容を拝見する限り、
PHPを使用したアプリケーション構築について基本的な部分が整理されていないように見受けられます。
(基礎的な部分は理解されているという事ならごめんなさい。
その場合の回答は、「htmlのformのactionを自分自身に指定して、その中で処理を行う」となります)

基礎的な部分からの説明をすると本一冊分には収まらないので、ここで回答をするのは難しいです。

そのため、直接の回答では無くて申し訳ないのですが、
入門用の書籍を一冊購入されて、最初から順に学習されることをお勧めします。
*webサイトでもいいのですが、体系的に記述されているサイトは少ないので、私としては書籍による学習をお勧めします。
一冊終わるころには今の質問についてご自身で解決できるようになると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/28 14:15

    ご回答ありがとうございます

    質問文に書いたコードは入門用の書籍で実際に記述されているものです

    キャンセル

  • 2016/06/28 14:24

    なるほど。
    ではすでに書籍で学習中ということですね。

    であれば、その書籍に記載されているコードの1行1行が何を意味しているのか理解出来るように復習されるのがいいかと思います。

    ここで直接的に必要なのは、
    HTMLのform
    <form method="post" action="XXX.php">
    における
    action="XXX.php"
    が何を意味しているかという部分と
    XXX.php
    の中でデータベース登録処理及び表示の処理を行っている部分を抽出している部分
    です。

    ソースコードの内容を正確に把握していれば、
    これらを取り出して組みなおすことが可能ですが、そうでない場合はかなり困難です。

    まずは理解を深めるという意味で、
    書籍通りの構成でアプリケーションを1から構築出来るように(最終的に書籍を参照しなくても作れるようになる必要があります)なるというのを目標にされるのが近道かと思います。その状態になれば、1ページにまとめるのも出来るようになっていると思います。

    キャンセル

  • 2016/06/28 15:55

    action=は"XXX.php"にフォームデータを送信するという事は何となく見てて理解はできています
    質問文で挙げているコード内容もそれぞれが何を意味しているのかも何となく見てて理解はできています

    本は一通り読んでみたのですが、現在ほぼ独学状態で理解に苦しんでます

    今回の掲示板アプリも質問文で挙げている内容の延長であるのも頭では分かっていますが、HTMLとPHPを一つにする作業とかも、ネットで調べても本に載っていないことばかりで何が今必要な情報なのかも理解できず全く作業が進みません

    ネット上ではあるけれど人に直接何かを教えてもらえる機会がこのサイトしかないのです
    お手数おかけしますがお付き合いいただければ幸いです

    キャンセル

0

プログラム限らず何かを作る時はそうだと思いますが、いきなりコードを書き始めることは、関数の動作を確認するときなどのテストコードとか、よほど簡単なプログラムでないかぎりやりません。
どんな言語で作るかはまずは脇においておいて、実現したいことをイラストでも文章でもいいので紙に書いてイメージを具体化していくことが大切です。
掲示板であれば、それに必要な機能を列挙するとか、その機能を実現するためには何が必要かとか、ユーザーにどのような操作をさせるとか、少しずつ分解しながら具体化していきます。
そうやって具体化していった中から、部分的にコードを起こしてみてテストしてみるとか、画面イメージだけを作ってみて操作を模擬的に行ってみるとかしていく内にだんだんと具体的になっていくはずです。

簡単にできる部分からやり始めて、少しずつ肉付けをしていくという方法もあります。
プロでもいきなり100%完璧なプログラムを作ることは天才でもない限り無理です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 89.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる