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

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

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

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

Q&A

解決済

2回答

3501閲覧

PHPでtwitter作成 返信機能について

Yuiki

総合スコア11

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

0グッド

1クリップ

投稿2015/04/21 05:17

1週間前から、PHPの勉強を独学で始めました。
そこでTwitterのようなサービス作成をひとつの目標にして、行っているのですが、一人で解決出来ないところが出てきたので、質問させていただきます。

今現在、ユーザー登録、ログインをし、自分のタイムライン上で、他のユーザーに返信をするというプログラムを書いています。そこで、返信のときに、返信先のIDを格納するための、reply_post_idを設けました。画像のid 14の部分は、member_id 10のユーザがmember_id 8のユーザに返信をしているのですが、それがreply_post_idに反映されていません。下にコードを載せたのですが、どこか間違っているのでしょうか?ご教授よろしくお願い致します。

php
//投稿を記録する
if(!empty($_POST)){
if($_POST['message'] != ''){
$sql = sprintf('INSERT INTO posts SET member_id=%d,
message="%s", reply_post_id=%d, created=NOW()',
mysqli_real_escape_string($mysqli,$member['id']),
mysqli_real_escape_string($mysqli,$_POST['message']),
mysqli_real_escape_string($mysqli,$_POST['reply_post_id'])
);
mysqli_query($mysqli,$sql) or die($mysqli_error());

header('Location: index.php'); exit(); }

}


html
<input type="hidden" name="reply_post_id" value="
<?php echo isset($_REQUEST['res']) ? htmlspecialchars($_REQUEST['res'],ENT_QUOTES,'UTF-8'):"" ;?>" />

![イメージ説明]WIDTH:424

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

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

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

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

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

guest

回答2

0

ベストアンサー

$_REQUEST['res']に値が入っていることは確認してますでしょうか?
おそらくですが、reply_post_idにはデフォルトで0が入るようになっていると思います。
そして、$_REQUEST['res']に値が入っていないために$_POST['reply_post_id']の値が空になり、データベースに値を挿入する際にデフォルト値である0が入るのだと思います。

投稿2015/04/22 03:44

orange0190

総合スコア1698

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

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

Yuiki

2015/04/24 02:31

ご指摘ありがとうございます。どうやら無駄なところにスペースがあったようです。 しかし、また違うところで詰まってしまいました、、、。
orange0190

2015/04/24 02:44

まだ、0が入るということでしょうか?
Yuiki

2015/04/24 02:56

var_dump($_REQUEST['reply_post_id']); で試したところ。NULLが返ってきました。 これは、値が入っていないということなのでしょうか?
orange0190

2015/04/24 03:03

まず、フォームの存在するページにはGETもしくはPOSTで何かデータが送られてくるということでよろしいですか? $_REQUESTは$_GET、 $_POST そして $_COOKIE の内容をまとめた連想配列となるのでGETやPOSTをしておらず、さらにクッキーを何もいじっていない場合には、$_REQUEST['reply_post_id']は存在しません。
Yuiki

2015/04/27 07:24

すみません、コメントも混ざっていますが、htmlはこんな感じです。 h()はhtmlspecialcharsが長いので、それを新しい関数で置き換えたものです。 <form action="" method="post"> <dl> <dt><?php echo htmlspecialchars($member['name']); ?>さん、メッセージをどうぞ</dt> <dd> <textarea name ="message" cols="50" rows="5"> <?php echo isset($message) ? h($message,ENT_QUOTES,'UTF-8'):"" ;?></textarea> <input type="hidden" name="reply_post_id" value="<?php echo isset($_REQUEST['res']) ? h($_REQUEST['res'],ENT_QUOTES,'UTF-8'):"" ;?>" /> </dd> </dl> <div> <p> <input type="submit" value="投稿する" /> </p> </div> </form> <?php while($post = mysqli_fetch_assoc($posts)): ?> <div class="msg"> <!-- 画像を取得 できなければ変わりに名前取得 --> <!-- htmlspecialcharsは指定した変換文字列の中に、HTMLで特殊な意味を持つ文字が含まれる場合、表示可能な形式に変換 --> <img src="member_picture/<?php echo isset($post['picture']) ? h($post['picture']):"" ;?>" width="48" height="48" alt="<?php echo isset($post['name']) ? h($post['name'],ENT_QUOTES,'UTF-8'):"" ;?>" /> <!-- メッセージ取得 --> <p><?php echo makeLink(h($post['message'])); ?> <!-- 名前取得し、()内に表示 --> <span class ="name">(<?php echo isset($post['name']) ? h($post['name']):""; ?>)</span> <!-- Reと書いた文字にリンクをはる "index.php?res=1とかになる URLをみればわかる--> [<a href="index.php?res=<?php echo isset($post['id']) ? h($post['id']):""; ?> ">Re</a>]</p> <!-- 時間取得 --> <p class="day"><a href="view.php?id=<?php echo isset($post['id']) ? h($post['id']):"";?> "> <?php echo isset($post['created']) ? h($post['created']):"";?></a> <?php if ($post['reply_post_id'] >0): ?> <a href="view.php?id=<?php echo isset($post['reply_post_id']) ? h($post['reply_post_id'],ENT_QUOTES,'UTF-8'):"" ;?> "> 返信元のメッセージ</a> <?php endif; ?>
guest

0

すみません、コメントも混ざっていますが、htmlはこんな感じです。
h()はhtmlspecialcharsが長いので、それを新しい関数で置き換えたものです。

<form action="" method="post"> <dl> <dt><?php echo htmlspecialchars($member['name']); ?>さん、メッセージをどうぞ</dt> <dd> <textarea name ="message" cols="50" rows="5"> <?php echo isset($message) ? h($message,ENT_QUOTES,'UTF-8'):"" ;?></textarea> <input type="hidden" name="reply_post_id" value="<?php echo isset($_REQUEST['res']) ? h($_REQUEST['res'],ENT_QUOTES,'UTF-8'):"" ;?>" /> </dd> </dl> <div> <p> <input type="submit" value="投稿する" /> </p> </div> </form> <?php while($post = mysqli_fetch_assoc($posts)): ?>
<div class="msg">
<!-- 画像を取得 できなければ変わりに名前取得 --> <!-- htmlspecialcharsは指定した変換文字列の中に、HTMLで特殊な意味を持つ文字が含まれる場合、表示可能な形式に変換 -->
<img src="member_picture/<?php echo isset($post['picture']) ? h($post['picture']):"" ;?>" width="48" height="48" alt="<?php echo isset($post['name']) ? h($post['name'],ENT_QUOTES,'UTF-8'):"" ;?>" />
<!-- メッセージ取得 -->
<p><?php echo makeLink(h($post['message'])); ?>
<!-- 名前取得し、()内に表示 -->
<span class ="name">(<?php echo isset($post['name']) ? h($post['name']):""; ?>)</span>
<!-- Reと書いた文字にリンクをはる "index.php?res=1とかになる URLをみればわかる-->
[<a href="index.php?res=<?php echo isset($post['id']) ? h($post['id']):""; ?> ">Re</a>]</p>
<!-- 時間取得 -->
<p class="day"><a href="view.php?id=<?php echo isset($post['id']) ? h($post['id']):"";?> "> <?php echo isset($post['created']) ? h($post['created']):"";?></a>
<?php if ($post['reply_post_id'] >0): ?>
<a href="view.php?id=<?php echo isset($post['reply_post_id']) ? h($post['reply_post_id'],ENT_QUOTES,'UTF-8'):"" ;?> "> 返信元のメッセージ</a>
<?php endif; ?>

投稿2015/04/27 07:19

Yuiki

総合スコア11

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

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

orange0190

2015/04/27 07:40

POSTされたデータを取得する場合には、 $_POST[key] のようにしないと取得できません。 $post[key] では$postという配列にアクセスして値をとろうとしてます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問