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

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

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

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

PHP

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

Q&A

解決済

2回答

1036閲覧

PHPでの掲示板作成 投稿内容を縦に表示させたい

youth_k0228

総合スコア18

MySQL

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

PHP

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

0グッド

0クリップ

投稿2019/08/21 14:28

こんにちは。
PHPとMySQLで簡易一行掲示板を作成していますが、投稿内容が下図のように横に表示されてしまいます。
イメージ説明
イメージ説明

投稿した内容を縦に表示させたいのですが、調べても解決出来なかった為、投稿内容を縦に表示させるにはどのようにすれば宜しいでしょうか。
若輩者で恐縮ですが、ご教授いただけたら幸いです。
宜しくお願い致します。

PHP

1<!DOCTYPE HTML> 2<html lang="ja"> 3 <meta charset="UTF-8"> 4 <title>掲示板</title> 5 <style> 6 h1{ 7 text-align: center; 8 } 9 </style> 10<body> 11<?php 12 //データベースに接続 13 $pdo=new PDO("mysql:host=127.0.0.1;dbname=bbs;charset=utf8","root",""); 14 15 //受け取ったidのレコードを削除 16 if(isset($_POST["delete_id"])){ 17 $delete_id=$_POST["delete_id"]; 18 $sql="Delete from bbs where id = :delete_id;"; 19 $stmt=$pdo->prepare($sql); //上記のSQL文を実行させる(「prepare」は文オブジェクトを返す関数) 20 $stmt->bindValue("delete_id",$delete_id,PDO::PARAM_STR); //SQLに渡す変数の値を設定 21 $stmt->execute(); //DBに対してデータの値を挿入する 22 } 23 //受け取ったデータをデータベースに書き込む 24 if(isset($_POST["content"]) && isset($_POST["user_name"])){ 25 $content=$_POST["content"]; 26 $user_name=$_POST["user_name"]; 27 $sql="INSERT INTO bbs(content,user_name,updated_at) VALUES (:content,:user_name,NOW());"; 28 $stmt=$pdo->prepare($sql); //上記のSQL文を実行させる 29 $stmt->bindValue("content",$content,PDO::PARAM_STR); //SQLに渡す変数「$content」の値を設定 30 $stmt->bindValue("user_name",$user_name,PDO::PARAM_STR); //SQLに渡す変数「$user_name」の値を設定 31 $stmt->execute(); //DBに対してデータの値を挿入する 32 }else { 33 $content="なし"; 34 } 35 ?> 36 <h1>掲示板</h1> 37 38 <h2>投稿フォーム</h2> 39 <form action="bbs1.php" method="post"> 40 <label>名前</label> 41 <input type="text" name="user_name"> 42 <label>投稿内容</label> 43 <input type="text" name="content"> 44 <button type="submit">送信</button> 45 </form> 46 47 <h2>発言リスト</h2> 48 <?php 49 $sql="SELECT * FROM bbs ORDER BY updated_at;"; 50 $stmt=$pdo->prepare($sql); 51 $stmt->execute(); 52 ?> 53 <table border="1" width="200%"> 54 <tr> 55 <th>id</th> 56 <th>名前</th> 57 <th>日時</th> 58 <th>投稿内容</th> 59 </tr> 60 <?php 61 while($row=$stmt->fetch(PDO::FETCH_ASSOC)){ ?> 62 <td><?=$row["id"]?></td> 63 <td><?=$row["user_name"]?></td> 64 <td><?=$row["updated_at"]?></td> 65 <td><?=$row["content"]?></td> 66 <td> 67 <form action="bbs1.php" method="post"> 68 <input type="hidden" name="delete_id" value=<?=$row["id"] ?>> 69 <button type="submit">削除</button> 70 </form> 71 </td> 72 <?php } ?> 73 </table> 74</body> 75</html>

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

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

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

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

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

guest

回答2

0

ベストアンサー

すでに出ている回答の通りですが、「なぜそうするか」というところを少し補足したいと思います。
※マークダウン利用したいためコメントではなく回答にしました。

前提としてPHPプログラムの実行結果をブラウザで確認する以上はほとんどのケースでHTMLを出力する必要があります。

ということは、PHPの処理でHTMLを出力する前に、固定でHTMLを書いて、データも仮で入れた状態で想定通りの画面出力ができるかを確かめておく必要があります。
(「モック」と言います)

今回でいえば、一覧表示をテーブルでするわけですから、下記のようにHTMLを組みます。

html

1 <table border="1" width="200%"> 2 <tr> 3 <th>id</th> 4 <th>名前</th> 5 <th>日時</th> 6 <th>投稿内容</th> 7 </tr> 8 <tr> 9 <td>id1</td> 10 <td>名前1</td> 11 <td>日時1</td> 12 <td>投稿内容1</td> 13 </tr> 14 <tr> 15 <td>id2</td> 16 <td>名前2</td> 17 <td>日時2</td> 18 <td>投稿内容2</td> 19 </tr> 20 </table> 21

HTMLができたら、これを利用してPHPの出力部分を組みます。

ブラウザで出力した結果を「ソースを表示」でHTML確認し、モックと同じ構造になっているか確認します。

以上です。

まずはHTMLだけで組みましょう。


この考え方は他でも使えます。
PHPからすると外部の仕組みを利用する場合ですね。

データベースのSQL文生成などでも使えます。
変数を利用したい場合、「その変数部分を適当な値で埋めたSQLを作ってDBに対して直接実行する」とかですね。それで想定通りの情報が取れているか確かめてからPHPに導入します。
検索処理で動的にWhere句を作っているときとかには特に有効です。

想定通りの結果が取れるSQLを作っておき、PHPから作った場合に同じSQL文ができあがっているかを確認して、execute()を投げるわけです。

参考まで。

投稿2019/08/21 15:20

m.ts10806

総合スコア80850

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

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

youth_k0228

2019/08/23 14:59

こんにちは!ご助言ありがとうございます。 初めにHTMLでブラウザ上でどのように表示されるのかをテストすることは、設計する上でもかなり重要ですね…。 この考え方はかなり勉強になりました。 ありがとうございます!
guest

0

行ごとに<tr> </tr>で囲みましょう。

投稿2019/08/21 14:43

kei344

総合スコア69407

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

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

youth_k0228

2019/08/23 14:53

こんにちは。ご助言ありがとうございます! 出力部分を<tr></tr>で囲った所、期待結果を得ることが出来ました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問