ネットが遅くてイライラしてない!?

PHPとDBを学習し始めて半月です。
わからないところができましたので質問いたします。


PHPでデータベースからデータを取り出し、表示するプログラムを作っています。
データベースには、「ID」と「PASS」、「時刻1」、「時刻2」が数人分登録されています。
PHPで、「渡されたIDとPASSのレコードにある時刻1と時刻2を表示する関数time()」をつくり、テストして正しく動作しました。

フォームからIDとPASSを送信してログインし、main.phpに入るところまで作りました。
main.phpで、「時刻を表示」というボタンを押すと、そのボタンの下に時刻1と時刻2を表示するようなプログラムを作りたいのですが、仕組みをどうすればいいのか悩んでいます。
主な疑問は、
・ボタンのactionは何にすればいいのか
・同一ページに表示する方法
・ボタンを押す~引数を渡す~関数を実行する、までの流れ

です。
分かりにくかったら申し訳ありません。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (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>
------------------------------
    • good
    • 1
この回答へのお礼

わかりやすい回答ありがとうございました。
自作関数の名前を変えて、教えていただいた例を参考にコーディングしてみます。

お礼日時:2008/10/06 09:52

スイマセン…。

下の$timeは気にしないでください…。
ソースをいきなり書いてしまうのもどうかと思って消した時に、一緒に消し忘れた変数です。
$timeは表示したいデータが格納されている変数だと思って下さい( >_<)

この回答への補足

回答ありがとうございました。
質問にミスがありました。自作関数time()は、
「渡されたIDとPASSのレコードにある時刻1と時刻2を表示する関数time()」

、「渡されたIDとPASSのレコードにある時刻1と時刻2を返す関数time()」

一人あたり何件もデータがある仕様なので、返ってくるデータは配列です。
今更で申し訳ないです。


>if( ! is_null($_POST['a2'])){ //時刻を表示をクリックするとa2に>値が入ってくる
これはa2に関数の結果が入るということでしょうか?

>//日付と時刻を表示する処理
ここで自作関数time()を実行でしょうか?

補足日時:2008/10/03 14:45
    • good
    • 0

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を記述してあげるだけだと思います。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q同じページでフォームデータを受取る方法

同じフォームでデータを送信させたいと考えています。
サーバ環境変数の $_SERVER['PHP_SELF'] を使用すれば
出来そうなところまではたどり着いたのですが、具体的な
記載方法が分かりません。

やりたい事としましては、まず最初の画面で1行ずつ何かデータを
表示させて、チェックボックスで複数選択可能な状態にします。
書式方法が分からないところですが、チェックボックスで選択した
データのみを、input type='submit'を使って同じフォームでデータ
を送信させて、チェックボックスにて選択したデータのみを画面に
表示させたいと考えています。

どなたかお分かりになる方がいらっしゃいましたら、簡単な具体例
として記載方法を教えて頂けないでしょうか。

Aベストアンサー

>> 結果画面には、チェックボックスで選択したデータのみを表示させたいと考えています。

以下参照
<?php
print "<html><body>";
if (isset($_POST['cbox'])){
foreach($_POST['cbox'] as $val){
$val=htmlspecialchars($val);
print "チェック${val}が選択されました<br>\n";
}
} else {
print <<<_FORM_
<form action="" method="post">
<input type="checkbox" name="cbox[]" value="1">チェック1<br>
<input type="checkbox" name="cbox[]" value="2">チェック2<br>
<input type="checkbox" name="cbox[]" value="3">チェック3<br>
<input type="submit">
</form>
_FORM_;
}
print "</body></html>";
?>

>> 結果画面には、チェックボックスで選択したデータのみを表示させたいと考えています。

以下参照
<?php
print "<html><body>";
if (isset($_POST['cbox'])){
foreach($_POST['cbox'] as $val){
$val=htmlspecialchars($val);
print "チェック${val}が選択されました<br>\n";
}
} else {
print <<<_FORM_
<form action="" method="post">
<input type="checkbox" name="cbox[]" value="1">チェック1<br>
<input type="checkbox" name="cbox[]" value="2">チェック2<br>
<input type="checkbox" n...続きを読む

QボタンをクリックでPHP文を実行

ボタンをクリックしたときのみPHP文を実行したいのですが・・・

<input type="button" onClink="<?php~?>">
でいけるかと思ったのですが、
ページ表示時に<?php~?>が実行されてしまい、うまくいきませんでした。

onClink="window.open(test.php)"
という方法以外でお願いします。

Aベストアンサー

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、遷移させることが大前提で動作します

ですから、ボタンを押してその場でJavaScriptと同じようにPHPが動くなんてことはありえません。
ボタンを押したらサーバーにリクエストする という動作ならば可能です。

つまり
質問で言われているような
onClink="window.open(test.php)"

<form name="f1" action="test.php" method="post">
<input type="submit" name="submit" value="submit" />
</form>
等のような形になります

こういった一般的な方法だと いちいち画面が切り替わったようになってしまうのを嫌って Ajaxでコレと同じことを、画面を切り替えずに行っているだけに過ぎません

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、...続きを読む

Qinputタグでphpを呼び出す際、ページ遷移せずに実行結果を呼び出す方法が分かりません

phpのプログラムで数点詰まってしまった所がございましたので、アドバイスいただける方がいらっしゃいましたら、よろしくお願いします。

【やりたいこと】
1. index.phpのactionというボタン(inputタグ)を押すと、action.phpの中身を実行したい(これは出来ています)。
2. その際、ブラウザのURLはaction.phpではなく、index.phpにしたい(これは出来ていません。index.phpにaction.phpの実行結果を読み込めばよいのかなと思いましたが、その方法が分かりませんでした)。
3. index.phpのactionというボタンを押すと表示される画面に、「戻る」ボタンを表示したい(これは出来ていません。action.php内に「戻る」ボタンを記述した所、action.phpを正常に実行した際は「戻る」ボタンが表示されましたが、異常時には「戻る」ボタンが表示されませんでした。なおindex.phpに最初にアクセスした際には「戻る」ボタンは表示させたくありません)。

【ソースコード】
※phpが動作するサーバの同一階層内に、下記のindex.php、action.phpをアップしていただければ、動作を確認していただけると思います。
★index.php
<html>
<head>
<title>action</title>
</head>
<body>
<form action="action.php" method="post" enctype="application/x-www-form-urlencoded">
<input type="submit" name="Submit" value="action" />
</form>
</body>
</html>

★action.php
<?php
phpinfo();
?>

どこか一箇所でもアドバイスいただけるようでしたら、アドバイスいただければと思います。
以上、よろしくお願いします。

phpのプログラムで数点詰まってしまった所がございましたので、アドバイスいただける方がいらっしゃいましたら、よろしくお願いします。

【やりたいこと】
1. index.phpのactionというボタン(inputタグ)を押すと、action.phpの中身を実行したい(これは出来ています)。
2. その際、ブラウザのURLはaction.phpではなく、index.phpにしたい(これは出来ていません。index.phpにaction.phpの実行結果を読み込めばよいのかなと思いましたが、その方法が分かりませんでした)。
3. index.phpのactionというボタンを...続きを読む

Aベストアンサー

>異常時には「戻る」ボタンが表示されませんでした。
この異常時というのがよくわかりませんが、、、。
POSTデータの内容で条件分岐させて、index.phpの中でaction.phpの処理をさせてしまえばいいだけです。

★index.php
<html>
<head>
<title>action</title>
</head>
<body>
<?php
if($_POST['Submit']){
phpinfo();
echo "<a href=\"".$_SERVER['PHP_SELF']."\">戻る </a>";
exit;
}
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<input type="submit" name="Submit" value="action" >
</form>
</body>
</html>

QリンクでPOSTデータを送信することは可能ですか?

はじめまして。
Submitボタンを使用せずに<A>リンクでFORMのPOSTメソッドデータを送信することは可能でしょうか?
やはりURLにデータを付加して送信するしかないのでしょうか?
ご教授よろしくお願い致します。

Aベストアンサー

javascript を使えば可能です。大雑把にはこんな感じ。

・パラメータが全部 hidden な form を記述しておく(ブラウザでは表示されない)
・<a href> では、その form を submit するように javascript を記述する

試してないですけど、こんな感じ。

<form name=f method=POST action="http://どこか">
<input type=hidden name=x1 value=v1>
</form>

<a href="javascript:document.f.submit()">リンクから submit</a>

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

Qリンクをクリックした時にformからPOST送信したい。

HTML、PHP、JavaScript等でサイトを作っているのですが・・・。

【実現出来ている例】
<form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">
 <input type="submit" value="送信">
</form>
 submitボタンを一つ置いて、それがクリックされた場合に
formの内容をPOSTで送信する。

【実現したい例】
<form name="form1 method="post">
 <a href="Next.php" onClick="???">???</a>
</form>
 formの中のリンクをクリックされた場合に、formの内容を
POSTで送信したいのですが、その実現方法がわかりません。
GETで送るという手もあり得ますが、今回はどうしてもPOST
したいのですが。

Aベストアンサー

<form name="form1" method="post" action="Next.php">
<a href="#" onClick="document.form1.submit();">???</a>
</form>

onclick内の対象がform1としてあてているので、
アンカータグは別にform内に記述しなくても大丈夫です

form内にhidden等でnameとvalueを持ったパラメータがあればそれも送られます

アンカータグから動的にvalueを変更したい場合は、
document.form1.hogename.value = 'hoge';
等をsubmit()の前に行えば可能です

ただしform内に
<input type="hidden" name="hogename" value="">
を記述する等、変更先パラメータの元を用意する必要がありますのでご注意下さい

QPHPの関数実行

<?php
function disp(){
echo "hello world";
}
?>

<form>
<input type="text">
<input type="button" onclick="<?php disp() ?>">
</form>

といったソースを書いてみたのですが、ボタンを押してみるのですが作動しません。
どこか間違えているのでしょうか、それとも作動しないのでしょうか・・・。
当方としては、formのinputボタンを押したらPHPの関数が実行させるようにしたいのですが・・・。
どなたかご助言をお願いします。

Aベストアンサー

ウソつきました
出来ましたー

<?php

if($_REQUEST[submit] == TRUE){
function disp(){
echo "hello world";
}
}

else{
function disp(){
echo "";
}
}

?>

<form method="post" action="">
<input type="text" value="<?php disp(); ?>">
<input name="submit" type="submit"value="押せ">
</form>

QPHP ボタンが押されたら処理を実行する

PHPプログラミングをしています。
「はい」というボタンが押されたらこの処理を行い、
「いいえ」というボタンが押されたらこの処理を行う
ということはどうすれば実装できるのでしょうか?

Aベストアンサー

どういう環境下で作っておられるのかが全然わかりませんが、
PHPというこですので、Webベースのフォームですよね。

たとえば、「はい」ボタンと「いいえ」ボタンをそれぞれフォームのSubmitにしておいて、
POST先のフォームで処理を分ければどうでしょうか。

送信元
<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" value="1">
<input type="submit" value="はい">
</form>

<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" value="0">
<input type="submit" value="いいえ">
</form>


送信先
$answer = $_POST["answer"];

if($answer == 1){
// 「はい」の時の処理
}else{
// 「いいえ」の時の処理
}


ちなみに、自分から自分へPOSTすればPHPスクリプトも2つに分けずにできると思います。
また、POSTじゃなくGETでも同様のことはできると思います。

どういう環境下で作っておられるのかが全然わかりませんが、
PHPというこですので、Webベースのフォームですよね。

たとえば、「はい」ボタンと「いいえ」ボタンをそれぞれフォームのSubmitにしておいて、
POST先のフォームで処理を分ければどうでしょうか。

送信元
<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" value="1">
<input type="submit" value="はい">
</form>

<form name="Hai" method="POST" action="hoge.php">
<input type="hidden" name="answer" ...続きを読む

Qボタンのonclick時における関数コールの仕方

下記のPHPスクリプトにおいて、updateMemo()関数の中で、テストで、
echo 'in update';
として、関数内に入ったら、文字列表示をするようにしているのですが、
更新ボタンを押しても、updateMemo()関数の中に入ってきません。(in update が表示されません)
関数のコールの仕方が、onclick=の部分でまちがっているのでしょうか?
教えていただきたいです。


<?php
//////////////////////////
// メモ内容の閲覧、更新 //
//////////////////////////
$sid = (int)$_GET['sid'];
var_dump($sid);
$con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する
mysql_select_db("*****-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する
$sql = "SET NAMES utf8;";
mysql_query($sql);

$sql = "SELECT * FROM ideamemo_table WHERE sid=$sid;";
$result = mysql_query($sql, $con) or die(mysql_error());
$row = mysql_fetch_row($result);
mysql_close($con);
//$row[0] = (int)$row[0]; // string⇒int にキャスト
echo '<form name="form1" method="POST" action="deleteUpdate.php">';
echo '内容<br>';
echo '<textarea name="textarea" cols="100" rows="30">'.$row[3].'</textarea>';
echo '<br>';
echo '<input type="button" value="更新" onclick="<?php updateMemo('.$sid.');?>">';
//echo '<input type="button" value="更新" onclick="updateMemo();">';
echo '<input type="button" value="削除" onclick="deleteMemo('.$sid.');">';
echo '<input type="button" value="トップページへ" onclick="location.href=\'main.php\'">';
echo '</form>';
var_dump($row[2]);

function updateMemo($sid){
//function updateMemo(){
echo 'in update';
//var_dump($sid);
//exit;
date_default_timezone_set("Japan");
$update = date(Y年m月d日(D)H時i分s秒);

$textarea = $_POST['textarea'];
var_dump($textarea);
var_dump($update);
$con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する
mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する
$sql = "SET NAMES utf8;";
mysql_query($sql);

$sql = "UPDATE ideamemo_table SET contents = '$textarea', update_date = '$update' WHERE sid=$sid;";
$result = mysql_query($sql, $con);
mysql_close($con);
//header("Location: main.php");
}

function deleteMemo(int $sid){
echo 'in delete';
$con = mysql_connect("*****", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する
mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する
$sql = "SET NAMES utf8;";
mysql_query($sql);

$sql = "DELETE FROM ideamemo_table WHERE sid=$sid;";
$result = mysql_query($sql, $con);
mysql_close($con);
//header("Location: main.php");
}

?>

下記のPHPスクリプトにおいて、updateMemo()関数の中で、テストで、
echo 'in update';
として、関数内に入ったら、文字列表示をするようにしているのですが、
更新ボタンを押しても、updateMemo()関数の中に入ってきません。(in update が表示されません)
関数のコールの仕方が、onclick=の部分でまちがっているのでしょうか?
教えていただきたいです。


<?php
//////////////////////////
// メモ内容の閲覧、更新 //
//////////////////////////
$sid = (int)$_GET['sid'];
var_dump($sid);
$con = mysql_...続きを読む

Aベストアンサー

>onclick="<?php updateMemo('.$sid.');

そもそもの考え方が間違っています。
htmlで出力されている時点でonclickの中身は「結果」なので
なにをしても結果は変わりません。

どうしてもやりたいならonclickでajaxを通して
更新用プログラムにsidを渡してやることです
(もしくは普通にgetでページ遷移する)


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング