人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpの勉強をしています。HTMLフォームの情報をPOSTメソッドで送信した後に、
phpのURLにジャンプすることなく元のHTML(test.html)で表示させたいと思っています。

JavaScriptで言うと
「document.settei.Mes.value」でフォームに表示させる方法と、
「p = document.getElementById('ppp')」のID箇所に表示させる、
2通りの方法をphpでも知りたいと思っています。よろしくお願いします。

■test.html
<html>
<head><title>test</title></head>
<body>
入力フォーム。
<form action="test.php" method="post" name="settei">
<input type="text" name="year" value="2009" size="4">年
<input type="text" name="month" size="2">月
<input type="text" name="day" size="2">日
<input type="submit" value="入力"><br>
<input type="text" size="40" name="Mes">
<p id="ppp"><p>
</body>
</html>

■test.php
<?php

$year = $_POST['year'];
$month = $_POST['month'];
$day = $_POST['day'];

echo date("2日後はY/m/d",strtotime("+2 day" ,strtotime("$year/$month/$day")));

?>

●質問者: tontonpokopoko
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:echo HTML JavaScript PHP PPP
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● pahoo
●100ポイント ベストアンサー

方法は2つあります。


1.Ajaxを用いる方法

PHPはサーバサイドスクリプトですから、すでにクライアントに表示されているHTMLの内容を変えることはできません。

そこで、クライアントサイドスクリプトである JavaScript からPHPを呼び出し、その結果を JavaScript 側に戻す Ajax を組む必要があります。

その方法は「PHP+Ajaxで作るスマート・クライアント 」を参考にしてください。


2.HTMLでPHPを実行する方法

やや邪道ですが、HTMLファイルもPHPの実行対象になるよう Webサーバを設定しておき、以下のファイルを HTML として保存するものです。

このスクリプトは自分自身を呼び出すので画面遷移は起きているのですが、ブラウザ上ではほとんど分からないと思います。

<?php
$MySelf = basename($_SERVER['SCRIPT_NAME']);

$year = isset($_POST['year']) ? $_POST['year'] : '';
$month = isset($_POST['month']) ? $_POST['month'] : '';
$day = isset($_POST['day']) ? $_POST['day'] : '';
$Mes = isset($_POST['exec']) ? date("2日後はY/m/d", strtotime("+2 day", strtotime("$year/$month/$day"))) : '';

echo <<< EOF
<html>
<head><title>test</title></head>
<body>
入力フォーム。
<form action="$MySelf" method="post" name="settei">
<input type="text" name="year" value="2009" size="4" value="$year" />年
<input type="text" name="month" size="2" value="$month" />月
<input type="text" name="day" size="2" value="$day" />日
<input type="submit" name="exec" value="入力" /><br>
<input type="text" size="40" name="Mes" value="$Mes" />
<p id="ppp"><p>
</body>
</html>

EOF;
?>
◎質問者からの返答

pahooさま、早速の回答をありがとうございます。

とても参考になります。

>HTMLファイルもPHPの実行対象に・・

というのは「htaccess」を使っていく方法でしょうか。

ページが再読み込みされるのなら、

PHPページでHTMLと同様のものを作ったほうが簡単かもしれませんが、

結果を統一したくない場合は使える手段だと感じます。

が、やはり「Ajax」を取り入れることが最善なのでしょうね。

ただJavaScriptが使えない環境(モバイルなど)では、

いずれにせよ画面遷移が必要ということですね?

とても参考になりました、ありがとうございます!


2 ● Kenz
●40ポイント

画面遷移を行いたくないだけなら、

そもそも、pahooさんのファイルをtest.phpと言う名前で保存して、最初からtest.phpにアクセスさせれば良いかと

◎質問者からの返答

回答をありがとうございます。

現在ある複数のHTMLページの1部分に、

同様のスクリプトを一斉に取り入れたいと考えている次第です。

しかし新規で作成するときにはごもっとものことです。

今後ページを作成するときには、参考にさせていただきます。


3 ● hijk05
●30ポイント

>ただJavaScriptが使えない環境(モバイルなど)では、

Flashを使ってPOSTを投げる方法もあります。

◎質問者からの返答

回答をありがとうございます。

今後のために、もしお時間があれば詳細に教えていただけると幸いです。

よろしくお願いします。


4 ● esecua
●100ポイント

Smartyを使う。

これに限ります。

テンプレートは以下のような感じで


{if $data !== ""}
{$data.post.year}
{$data.post.month}
....
{else}
入力フォーム。
<form action="test.php" method="post" name="settei">
<input type="text" name="year" value="2009" size="4">年
<input type="text" name="month" size="2">月
<input type="text" name="day" size="2">日
<input type="submit" value="入力">
<input type="text" size="40" name="Mes">

{/if}

php側は

$smarty->assign('data', $_POST);

な感じです。

Ajax以外であればどうぞ。

◎質問者からの返答

esecuaさま、回答をありがとうございます。

Smartyはとても魅力的に感じますが、

まだPHPやJavaScriptの基礎段階を勉強中で手が出せないようです。

しかしいずれ知識をつけたときに、また読み返させていただきます。

参考になるコメントをありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ