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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

779閲覧

result.phpにて、今まで追加した全てのレコードを表示させる処理を実装したい

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2020/07/26 13:24

https://teratail.com/questions/280448

上記リンクに関する質問です。
resul.phpにて、今まで追加してきたタイトルとコンテントを全て表示させる処理を実装させたいです。
しかし、今のコードの書き方だと追加されたタイトルとコンテンツのみが表示される処理になっています。
全てのレコードを表示させる処理を実装するには、どこをどのように訂正すべきか、ご教授お願いします。

以下、ソースコードになります。

db_connect.php

<?php // DB名を追加 define('DB_DATABASE', 'skill_check3'); // MySQLのユーザー名を追加 define('DB_USERNAME', 'root'); // MySQLのパスワードを追加 define('DB_PASSWORD', 'root'); // DSNを追加 define('PDO_DSN', 'mysql:host=localhost;charset=utf8;dbname='.DB_DATABASE); function db_connect() { try { // PDOインスタンスを作成 $pdo = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD); // エラーの処理方法を設定 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $pdo; } catch(PDOException $e) { echo 'Error: ' . $e->getMessage(); die(); } }

function.php

<?php function check_user_article($param){ session_start(); if(empty($param)){ header("Location: create_article.php"); exit; } } function find_post_by_title($title) { $pdo = db_connect(); try { $sql = "SELECT * FROM article WHERE title = :title order by id DESC"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':title', $title); $stmt->execute(); } catch (PDOException $e) { echo 'Error: ' . $e->getMessage(); die(); } if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { return $row; } } ?>

create_article.php

<!-- PHP領域 --> <?php // db_connect.phpの読み込み処理 require_once('db_connect.php'); // function.phpの読み込み処理 require_once('function.php'); // セッション開始 session_start(); // 記事を追加した場合、下記の処理を実行する if(!empty($_POST)){ // titleとcontentの入力チェック // タイトルとコンテンツが入力されていない場合 if(empty($_POST["title"]) || empty($_POST["content"])){ if(empty($_POST["title"]) && empty($_POST["content"])){ echo "タイトルとコンテンツが未入力です。"; }elseif(empty($_POST["title"])){ echo "タイトルが未入力です。"; }elseif(empty($_POST["content"])){ echo "コンテンツが未入力です。"; } } // HTMLに入力された値に不適切な内容を無視する処理 if(!empty($_POST["title"]) && !empty($_POST["content"])){ // タイトル名のエスケープ処理 $title = htmlspecialchars($_POST["title"], ENT_QUOTES); // 記事内容のエスケープ処理 $content = htmlspecialchars($_POST["content"], ENT_QUOTES); // PDOのインスタンス取得 $pdo_article=db_connect(); try{ // articleテーブルにデータを追加する処理 // SQL文の準備 $sql_article="INSERT INTO article(title, content) VALUES (:title, :content)"; // プリペアドステートメントの準備 $stmt_article=$pdo_article->prepare($sql_article); // タイトルをバインド(固定する) $stmt_article->bindParam(':title', $title); // 内容をバインド(固定する) $stmt_article->bindParam(':content', $content); // 実行 $stmt_article->execute(); // $titleのresult.phpにリダイレクト header("Location: result.php?title=".$title); exit; }catch(PDOException $e){ // エラーメッセージの出力 echo 'Error' .$e->getMessage(); // 終了 die(); } } } ?> <!-- HTML領域 --> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title> <link rel="stylesheet" href=""> </head> <body> <form action="" method="POST" accept-charset="utf-8"> <h1>記事追加</h1><br /> <br /> タイトル:<br /> <input type="text" name="title" style ="width: 200px;height: 50px;" ><br /> コンテンツ:<br /> <input type="text" name="content" style="width: 200px;height: 100px;"><br /> <input type="submit" value="追加" style="font-size: 1.0em; margin-top: 10px;"><br /> </form> </body> </html>

result.php

<?php // db_connect.phpの読み込み処理 require_once('db_connect.php'); // function.phpの読み込み処理 require_once('function.php'); // create_article.phpから渡されるtitleをキャッチ $title=$_GET["title"]; check_user_article($title); // $titleに値があるかを確認 $row=find_post_by_title($title); // articleテーブルからtitleとcontentの値を受け取る処理 // 関数:find_post_by_title($title)から取得したそれぞれの値を格納 $row_title = $row['title']; $row_content = $row['content']; // PDOのインスタンス取得 $pdo=db_connect(); try{ // articleテーブルから表示したいレコードを受け取る処理 // SQL文の準備 $sql_result = "SELECT * FROM article WHERE title = :title AND content = :content"; // プリペアドステートメントの作成 $stmt_result = $pdo->prepare($sql_result); // titleのバインド $stmt_result->bindParam(':title', $row_title); // contentのバインド $stmt_result->bindParam(':content', $row_content); // 実行 $stmt_result->execute(); }catch(PDOException $e){ // エラーメッセージの出力 echo 'Error' .$e->getMessage(); // 終了 die(); } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title> <link rel="stylesheet" href=""> </head> <body> <div> <p>あなたが追加した記事</p> <br /> <p>title : <?php echo $row_title; ?></p> <p>content : <?php echo $row_content; ?></p> <a href="create_article.php" style="float: right;">記事を追加する</a> <br /> </div> <div> <!-- 全てのレコードを表示させる処理を記述したい --> <?php while ($row = $stmt_result->fetch(PDO::FETCH_ASSOC)) { echo '<hr>'; echo $row['id']; echo '<br />'; echo $row['title']; echo '<br />'; echo $row['content']; } ?> </div> </body> </html>

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

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

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

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

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

hentaiman

2020/07/26 13:35

コード中にSQLが書かれている事は理解してますか?理解してるとして、SQLの書き方は分かってますか? SQL自体が分からないという事ならSQLを検索して使い方調べるだけで解決するかと。
guest

回答1

0

ベストアンサー

こちらの問題は自己解決したのでクローズとさせていただきます。
result.phpのプリペアドステートメントの作成で、以下のように修正して実装されました。

【修正前】

$stmt_result = $pdo->prepare($sql_result);

【修正後】

$stmt_result = $pdo->query("SELECT * FROM article ORDER BY id ASC");

投稿2020/07/26 14:18

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問