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

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

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

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

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

3回答

1025閲覧

ログインフォームに入力された値(ID)をログイン先のページの名前テキストボックスの初期値にする方法

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2021/06/09 05:22

編集2021/06/09 05:50

ログインIDを掲示板項目のお名前テキストボックスの初期値に設定する

ひとこと掲示板にログイン機能をつけています。

発生している問題・エラーメッセージ

ログインフォーム(auth/index)  ID : hoge pass : ******  ログインが成功した場合、掲示板ページ(board/index)に移動します。 移動した際に掲示板ページの入力フォーム お名前:(type text)←ここ コメント:(type text) 登録 お名前のテキストボックスにログインフォームのid(上記だとhoge)を初期値として入力する処理をしたいのですがうまくいきません。

PHP

1//view/auth/index 2!DOCTYPE html> 3<html lang="ja"> 4<head> 5<meta charset="UTF-8"> 6<title>ログインフォーム</title> 7</head> 8<body> 9 <div> 10 <div></div> 11 <form action="/auth/check" method="post"> 12 <div>ID:<input type="text" name="id" value=""></div> 13 <div>PASS:<input type="password" name="pass"></div> 14 <div><input type="submit" value="ログイン"></div> 15 </form> 16 </div> 17</body> 18</html> 19

php

1<?php 2// Auth Controller 3 4class Controller_Auth extends Controller 5{ 6 public function action_index() 7 { 8 Auth::logout(); 9 10 $view = View::forge('auth/index'); 11 $view->message = ''; 12 $view->id = ''; 13 14 return $view; 15 } 16 17 18 public function action_check() 19 { 20 $view = View::forge('auth/index'); 21 22 $view->message = ''; 23 $view->id = ''; 24 25 if (Input::post()) { 26 $id = Input::post('id'); 27 $pass = Input::post('pass'); 28 if (Auth::login($id, $pass)) { 29 Response::redirect('board/index'); 30 } else { 31 $view->id = $id; 32 $view->message = 'ログインに失敗しました'; 33 } 34 } 35 return $view; 36 } 37 38 39 public function action_logout() 40 { 41 Auth::logout(); 42 Response::redirect('auth/index'); 43 } 44} 45

php

1//board index 2<!DOCTYPE html> 3<html lang="ja"> 4<head> 5<meta charset="UTF-8"> 6<title>入力フォーム・一覧表示画面</title> 7</head> 8<body> 9 <div style="text-align:right;"><a href="/auth/logout">ログアウト</a></div> 10 <?php if(isset($message)):?> 11 <div><?php echo $message;?></div> 12 <?php endif;?> 13 <!-- 入力フォーム箇所 --> 14 <div> 15 <form action="/board/entry" method="post"> 16 <div>お名前:<input type="text" name="onamae" value='$id'></div> 17 <div>コメント:<input type="text" name="comment" value=""></div> 18 <div><input type="submit" value="登録"></div> 19 </form> 20 </div> 21 22 <!-- 一覧表示箇所 --> 23 <hr> 24 <div> 25 <table> 26 <tr> 27 <th>ID</th> 28 <th>名前</th> 29 <th>コメント</th> 30 <th>登録日</th> 31 </tr> 32 <?php foreach($comment_data as $data):?> 33 <tr> 34 <td><?php echo $data['id'];?></td> 35 <td><?php echo $data['name'];?></td> 36 <td><?php echo $data['comment'];?></td> 37 <td><?php echo $data['registed'];?></td> 38 </tr> 39 <?php endforeach;?> 40 </table> 41 </div> 42</body> 43</html> 44

php

1//board controller 2<?php 3use \Model\Tcomment; 4 5class Controller_Board extends Controller 6{ 7 8 public function action_index() 9 { 10 if(!Auth::check()) { 11 Response::redirect('auth/index'); 12 } 13 14 $view = View::forge('board/index'); 15 16 17 $comment_data = Tcomment::get_datas(); 18 19 $view->comment_data = $comment_data; 20 return $view; 21 } 22 23 public function action_post() 24 { 25 $view = View::forge('auth/index'); 26 27 if (Input::method() == 'POST') { 28 29 $id = Input::post('id'); 30 31 $view = View::forge('board/index'); 32 33 $view->id = $id; 34 } 35 } 36 public function action_entry() 37 { 38 if (!Auth::check()) { 39 Response::redirect('auth/index'); 40 } 41 42 $view = View::forge('board/index'); 43 44 if (Input::post()) { 45 $onamae = Input::post('onamae'); 46 $comment = Input::post('comment'); 47 if(!empty($onamae) && !empty($comment)) { 48 $comment_data = Tcomment::insert_data($onamae,$comment); 49 $view->onamae = ''; 50 $view->comment = ''; 51 $view->message = '登録しました'; 52 } else { 53 $view->onamae = $onamae; 54 $view->comment = $comment; 55 $view->message = '入力情報を確認してください'; 56 } 57 } 58 59 $comment_data = Tcomment::get_datas(); 60 $view->comment_data = $comment_data; 61 62 return $view; 63 } 64 65 } 66?>

試したこと

public function action_post()
{
$view = View::forge('auth/index');

if (Input::method() == 'POST') { $id = Input::post('id'); $view = View::forge('board/index'); $view->id = $id; }

postを使いログインフォームから受け取ったIDをviewに渡し、

<div>お名前:<input type="text" name="onamae" value='$id'></div> ↓ <div>コメント:<input type="text" name="comment" value='<?php echo $id; ?>'></div>

で初期値に設定

結果

Fuel\Core\PhpErrorException [ Notice ]:
Undefined variable: id
になりました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答3

0

<div>お名前:<input type="text" name="onamae" value='$id'></div>

こちらを

PHP

1<div>お名前:<input type="text" name="onamae" value='<?php echo $id;?>'></div>

こういうことでしょうか?

投稿2021/06/09 05:42

編集2021/06/09 05:45
hiro_app

総合スコア123

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

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

0

<input type="text" name="onamae" value='$id'></div>

それは、htmlとして出力するからです。
変数展開したいのでしたらPHPとして処理させる必要があるので、PHPタグで囲ってechoしてください。
ドキュメントにもあります。

ご自身でも別のところではきちんとそのようにされてますが、理解して書かれてないのでしょうか。

PHPとは、あたりからの基礎が必要に感じました。

投稿2021/06/09 05:36

m.ts10806

総合スコア80875

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

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

退会済みユーザー

退会済みユーザー

2021/06/09 05:46

<div>コメント:<input type="text" name="comment" value='<?php echo $id; ?>'></div> に直してみたのですが、Fuel\Core\PhpErrorException [ Notice ]: Undefined variable: id というエラーが出てきました。
m.ts10806

2021/06/09 05:53

エラーのとおり、viewに渡ってないからでしょうね。 ドキュメントを確認し確実に渡してください。
退会済みユーザー

退会済みユーザー

2021/06/09 05:58

https://runble1.com/fuelphp-view-access/ を参考に public function action_post() { $view = View::forge('auth/index'); if (Input::method() == 'POST') { $id = Input::post('id'); $view = View::forge('board/index'); $view->id = $id; } で渡っていると思うのですがどこか間違いはありますか?
m.ts10806

2021/06/09 06:05

私ははじめから「ドキュメント」と明記してます。 それに8年も前の記事を根拠にされても困りますが、記事のとおりにもなってませんね。$viewがreturnされてません。 いずれにしても大昔の個人記事よりドキュメント確認してください。 ただ、本当にaction_post()通ってるならviewがreturnされないことで画面に何も表示されないのでは。デバッグしましたか?
退会済みユーザー

退会済みユーザー

2021/06/09 06:15

ドキュメントを確認いたします。ドキュメントのどこを参考にすればいいですか
m.ts10806

2021/06/09 06:18

回答に提示したviewsでは足りませんか? あとPHPの基礎とデバッグは忘れないでくださいね。やらずにPHP組めるようにはなりません。
退会済みユーザー

退会済みユーザー

2021/06/09 07:23

ドキュメントを参考に $view = View::forge('auth/index'); if (Input::method() == 'POST') { $id = Input::post('id'); $view = View::forge('board/index'); $view->set('id','$id'); return $view; } } で行いましたが同じエラーが出てしまいます
m.ts10806

2021/06/09 07:28

デバッグしてください。 action_post()通ってなかったらその$idとやらは定義されませんよね。 定義されない可能性があるなら実装で考慮してください。 あと、仮に渡っても$id と表示されるでしょうね。 変数展開の基礎ですのでPHPマニュアル参考にしてください。Fuelのドキュメントにも変数をシングルクォートで囲う旨はないと思います。 大事なことなので何度も言います。PHPの基礎とデバッグは忘れないでくださいね。やらずにPHP組めるようにはなりません。 実際に現在あなたはデバッグしないことで突破できてません。デバッグできるようになれば質問しなくて済んでます。
退会済みユーザー

退会済みユーザー

2021/06/09 07:42

初心者なのですみません。コードもほぼ完成された先生のコードに自分で考えて付け足すという授業をしています。なので出来ているはずなのに所々出来ていない箇所は自分で書いたところです。そしてデバックとはどういった処理でしょうか教えていただける助かります。
m.ts10806

2021/06/09 07:45

先生に「デバッグについて教えて下さい」と聞いてください。 「自分で考えて」ならデバッグについても質問する前に検索するなりなんなりやれることはあるはずです。 悪いですが考えてるようには見えません。
退会済みユーザー

退会済みユーザー

2021/06/10 01:22

デベロッパーツールを使いデバックしてみましたがどこを直せば良いかわかりませんでした。
m.ts10806

2021/06/10 01:32

PHP デバッグ で調べてください。 デベロッパーツールではフロント関係のデバッグしかできません(APIレスポンスとかは確認できるけど)。
m.ts10806

2021/06/10 01:37 編集

FuelPHPにもデバッグ用の機能ありますね。 やはり先生に聞いてください。 質問者さんのコメントにはどこにも「自分で考える」という欠片も感じません。ぜんぶ開口一番「どうしたら」です。 考えたならそのことも記載しないと赤の他人には伝わりません。 赤の他人なので、あまりに基本的すぎるところから付き合う義理はないです(その部分を聞くような質問でなければ)。調べればすぐそこにあるものばかりですし、いつ気づくかわからない他人に聞くより自分で調べたほうが早いですよ。
退会済みユーザー

退会済みユーザー

2021/06/10 01:40

guest

0

| <div>お名前:<input type="text" name="onamae" value='$id'></div>

これが書かれているのって<?php ~ ?>の中ではないので、ただのHTMLコードですよね。
$idが展開されるはずがないのでは。

(追記)
あ、FuelPHPは私はわからないので、もし勘違いなら低評価してください。

投稿2021/06/09 05:33

編集2021/06/09 05:37
itagagaki

総合スコア8402

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問