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へ飛ぶ\">";

?>

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/01/25 06:35:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント20pt

日本語を変数に使うことはあまりお勧めしませんが、それはさておき 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へ飛ぶ\">";

などは良いですか?

id:hirotow No.2

回答回数131ベストアンサー獲得回数10

ポイント20pt

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

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

答えは、フォームの送信先として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'];

としてください。

id:esecua No.3

回答回数510ベストアンサー獲得回数10

ポイント20pt

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

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.'を受け取りました!
';

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

id:SALINGER No.4

回答回数3454ベストアンサー獲得回数969

ポイント20pt

かなりおかしなコードですぞい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"];
?>
id:stephanie No.5

回答回数29ベストアンサー獲得回数2

ポイント20pt

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

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

  • id:kn1967
    まずは『何も動作しない』という点に関しての確認ですが、
    a.phpを表示したら、submitボタンを押すのではなく『ソースの表示(Internetexprorerなら表示→ソース)』を行ってみてください。
    その『ソース』に答えはあります。

    念のため聞いておきますが、PHPは初心者ということですがHTMLの基礎的なもの(今回であればHTMLフォーム)はご存知ですよね?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません