URLパラメータを使いこなせているでしょうか?

サイトURLに付与されたパラメータで、パラメータ毎にWEBサービスの挙動を切り替える事ができます。文字通り関数の引数と同様に使う事ができるので、使いこなせると便利です。

PHPなどでサイトを作成する際には、当たり前に使用して、サイト・サービスを使用します。という事で、今回はURLパラメータを使用したPHPの実装例についてご紹介をしていきます。

URLパラメータって?

URLパラメータはサイトURLに付与できるパラメータの事で、クエリ文字列、URLリクエストパラメータ、URLクエリパラメータなどとも呼ばれます。

以下の例を見て下さい。

■URLパラメータが無い場合の例:

https://○○○○○.com/

■URLパラメータがある場合の例:

https://○○○○○.com/?param=1

この場合最後に付与された「param=1」がURLパラメータとなります。

複数付与する事もできて「&」で複数パラメータを追加できます。

■URLパラメータが複数ある場合の例:

https://○○○○○.com/?param1=1&param2=2

今の時点ではこの位を基本として押さえておけばOKです。これからPHPを使ってURLパラメータを使った実装や、挙動なども併せて説明していきます。

PHPでURLパラメータを実装

実際にURLパラメータを実装する流れを見ていきます。

■前提

賢威テンプレートを使用した2カラムのサイトを使います。

特別なコードは一切記述していないページです。

■目的

「URLパラメータに応じて画面上に別々のアウトプットを出す」という事をやってみたいと思います。

PHPのコードを書こう!

では実際にPHPのコードを書いていきます。

今回はPHPの記載箇所を2箇所に分けました。

・PHPコードの先頭部分

・HTML内に記載する部分

具体的に記載する内容を見ていきましょう。

PHPコード(先頭部分)

PHPコードの先頭部分で、パラメータの取得と判定を行います。

パラメータを取得する際は「$_GET[‘パラメータ名’]」という構文を使います。

判定処理ではパラメータが入っているか否か?という判定を行います。

■PHPコード(先頭部分)

■コードの説明

※定型文の様によく使われます。

①isset関数で値がパラメータの値が入っているかどうかを判定。

②パラメータの値が入っている場合は、パラメータを取得。

PHPコード(HTML内)

HTML内に記載するPHPコードでは、URLパラメータ毎に別々の文字をecho出力してみます。

判定処理自体は非常に単純なものになります。

これをHTMLのmainコンテンツの中に記載します。

■PHP(HTML内に記載するコード)

■コードの説明

1~5までのパラメータが入力された場合にechoする値を変更しています。

もしパラメータが入力されていない場合は、設定されていない旨の文言をechoします。

先頭の処理と冗長に思えるかもしれませんが、先頭ではパラメータの設定有無の確認を行うのが定番なので、この様な処理を行っています。

サイドバーのHTML

サイドバーに記載するHTMLにURLパラメータを付与したリンクを並べておきましょう。パラメータは5つ用意しましたので、パラメータ無しの場合+5つのパラメータ分の6つのリンクを設定しておきます。

■HTML(サイドバー)

作成したPHPのサンプルコードを実行!

実際に作成したPHPのサンプルコードを実行しましょう。

以下が実際に出力されるWEB画面のイメージです。

※文中でもお伝えした通り、賢威HTMLのテンプレートを使用していますが、特別なコードは記載していません。

■画面のイメージ

赤枠部分:echoで出力されたアウトプット

水色枠部分:サイトバーのHTMLリンク

では、それぞれのリンクを押した場合の挙動を確認しましょう。

今回は以下のリンクをクリックした場合の画面挙動を確認します。

■確認する内容

押すリンク 期待結果
テストリンク0 「パラメータが設定されていません。」と表示される。
テストリンク1 「テスト1の画面です。」と表示される。
テストリンク2 「テスト2の画面です。」と表示される。
テストリンク5 「テスト5の画面です。」と表示される。

リンク先のURLと、画面イメージを順番に載せますので確認してみて下さい。

テストリンク0を押した場合

■URL

■WEB画面

テストリンク1を押した場合

■URL&パラメータ

■画面

テストリンク2を押した場合

■URL&パラメータ

■画面

テストリンク5を押した場合

■URL&パラメータ

■画面

おまけ

今回のコードを実装する中で発生した誤り、エラーなどをナレッジ的に共有しておきます。

1.エラー「Notice: Undefined variable:」

未定義の変数を表示しようとした時にエラーとなります。

$valという変数の中身が無いのに「echo $val;」などとコードを実行するとこのエラーがでます。

2.パラメータ設定でありがちな間違い

パラメータ設定をHTMLに記載する際にありがちが間違いを載せておきます。

正しい:index.php?test_id=test1

誤り:index.php/?test_id=test1

3.CSSの再読み込みがされない

PHPで作成したサイトでCSSが読み込まれない。

細かい原因は不明なのですが、CSSの再読み込みがされない事があります。CSSにもパラメータを付与する事で解消されたので、詳しくご紹介されている方のページをご紹介しておきます。

http://weboook.blog22.fc2.com/blog-entry-367.html

まとめ

今回はURLパラメータに関する事と、URLパラメータ毎にPHPの処理を切り分けた場合の実装例をご紹介しました。

パラメータを取り込んだ後は、用途は様々ですが、同様のフレームを使用しながら、内容を切り替える場合などに使用すると非常に便利だと思います。

WEB系のサービスを作る場合には、基本部分になりますので、しっかりと押さえておきましょう。