[PHP-users 7294] Re: フォームの変数について

shojun kimura php-users@php.gr.jp
Tue, 7 May 2002 04:55:23 +0900 (JST)


> 最低限PHPのバージョンは書いておきましょうね。
php 4.1.x以上です

> $${"delete"}.$iがなにをあらわすかわかってプログラムを
書いてますか?

画面に値を出して見ると、delete0,delete1,,のような文字列
が出ます、
私がやりたいのは、delete0という名前の変数を扱うことです
ので、
岸田さんが、書いたように、${${"delete"}.$i}を
使って変数を判断すれば、よかったんですが、
この${${"delete"}.$i}がなかなか思いつかなかったので、
${"delete"}.$iで、やっていました。


> また、コーディング標準の違いの話かもしれませんが
>   <form action="submitmsg.php?id=<?=$id?>"
> method="post">
> とするより
>   <form action="submitmsg.php" method="post">
>   <input type="hidden" name="id" value="<?=$id?>">
> のほうが好きです。

こうするとsubmitmsg.phpの後ろに?xxx=xxx&yyy=yyy&...
のように長くならずに、すむわけですよね、
今度、使ってみます。

> 「順番に」ということは$iは配列かオブジェクトですか?
> そうでなければ、0かなにか単一の値しか入りません。

単一の値しか代入しません。
for($i = 0; $i < $n; $i++)
	echo "<input type=\"submit\" name=\"delete\"
value=\"delete$i\">";
のように、
FOR文で、0からテーブルのrowの数だけ、delete0,delete1
という風に、ボタンに名前をつける処理をしています

> でも疑問なんですが、どうしてこんなトリッキーなことする
んですか?

まだ、PHPをやって、1ヶ月くらいで、自分がやっていたこと が
トリッキーなことだったかどうかはわかりませんが、
何かを処理するとき、いろんな方法があると思いますが、
自分が思いついた方法がみんなが、普段、やらないことだから
、
トリッキー何でしょうか、、よくわかりませんが、
もっと、知識を増やして、一般的な方法を使えるようにしたほ
うが
よさそうです。

しかし、一般的な方法を使ってやっている処理がなぜかできな
いので、
どの変数の中身を確認すれば、もしくはどうしたら、いいんで
しょうか。

 $db = pg_connect($constr2);
 $sql = "select * from taikimsg where id = 'getUser()' and
msgstatus = 1";
 $res = pg_exec($db, $sql);
if($res && pg_numrows($res) > 0) 
{
	$n = pg_numrows($res);
	for($i = 0; $i < $n; $i++)
	{
		$recc = pg_fetch_array($res, $i);
		$msg_ = $recc["msg"]; <ーここで、msgというフィールド
が
					 テーブルの中にあるのに、
			  expecting `T_STRING'or `T_VARIABLE' or`T_NUM_STRING'
		    のような、エラーがでます、何を確認すればいいん
でしょうか
                echo <<<OPTION_
		<option value="<?=$msg_?>">$msg_</option>
		OPTION_;
	}
	echo "</select>\n";
}

また、、質問が多くてすいません。。

td("<input type=\"radio\" name=\"kyoka\"
value=\"kyoka$i\">", 70);
td("<input type=\"radio\" name=\"kyoka\"
value=\"kyohi$i\">", 70);

のように、ラジオボタンに2つとも、kyokaという名前をつけ
て、
if($kyoka == "kyoka".$i)とelseif($kyoka == "kyohi".$i)で
、
ラジオボタンが押されたらそれに関する処理をしたいんですが
、
$kyoka == "kyoka".$iのときには、処理をしますが、
$kyoka == "kyohi".$iのときには、処理をしません。
ちょっと、原因がつかめません。。
ヒントでもいいので、教えてもらえませんか。
よろしくお願いします。m(--)m

for($i = 0; $i < $n; $i++)
{
	$rec = pg_fetch_array($r, $i);
	if($kyoka == "kyoka".$i)
	{
	$sql = "update taikimsg set msgstatus = 1, sendtime2 =
date_part('epoch', now()::timestamp) where id =
'".$rec['id']."' and nankome = '$nankome'";
	$r_ = pg_exec($db, $sql);
	if($r_)
		$cnt1++;
	}
	elseif($kyoka == "kyohi".$i)
	{
	$sql = "update taikimsg set msgstatus = -1 sendtime2 =
date_part('epoch', now()::timestamp) where id =
'".$rec['id']."' and nankome = '$nankome'";
	$r_ = pg_exec($db, $sql);
	if($r_)
		$cnt2++;
	}
} // for

__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/