[PHP-users 12302] Re: ファイル名?hennsuu のようなものの代入の仕方

しょうなり [ml] php-users@php.gr.jp
Mon, 23 Dec 2002 11:39:28 +0900


しょうなりです。

読解力が足りませんでしたね。
てっきりあの問題かと思い込んでしまいました。

poq さんは書きました:
>河瀬さんのような、hogehoge.php?abcのようなタイプでも、case0、case2という
>ように書けば分岐出来そうですが、どう書けばいいのかわからないです。
>http://php.benscom.com/manual/ja/control-structures.switch.php
>複数の引数を使う事ができないとなると、
>キタムラさんが教えて下さった「hogehoge.php?xx=xx」といったものを
>使うざるを得ないのでしょうか?できるなら=は使わずにいきたいのですが、
>まずはキタムラさんのソースを参考に実践します。

= を使わずに処理を行いたいのであれば、河瀬さん、近藤@千葉さんが
指摘されている通り $_SERVER['QUERY_STRING'] を調べればいいですよ。

まずは print $_SERVER['QUERY_STRING']; とでもして
この変数になにが入っているのか調べてみましょう。

# 個人的には、あんまり難しいことは考えず、
# 「hogehoge.php?xx=xx」といったものを使うことをお勧めしたいんですが。


ちなみに = を使わないで複数の引数を使いたいと言う場合、
ご自身でデータ渡しの法則を作ればいいです。

例えば渡したいデータはすべて - で繋げて、
$FORM = split("-", $_SERVER['QUERY_STRING']);
とするとか。

ただ、セパレータに使っている文字を使いたい場合や、
マルチバイト文字を含ませたい時などに大変になるので、
やっぱりメリットはほとんどないと思います…。


>----------hogehoge.php------------
><?php
>if (! isset($_GET["page"])) { echo "ページが見つかりません。";}
>else { $mode = $_GET["page"];}
>if ($page == "dvd") {
> print("dvdです");
>}  
>if ($page == "unix") {
> print("unixです");
>}
>if ($page == "") {
> print("ページが見つかりません。");
>}
> else {}
>?>
>----------------------------------
>こうすると
>http://www.hoge.jp/hoge.php?page=dvd
>だと「dvdです」と出力され、
>http://www.hoge.jp/hoge.php?page=unix
>だと「unixです」と出力され、?以降、何も入れないと「ページが見つかりません。」
>となるようになりました。しかし、=のところまでで止めてしまうと
>ブラウザで表示時間がとてもかかるので、そのエラーの為にifの四つ目の処理を
>加えました。が、そうすると?までしか入力しなかった場合、
>ページが見つかりません。がダブルで表示されてしまいます。
>この場合はどのようにすれば重複せずエラー画面を表示する事ができるでしょうか?
>かなり試行錯誤しましたがうまく前に進みません...

このあたり、デバッグしてくださいという文章に読めます。
あまり歓迎されませんよ。
まずは評価したい変数を print して、期待した値が入っているかどうか、
また、どうすれば期待した値が入るのか、もっと思考錯誤することをお勧めします。

ちなみに個人的には print_r() を使うのがいいと思います。
http://www.php.net/manual/ja/function.print-r.php

<?php
 print_r($_GET);
?>
として、受け取った変数の中身を見てみましょう。


-- 
print <<<SIGNATURE
	しょうなり@信州 肥田昌也
	Email:     shounari@webappli.jp
	HomePage:  http://www.webappli.jp/ => JSlayout 評価版
SIGNATURE;