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

php初心者です。

入門本を見ながら次のような仕様にしたいのですが、うまくいきません。
・a.phpでsubmitボタンを押すと、b.phpへ飛ぶ
・その際、a.phpで$ataiに格納された値も一緒にb.php持っていって利用したい。

下記のどこを直せばうまくいくようになりますか?(下記の仕様ではsubmitボタンを押しても何も動作しません)。

----a.phpの中身----
<?php
//ボタンををクリックしたら、b.phpを表示
if( $post_mode == 'b.phpへ飛ぶ'){
header("Location: b.php");
exit;
}

$atai = x

//値とsubmitボタンを表示
echo $atai;
echo "<INPUT TYPE=\"submit\" NAME=\"post_mode\" VALUE=\"'b.phpへ飛ぶ\">";

?>


●質問者: meisa
●カテゴリ:ウェブ制作
✍キーワード:echo EXIT PHP クリック ボタン
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● Mook
●20ポイント

日本語を変数に使うことはあまりお勧めしませんが、それはさておき POST されたものを変数に展開するには、

extract($_POST);

とします。これを実行すれば $post_mode に内容が展開されます。

あるいは、

$_POST['post_mode'];

として参照するかです。

いずれにせよ、変数が必ずあるとは限らないので、参照する際は

if ( isset( $post_mode ) ) {
 if ( strcmp( $post_mode, "b.phpへ飛ぶ" ) == 0 ) {
 ...
 }
}

のようにした方が良いでしょう。

蛇足ですが、

$atai = x // $x では?

//値とsubmitボタンを表示
echo $atai;
echo "<INPUT TYPE=\"submit\" NAME=\"post_mode\" VALUE=\"<span style="color:#FF0000;font-weight:bold;">'</span>b.phpへ飛ぶ\">";

などは良いですか?


2 ● hirotow
●20ポイント

とりあえずその本を最後まで読んでください。

といいたいところですが、親切に答えましょう。

答えは、フォームの送信先としてb.phpを指定し、b.phpのスーパーグローバル連想配列$_POSTから値を受け取ることです。

というわけで回答は、

?>

  <form name="form_to_b" action="b.php" method="post">

    <input type="hidden" name="atai" value=">?echo $atai?<" />

    <input type="submit" value="送信" />

  </form>

<?

となります。

b.phpでは、

$atai = $_POST['atai'];

としてください。


3 ● esecua
●20ポイント

こんなんはどうでしょう?

a.php

$value = "b.phpに渡したい値";

echo'
<form action="b.php" method="post">
<input type="hidden" name="value" value="'.$value.'">
<input type="submit" value="b.phpへいくなり">
</form>
';

b.php

$get = $_POST['value'];

echo
'
ここはb.phpです。値:'.$get.'を受け取りました!
';

間違っていたらごめんなさい。


4 ● SALINGER
●20ポイント

かなりおかしなコードですぞいw

普通はこんな感じ

a.php

<?php
$atai = "x";
echo $atai;
echo "<form action=\"b.php\" method=\"post\">";
echo "<input type=\"hidden\" name=\"post_mode\" value=\"" . $atai . "\" />";
echo "<input type=\"submit\" value=\"b.phpへ飛ぶ\" />";
echo "</form>";
?>

b.php

<?php
echo $_POST["post_mode"];
?>

5 ● stephanie
●20ポイント

スクリプト間で変数を受け渡す方法は上で書かれているような

POST時にhiddenで渡すorGETのパラメータとして渡すというのが一般的ですが、

変数をユーザの目に触れさせたくない場合などはセッションを使う事も出来ます。

a.php

if( $post_mode == 'b.phpへ飛ぶ'){
header("Location: b.php");
exit;
}
session_start();
$_SESSION['atai'] = 'x'; // atai

??

b.php

session_start();
echo $_SESSION['atai']; // atai

http://jp.php.net/manual/ja/ref.session.php

関連質問


●質問をもっと探す●



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