- ベストアンサー
PHPで、ボタンを押すと同じページに表示するには?
PHPとDBを学習し始めて半月です。 わからないところができましたので質問いたします。 PHPでデータベースからデータを取り出し、表示するプログラムを作っています。 データベースには、「ID」と「PASS」、「時刻1」、「時刻2」が数人分登録されています。 PHPで、「渡されたIDとPASSのレコードにある時刻1と時刻2を表示する関数time()」をつくり、テストして正しく動作しました。 フォームからIDとPASSを送信してログインし、main.phpに入るところまで作りました。 main.phpで、「時刻を表示」というボタンを押すと、そのボタンの下に時刻1と時刻2を表示するようなプログラムを作りたいのですが、仕組みをどうすればいいのか悩んでいます。 主な疑問は、 ・ボタンのactionは何にすればいいのか ・同一ページに表示する方法 ・ボタンを押す~引数を渡す~関数を実行する、までの流れ です。 分かりにくかったら申し訳ありません。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
同一ページとは 画面遷移してもいいんですよね? だとしたらactionをmain.phpにして つまり自分自身を呼び出します ちなみにphpないぞう関数にもtime()があるので 変えたほうがいいかもです。 端的にかくとこんな感じですかね? ------------------------------ <?php if($_REQUEST['disp_time']) { $data = disp_time(); } //じさく関数 function disp_time() { return array('time1'=>'はちじ','time2'=>'さんじ'); } ?> <html> <body> <form action="main.php"> <input type="submit" name="disp_time" value="じかんひょうじ"> </form> <?if($_REQUEST['display_time']):?> じかん1:<?=$data['time1']?><br> じかん2:<?=$data['time2']?><br> <?endif;?> </body> </html> ------------------------------
その他の回答 (2)
- t_netbug
- ベストアンサー率34% (15/44)
スイマセン…。下の$timeは気にしないでください…。 ソースをいきなり書いてしまうのもどうかと思って消した時に、一緒に消し忘れた変数です。 $timeは表示したいデータが格納されている変数だと思って下さい( >_<)
補足
回答ありがとうございました。 質問にミスがありました。自作関数time()は、 「渡されたIDとPASSのレコードにある時刻1と時刻2を表示する関数time()」 ↓ 、「渡されたIDとPASSのレコードにある時刻1と時刻2を返す関数time()」 一人あたり何件もデータがある仕様なので、返ってくるデータは配列です。 今更で申し訳ないです。 >if( ! is_null($_POST['a2'])){ //時刻を表示をクリックするとa2に>値が入ってくる これはa2に関数の結果が入るということでしょうか? >//日付と時刻を表示する処理 ここで自作関数time()を実行でしょうか?
- t_netbug
- ベストアンサー率34% (15/44)
actionはsubmitで良いと思います。 以下におおざっぱですが書いてみます。 2種類?のsubmitボタンにname属性を付加 ex) <input name="a1" type="submit" value="login"> <input name="a2" type="submit" value="時刻を表示"> php側では if( ! is_null($_POST['a2'])){ //時刻を表示をクリックするとa2に値が入ってくる //日付と時刻を表示する処理 //表示したいデータを変数に格納 } あとは表示したい個所に$timeを記述してあげるだけだと思います。
お礼
わかりやすい回答ありがとうございました。 自作関数の名前を変えて、教えていただいた例を参考にコーディングしてみます。