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

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

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

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

Q&A

解決済

2回答

1564閲覧

プログラムコードの意味が分かりません!?

international

総合スコア16

PHP

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

1グッド

0クリップ

投稿2022/12/20 22:01

以下のプログラムコードの意味が分かりません!?
教えていたでけないでしょうか?
よろしくお願いいたします。
$members = $db->prepare('SELECT * FROM members WHERE id=?');
$members->execute(array($_SESSION['id']));
$member = $members->fetch();

以下が全体のプログラムです。

<?php session_start(); require('dbconnect.php'); if (isset($_SESSION['id']) && $_SESSION['time'] + 3600 > time()) {//訪問時間が3600秒でタイムアウト // ログインしている $_SESSION['time'] = time();//1時間放置されていたら自動的にログアウトにする $members = $db->prepare('SELECT * FROM members WHERE id=?'); $members->execute(array($_SESSION['id'])); $member = $members->fetch(); } else { // ログインしていない header('Location: login.php'); exit(); } // 投稿を記録する if (!empty($_POST)) { if ($_POST['message'] != '') { $message = $db->prepare('INSERT INTO posts SET member_id=?, message=?, reply_post_id=?, created=NOW()'); $message->execute(array( $member['id'], $_POST['message'], $_POST['reply_post_id'] )); header('Location: index.php'); exit(); } } // 投稿を取得する $page = $_REQUEST['page']; if ($page == '') { $page = 1; } $page = max($page, 1); // 最終ページを取得する $counts = $db->query('SELECT COUNT(*) AS cnt FROM posts'); $cnt = $counts->fetch(); $maxPage = ceil($cnt['cnt'] / 5); $page = min($page, $maxPage); $start = ($page - 1) * 5; $start = max(0, $start); $posts = $db->prepare('SELECT m.name, m.picture, p.* FROM members m, posts p WHERE m.id=p.member_id ORDER BY p.created DESC LIMIT ?, 5'); $posts->bindParam(1, $start, PDO::PARAM_INT); $posts->execute(); // 返信の場合 if (isset($_REQUEST['res'])) { $response = $db->prepare('SELECT m.name, m.picture, p.* FROM members m, posts p WHERE m.id=p.member_id AND p.id=? ORDER BY p.created DESC'); $response->execute(array($_REQUEST['res'])); $table = $response->fetch(); $message = '@' . $table['name'] . ' ' . $table['message']; } // htmlspecialcharsのショートカット function h($value) { return htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); } // 本文内のURLにリンクを設定します function makeLink($value) { return mb_ereg_replace("(https?)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)", '<a href="\1\2">\1\2</a>' , $value); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>ひとこと掲示板</title> <link rel="stylesheet" href="style.css" /> </head> <body> <div id="wrap"> <div id="head"> <h1>ひとこと掲示板</h1> </div> <div id="content"> <div style="text-align: right"><a href="logout.php">ログアウト</a></div> <form action="" method="post"> <dl> <dt><?php echo h($member['name']); ?>さん、メッセージをどうぞ</dt> <dd> <textarea name="message" cols="50" rows="5"><?php echo h($message); ?></textarea> <input type="hidden" name="reply_post_id" value="<?php echo h($_REQUEST['res']); ?>" /> </dd> </dl> <div> <p> <input type="submit" value="投稿する" /> </p> </div> </form> <?php foreach ($posts as $post): ?> <div class="msg"> <img src="join/member_picture/<?php echo h($post['picture']); ?>" width="48" height="48" alt="<?php echo h($post['name']); ?>" /> <p><?php echo makeLink(h($post['message'])); ?><span class="name">(<?php echo h($post['name']); ?>)</span>[<a href="index.php?res=<?php echo h($post['id']); ?>">Re</a>]</p> <p class="day"><a href="view.php?id=<?php echo h($post['id']); ?>"><?php echo h($post['created']); ?></a> <?php if ($post['reply_post_id'] > 0): ?> <a href="view.php?id=<?php echo h($post['reply_post_id']); ?>"> 返信元のメッセージ</a> <?php endif; ?> <?php if ($_SESSION['id'] == $post['member_id']): ?> [<a href="delete.php?id=<?php echo h($post['id']); ?>" style="color: #F33;">削除</a>] <?php endif; ?> </p> </div> <?php endforeach; ?> <ul class="paging"> <?php if ($page > 1) { ?> <li><a href="index.php?page=<?php print($page - 1); ?>">前のページへ</a></li> <?php } else { ?> <li>前のページへ</li> <?php } ?> <?php if ($page < $maxPage) { ?> <li><a href="index.php?page=<?php print($page + 1); ?>">次のページへ</a></li> <?php } else { ?> <li>次のページへ</li> <?php } ?> </ul> </div> </div> </body> </html>

参考URL
http://afurieitohannei.la.coocan.jp/sns/File.htm

international👍を押しています

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

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

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

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

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

maisumakun

2022/12/20 23:03

このコードについて、何を理解していて、知りたいことは何なのか、具体的に書いていただけないでしょうか?
international

2022/12/21 21:49 編集

ありがとうございました。 なんとなくわかりました。 手っ取り早い解決方法として 問題のプログラムのみを消して 消す前との比較した場合の違いで、消したプログラムが 役割が分かりと思います。 今回は消して試しましたが 掲示板会員登録後 投稿ができませんでしたので その関連だと思われます。 今後ともよろしくお願いいたします。
m.ts10806

2022/12/21 22:31

>なんとなくわかりました。 なんとなくではプログラムはまともに動きません。 >手っ取り早い解決方法として 悪手です。時間だけかかって大して収穫がないやり方の代表例です。
guest

回答2

0

ベストアンサー

投稿2022/12/20 22:25

m.ts10806

総合スコア80850

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

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

m.ts10806

2022/12/21 09:26 編集

一通りの機能の解説が最も正しくされている公式のPHPマニュアルがスパムて。
international

2022/12/21 20:04

詳しく誤解と下さいましてありがとうございました。 ご紹介していただきました、内容を一通り調べました。 なんとなくわかりました。 この画面は 掲示板の会員登録後 会員が 投稿したり、削除したりするプログラムです。 なので 以上の  $members = $db->prepare('SELECT * FROM members WHERE id=?'); $members->execute(array($_SESSION['id'])); $member = $members->fetch(); のみ削除して試しました。  書き込み画面に書き込みましたが その投稿ができなかったので データベースにアクセスできていないことになります。  なので データベースへアクセスする手続きだと思われます。
international

2022/12/21 20:05

助かります。 今後ともよろしくお願いいたします。
international

2022/12/21 21:55

どうもすみません。 後で気づいたのですが 以下のご回答に対しての「ベストアンサー」でした。 $members = $db->prepare('SELECT * FROM members WHERE id=?'); PODの$dbインスタンスを利用してプレースホルダーでmembersテーブルからidを指定したレコードを抽出する宣言をする $members->execute(array($_SESSION['id'])); prepareにセッションに保持したidデータを渡しクエリーの実行 $member = $members->fetch(); 実行結果から先頭のレコードを取得する。ただし特にASSOCで処理していないためカラム名もしくはレコードの列番号で参照できる状態
m.ts10806

2022/12/21 22:37 編集

意図があまり伝わってないようですけど、 「PHPマニュアルをきちんと確認できるようになれば質問しなくても解決できる問題」です。 ゆえに、あなたの投稿は全て丸投げです。答え”だけ”求めていて、基本を全て飛ばしてるからいつまでも身につかない。同じ指摘をし続ける。あまつさえ、サービスの規約すら破る。 それに関連機能まで追っていたら数日程度では済む話ではないと思うのですが・・・ 結局書いた通りにしか動かないので、仕様を毎回おさえるしかありません。 あと、他の投稿への指摘事項が全然対応された感がありません。 もう少し「一般的な感性」を磨かれたほうがコミュニケーションも円滑にいくのではないでしょうか。プログラミングの前に必要な「基礎」です。
popori

2022/12/22 05:00

まいど自己正当化乙 これが回答とか失笑 大衆の評価が全て
m.ts10806

2022/12/22 05:39

何が気に入らないか分からないのですけど、 頑張って私をこきおろしたとして、どのようなメリットがあるのでしょうか。 少なくとも問題の解決にはつながっていないと思いますし、第三者から見ても「荒らし」としか見えません。 >大衆の評価が全て となると、一応、それなりのユーザから「グッド」をいただいている現状から 正当性も担保されることになりますが、如何ですか? あがってない揚げ足を取る行為に執着しているように見えます。 >これが回答とか失笑 他人の回答や補足が気に入らないならご自身で回答をすればよいだけでは? 少なくともあなたがやっていることは、私以上に誰の役にも立たない無駄行為に見えます。
guest

0

$members = $db->prepare('SELECT * FROM members WHERE id=?');

PODの$dbインスタンスを利用してプレースホルダーでmembersテーブルからidを指定したレコードを抽出する宣言をする

$members->execute(array($_SESSION['id']));

prepareにセッションに保持したidデータを渡しクエリーの実行

$member = $members->fetch();

実行結果から先頭のレコードを取得する。ただし特にASSOCで処理していないためカラム名もしくはレコードの列番号で参照できる状態

投稿2022/12/21 00:19

yambejp

総合スコア114825

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

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

popori

2022/12/21 02:47

簡単に言えばコードの説明が欲しいだけなのに対し、 >このコードについて、何を理解していて、知りたいことは何なのか、具体的に書いていただけないでしょうか? だの >https://www.php.net/manual/ja/index.php だの 理解力の無いおっさんが多いようですね
popori

2022/12/21 02:52 編集

否定的なことを言ったら「荒らし」呼ばわりの一点張の両耳ふさぐシングルファザー生保メガネと、 1から100まで聞かなきゃ理解できない(もしくは聞きたがりな病気なのかなと思う)キノコくん
yambejp

2022/12/21 02:55

TO:poporiさん このコメントはどういう意図があるのでしょうか? 他人の回答や補足が気に入らないならご自身で回答をすればよいだけでは?
popori

2022/12/21 02:56

「この人は単なる荒らしと認定しました」「通報する」「無視がいい」 お決まりのセリフまだかな
popori

2022/12/21 03:03 編集

>TO:poporiさん このコメントはどういう意図があるのでしょうか? え?もしかして思い当たる節があるんでしょうか? >否定的なことを言ったら「荒らし」呼ばわりの一点張 >両耳ふさぐシングルファザー >プライドのカタマリ生保 >ラーメン食ったら曇ってしまうメガネ どれか該当しちゃいましたか?
Zuishin

2022/12/21 03:05

意図も何も、この退会済みユーザーは次の質問の質問者で、いくつものアカウントを使って何年も張り付いて荒らしている暇人です。知っていますよね? 体が元気なら肉体を使って国民の義務を果たしてもらいたいものです。 https://teratail.com/questions/d4g25ot4hwb2sd
popori

2022/12/21 03:08

>いくつものアカウントを使って何年も張り付いて荒らしている暇人です。知っていますよね? 妄想か?www
popori

2022/12/21 03:10

お前の言う何年も張り付いてるっていうのは、統合失調症の症状ちゃうか?w
popori

2022/12/21 03:10

大丈夫かお前、、、ダークウェブにあれこれ晒されて頭狂っちゃったとか?
popori

2022/12/21 03:22 編集

m9(^Д^)プギャー
popori

2022/12/21 03:14

なんつうかもうね、あれだよね、言ったらアウトになっちゃいそうやからいえないけどね 社会になじめないおっさんのなれの果て的なアレよ( ´,_ゝ`)プッ
popori

2022/12/21 03:15

色々●されてまだ自分の居場所がteratailにあると思ってるのは草 怖いなぁダークウェブはwwww
popori

2022/12/21 03:16

LAT,LON(それもほぼ正確で草)
Zuishin

2022/12/21 03:23

こんな感じです。ご存知ですよね? 前々からこの人の質問にいくつも回答されていますが、迷惑なので餌付けをやめてもらえればと思います。
popori

2022/12/21 03:25

うええええwwwwwwww だっせええこいつううううーwwwwww ●バレしたらめっぽう弱いんだなあw
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問