- ベストアンサー
【PHP】 form でのデーターの渡しについて質問です。
次の form でのデーターの渡しの所で… <form name="form" action="<?php print $_SERVER['PHP_SELF'];?>"?bgo="($bgo+1)" method="POST"> …bgo に $bgo+1 を計算した結果数を代入したいのですが、上の記入では、form 前のPHPのところの $bgo = $_GET["bgo"]; 又は $bgo = $_REQUEST["bgo"];に渡しても、計算されてない様子なんですが どうしたら、bgo に $bgo+1 を計算した結果数を代入する事ができるのでしょうか?(記入方法・渡し方法) ようは、送信される度に、bgo に1・2・3…となる仕組みにしたいんです。 ちなみに、bgo=$bgo+1 としても、bgo には $bgo+1 の計算した結果数が代入されてませんでした。 結果、ログファイルには「1」となります。 ※ form 前のPHPのところで $bgo には if(!$bgo){$bgo=1;} としてあります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
基本的なことですが、 開始タグ:<?php 終了タグ:?> この間に囲まれている記述をPHPと判断します。 なので、 <?php print $_SERVER['PHP_SELF'];?> この部分だけPHPとして処理するので ?bgo="($bgo+1)" この部分はそのまま出力されているはずです。 回答ですが 1. <?php printf('%s?bgo=%d', $_SERVER['PHP_SELF'], $bgo+1);?> PHP側 $bgo = $_GET['bgo']; 2. <input type='hidden' name='bgo' value="<?php print $bgo+1; ?>"> PHP側 $bgo = $_POST['bgo']; あなたのやろうとしている方法は1になりますが正直オススメしません。$_SERVER['PHP_SELF']にクエリーが含まれているかどうかが分からないためです。どうしてもこの方法でやりたいならクエリーが含まれているかどうかの処理も必要になってきます。 まぁ特別な理由が無い限りhiddenに渡すのが一般的かと。
その他の回答 (1)
- Suzi
- ベストアンサー率38% (130/334)
>><form name="form" action="<?php print $_SERVER['PHP_SELF'];?>"?bgo="($bgo+1)" method="POST"> ($bgo+1)は、formの前で作ってあげたらどうでしょうか。 if(empty($bgo)) $bgo = '1'; else $bgo++; <form ・・・・ 自身がないのですが、 <form name="form" action="<?php print $_SERVER['PHP_SELF'];?>"?bgo="($bgo+1)" method="POST"> は合っているのでしょうか? <?php print "<form method=post action=\"". $_SERVER['PHP_SELF']. "?bgo=".$bgo. "\">"; ?> とか?
お礼
この度、ご回答下さって有り難う御座います。 私は、基本的な事に気づかず、PHPで成り立っていると誤解していました。 単に… <form name="form" action="<?php print $_SERVER['PHP_SELF'];?>"?bgo="($bgo+1)" method="POST"> とPHPで囲んでなかったので、そのまま出力してた事に気づいていませんでした…汗 ^^; ですので、Suziさんの書いたとおり、確かにPHPで囲めば出来ました。 今回、単純な事、基本的な事でお手数お掛けしまして、すみませんでしたと共に有り難う御座いました。
お礼
っあ!そうでした!お恥ずかしい話、私は、その基本な事を固定観念で忘れてました! >この間に囲まれている記述をPHPと判断します。 この事を忘れてました!私は頭が固い…汗 ^^; どうりで、そのまま出力されてたんですね。単純な事と言えばそれまでですが 私は、その単純な事、基本的な事に気づかず2日悩んでました…汗 ^^; 「あれ?おかしいな~?なんでだ?」な感じで。 今回、気づかせてくれた事に感謝します。その回答だけで十分答えとして成り立ちました。 この度は、基本的な事でお手数お掛けしまして、すみませんでしたと共の有り難う御座いました。