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

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

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

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

Q&A

解決済

1回答

1750閲覧

掲示板の返信のような機能について

commedia_01

総合スコア1

PHP

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

0グッド

0クリップ

投稿2021/06/15 09:55

前提・実現したいこと

初めての質問失礼します。PHP初学者です。

掲示板の返信のような機能を試しているのですが、うまく出来ないので教えていただきたいです。
REの返信元の番号を取得して、$_POSTを$_SESSIONで格納してreplay.phpへ送りたいのですが、ページが変わりません。

そもそもですが、javascript:reply~の辺りの理解が出来ておらず、
<input type="hidden" name="reply">のname="reply"が、$_POST['reply']であるのか?値(番号)はいっているのか?も教えていただけますと嬉しいです。

該当のソースコード

php

1ソースコード 2connect.php 3<?php 4 5function connect(){ 6try{ 7 $dsn ='mysql:dbname=member;host=127.0.0.1;charset=utf8'; 8 $root = 'root'; 9 $pass = ''; 10 $PDO = new PDO($dsn,$root,$pass); 11 $PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 12 return $PDO; 13 }catch(PDOException $e){ 14 echo 'エラーが発生しました'.$e->getMessage(); 15 } 16} 17function chars($m){ 18 echo htmlspecialchars($m,ENT_QUOTES|ENT_HTML5,'UTF-8'); 19}

php

1コード 2in.php 3<?php 4session_start(); 5require_once __DIR__.'/connect.php'; 6$db = connect(); 7if($_COOKIE['__login']){ 8 // パスワード用セッションの確認 9 $login_pass = $_COOKIE['__login']; 10$record = $db->query( "SELECT * FROM member_conceal WHERE __login ='".$login_pass."' "); 11while($row = $record->fetch()){ 12 $name_id = $row ["name_id"]; 13// 持ってなかった場合 14 if(empty($row)){ 15 header('Location: login.php'); 16 exit(); 17 } 18} 19 //データを取得する 20 $conects = $db->query("SELECT * FROM time_line WHERE member_id='".$name_id."'"); 21//データを追加する 22if(!empty($_POST['line_post'])){ 23 $line_post = $_POST['line_post']; 24 $create_now = date('Y-m-d H:i:s'); 25 $insert = $db->query("INSERT INTO time_line(member_id,create_line,line_text) VALUES ('$name_id','$create_now','$line_post')"); 26 header('Location:in.php'); 27 exit(); 28} 29// 返信(RE)がクリックされたら 30if(isset($_POST['reply'])){ 31 var_dump($_POST['reply']); 32 $_SESSION['join'] = $_POST['reply']; 33 header('Location:reply.php'); 34 exit(); 35} 36} 37 38?> 39<body> 40 <form action="" method="POST"> 41 <tr> 42 <td><?php echo chars($name_id) .'さん、ようこそ'?></td> 43 <dd><textarea name="line_post" cols="30" rows="10"></textarea></dd> 44 </tr> 45 <dd><input type="submit" name="submit" value="送信"></dd> 46 </form> 47 <?php foreach($conects as $conect):?> 48 <?php echo chars($conect['member_id']) .'<br>';?> 49 <?php echo chars($conect['create_line']) .'<br>';?> 50 <?php echo chars($conect['line_text']) .'<br>';?> 51 <form method="POST" action=""> 52 <input type="hidden" name="reply"> 53 <a href="javascript:reply[<?php echo chars($conect['number']);?>].submit()">RE</a> 54 </form> 55 <?php endforeach;?> 56 57</body> 58</html>

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

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

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

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

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

m.ts10806

2021/06/15 09:58

自身で書いたコードなのでは?
commedia_01

2021/06/15 10:09

ご返信ありがとうございます! 本を参考に自身で試しでコード書いたものになります。 すいません、こういった質問をすることは駄目でしたでしょうか?
m.ts10806

2021/06/15 10:47

いえ、理解して書いてるならなんで質問したのかなーと思って。 コピペツギハギとかなら、まぁ。
commedia_01

2021/06/15 11:16

ご回答ありがとうございます! 独学で誰も聞ける方がいなかった為、こちらで質問したのですが、もう少し本などで学習した方が良いでしょうか?自身の理解度もよくわかっておりません。(相当低いというのは、わかっています。
m.ts10806

2021/06/15 11:26

自身の書いたコードをある程度説明できるくらいにはなったほうが良いです。 このように書いた意図とか特に。 コピペした雑にかえてみた 動かん どうしよう では何の進歩もないので。 大抵の人は独学と思います(スクールやオンライン学習に依存してる人は業務レベルに来ないです)
commedia_01

2021/06/15 11:35

ご回答ありがとうございます! 書き方が雑、かつ説明が出来てないという事ですね。 大変参考になりました。次回質問する時は、丁寧に書くようにします。
m.ts10806

2021/06/15 11:38

質問は編集できます。 「雑」というのは「コピペだけで済まそうとする人にありがちな行動」として挙げただけで質問者さんがそうであると決めつけたものではありません。 コードを書きながら考えたりしてないか? 全体像は? 情報の整理は? など。 ひとえに「初学者」といっても色んな段階がありますから、あまり使わなくても良いかなと(初心者アイコンを質問につけるだけにとどめましょう) 作りたいものを作るときに基礎が足りてるかって結構大事ですが、それよりも情報整理がどの程度できているかのほうが大事です。 https://teratail.com/help/question-tips#questionTips2-1
commedia_01

2021/06/15 11:59

回答後もアドバイスいただきありがとうございます。 参考にいただいた質問のヒントページを読んで整理してから質問するようにします。 ご丁寧にありがとうございました!
m.ts10806

2021/06/15 12:27 編集

コメントに返しただけです。 とりあえず「質問するときのヒント」に倣って必要な情報をきちんと提示すれば初心者かどうかというのは関係なく、アドバイスは得られるはずです(Twitterとかでteratailの回答者を悪く言って愚痴ってるのは大抵話を聞かず自分の主張ばかり繰り返してコミュニケーション全く取れない人です。)
commedia_01

2021/06/15 12:54

ありがとうございます。Twitterとかで悪く言われる方がいらっしゃるんですね。(酷い… 整理して再度質問したいと思います。 またタイミング・機会がありましたらよろしくお願いします。
guest

回答1

0

ベストアンサー

<form method="POST" action="">
<input type="hidden" name="reply"> <a href="javascript:reply[<?php echo chars($conect['number']);?>].submit()">RE</a> </form>

「どうなったら返信とするか」という部分があまり考えられてないように思います。
テーブル定義が提示されてないので何とも言えませんけど、
情報の整理から始めてはどうでしょう。

どういうデータが必要なのか
そのデータをどう持つと構造として見やすくなるのか
「返信」の定義(返信の返信の返信の・・・とどこまで深くいくのか)

親子関係をはっきりさせるところからですね。

それができれば「どういうときにどういう情報を渡せばいいか」が決まるので、
実装に落とし込みやすくなります。

そもそもですが、javascript:reply~の辺りの理解が出来ておらず

何を参考に書いたのか分かりませんが、JavaScript利用するにしてもイベントが見えにくかったり、
そもそも何しようとしているのかが分からなかったりするので、
まずは単純にform送信だけを考えるようにしたら良いでしょう。

投稿2021/06/15 11:34

編集2021/06/15 11:36
m.ts10806

総合スコア80857

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

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

commedia_01

2021/06/15 11:43

質問の仕方と説明が不適切だったにもかかわらず、丁寧で迅速にご回答していただきありがとうございました。 テーブル定義についても、次回記載漏れが無いようするようにします。
m.ts10806

2021/06/15 11:56

質問は編集できるので、適宜ご対応ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問