- ベストアンサー
PHPのprint文の"と'の使用方法
- PHPのprint文で"と'を使用する方法を説明します。
- また、特定の問題点があります。1つ目は、$codeが空欄になることです。2つ目は、./input_arrival.phpが呼ばれず、ソースコードの再呼び出しが行われることです。
- $codeをinput_arrival.phpに渡す方法についても詳しく説明します。また、同じname属性を持つ複数のFORMが存在することについても触れます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>1. $codeが空欄になる。 そもそもこのソースに$codeが宣言されていませんので空になるのは 当たり前です。必要に応じて$codeを宣言してください。 >2. ./input_arrival.phpが呼ばれず、コードを書いているソース[search_code.php]が再度呼ばれます javascript上でシングルクォーテーションが競合していますね。 内側のシングルクォーテーションをエスケープする必要があります。 また、見る限りにおいてactionを書き換えている意味がわかりません。 普通にFORMタグの中にactionを書けばすみます。 >FORMは分かれていても同じname(=$code)が複数存在する >ことが許されるのか理解できていません。 FORMが異なれば同じnameを使った要素があってもPHP上では競合しません。 つまりサーバーに送られるデータはFORM単位なので、別のフォームで 設定されているものは常に無視されるからです。 またprintでだらだら書いていると視認性がわるいため理解度が あがらないのでしょう。 ヒアドキュメントを用いて以下のように書いてみてください。 <?php //仮データのセット $table3=array( array("data0-0","data0-1","data0-2","data0-3","data0-4") ,array("data1-0","data1-1","data1-2","data1-3","data1-4") ,array("data2-0","data2-1","data2-2","data2-3","data2-4") ,array("data3-0","data3-1","data3-2","data3-3","data3-4") ,array("data4-0","data4-1","data4-2","data4-3","data4-4") ); //$codeを設定 $code="code"; for ( $i = 0; $i < count($table3); $i++ ){ $tableStr.=<<<eof <TR> <FORM method='POST' action='./input_arrival.php'> <TD><input type="text" name="{$code}" value ="{$table3[$i][0]}"></TD> <TD>{$table3[$i][1]}</TD> <TD>{$table3[$i][2]}</TD> <TD>{$table3[$i][3]}</TD> <TD>{$table3[$i][4]}</TD> <TD><input type="submit" value="入庫登録"></TD> </FORM> </TR> eof; } $tableStr=<<<eof <table border> <TR> <TH>見出し0</TH> <TH>見出し1</TH> <TH>見出し2</TH> <TH>見出し3</TH> <TH>見出し4</TH> <TH>見出し5</TH> </TR> $tableStr </table> eof; print $tableStr; ?>
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
もはやPHPではなくJavascriptの問題なのでここでお答えするのはなんですが 以下のようにしてみるとわかると思います。 (わかりやすくするためあえてGETにしてあります。) <FORM method='GET'> <input type=text name='code' value = 'test'> <input type=submit value='入庫登録' onclick='this.form.action=\'./input_arrival.php\''> </FORM> 説明が足りずすみません。 「エスケープする」という言葉がわかりませんでしたね・・・ シングルクォーテーションのくくりの中に、シングルクォーテーションを つかうわけですから¥マークをつける必要があるわけです。
お礼
PHPから脱線させてしまって、申し訳ありません。 最後まで判りやすい解説ありがとうございました。m(__)m これでスッキリ解決しました。 codeでもinput_arrival.phpに数値渡せるんですね。 いつも$codeと書いていたんですが、この辺は、も う少し勉強しないといけないと思いました。 重ねて恐縮ですが、ありがとうございました。
お礼
判りやすい解説と、コードまで記述して頂きありがとうございます。m(__)m 今までヒアドキュメントを知りませんでした。 これでかなり見易くなります。 "や'に悩まされることがなくなります。 最後に1点だけ。 >内側のシングルクォーテーションをエスケープする必要があります。 敢えて、内部シングルクォーテーションの問題を回避させる 方法(書き方)はどのようにすれば宜しいのでしょうか?