phpの簡単な知識(変数に値を入れる、If関数 程度)
ここでは、ソート(並び替え)で使う分のphp言語の簡単な知識を説明します。
phpは、HTML内に埋め込んで使うスクリプト(記述)です。具体的には、<?php と、 ?>で囲まれた範囲がphp本体に当たります。
つまり、phpの処理命令は、<?php ~ ?> で
囲んで作ります。
変数
よく数学などで使うアレです。一時的に変数に値を入れておくことで データのやり取りが楽になります。
変数に入れられる値は、数値だけでなく文字列も入れることができます。
phpの場合、数値か文字列かどっちを入れるかなど、とくに指定しなくても勝手に入れた段階で変数の方が理解してくれますので、便利です。
phpでは、変数の行頭に「$」を設けて、それが変数であることを示します。
例: $sort 、 $suuji
こんな感じで変数を書きます。文字部分は、例外はありますが自分の好きな文字を使って大丈夫です。
<?php $sortset = 100 ; ?>
こんな感じで記入すれば、$sortsetの中に100を代入したという内容になります。
If関数について
コンピュータ言語系では、定番の関数のIf関数です。 ExcelからC言語などで出てくるものと使い方は同じで、条件分岐に使うものです。
phpでは、よく使う形として、次のような2通りがあります。
例: <?php if() ;?> または、 <?php if() { } else { } ?>
この2つをどのような感じで使っていくかを 例を使って簡単に説明します。まずは<?php if() ;?>
の方を説明します。
例1: <?php if( $a>=100 ) echo “変数aは、100以上である” ;?>
<?php if() ;?> を使った例文です。echo関数は、文字列を出力する関数です。
これを実際にホームページのファイルの記述に加えた場合、$aの値によってソース記述表示が
変わります。$aが100未満の場合は、何もソースに記述は追加されません。$aが100以上だった場合
ソースには、 このphpの記述があった場所に、「変数aは、100以上である」という文字列の記述が追加されます。
続いて、<?php if() { } else { } ?>を使った場合の例です。
例2: <?php if( $a>=100 ) {echo “変数aは、100以上である”;}
else {echo “変数aは、100未満である”;} ?>
<?php if() { } else{ } ?> を使った例文です。echo関数は文字列を出力する関数です。
これを実際にホームページのファイルの記述に加えた場合、$aの値によってソース記述表示が変わります。$aが100未満の場合は、このphpの記述があった場所に、「変数aは、100未満である」という文字列の記述が追加されます。$aが100以上だった場合ソースには、 このphpの記述があった場所に、「変数aは、100以上である」という文字列の記述が追加されます。
基本は、コレくらいです。状況によって使い分けると良いと思います。
配列関数のarrayについて
最後に便利なarray関数についての説明をします。配列を使うとひとつの変数に、複数の値を割り当てることが出来ます。いろいろ使い方はありますが、今回は単純に複数の値を入れる方法を説明します。
以下のように配列は使っていきます。
<?php $tenki = array( ”晴れ” => ”hare.png” , ”雨” => ”ame.png”) ;?>
このように、変数を指定して、array関数を使って配列で値を入れます。
入れた値は、次のように変数を呼び出すことができます。
$tenki[”晴れ”]
上の用に指定すると、実際に表示される記述は、 ”hare.png” となります。
ソート(並び替え)の記述で使われているphpを理解する
それでは、ソート(並び替え)で使われているphpについて実際に読んでみましょう。
<form name="irekae" method="get" id="sort_form" class="sort_form"> <select name='narabi' onChange="document.forms['irekae'].submit()" > <option value="sort1" <?php if(!isset($_REQUEST['narabi']) || $_REQUEST['narabi'] == 'sort1') echo ' selected="selected"';?> >投稿日時が新しい順</option> <option value="sort2" <?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort2') echo ' selected="selected"';?> >投稿日時が古い順</option> <option value="sort3" <?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort3') echo ' selected="selected"';?> >五十音順(あ~わ)</option> <option value="sort4" <?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort4') echo ' selected="selected"';?> >五十音順(わ~あ)</option> <option value="sort5" <?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort5') echo ' selected="selected"';?> >アクセス数の多い順</option> <option value="sort6" <?php if(isset($_REQUEST['narabi']) && $_REQUEST['narabi'] == 'sort6') echo ' selected="selected"';?> >アクセス数の少ない順</option> </select> </form> <?php $sortset = $_GET['narabi']; ?> <?php $sortall = array( "sort1" => 'order=DESC&posts_per_page=10&paged=', "sort2" => 'order=ASC&posts_per_page=10&paged=', "sort3" => 'order=ASC&orderby=meta_value&meta_key=furikana&posts_per_page=10&paged=', "sort4" => 'order=DESC&orderby=meta_value&meta_key=furikana&posts_per_page=10&paged=', "sort5" => 'order=DESC&orderby=meta_value_num&meta_key=views&posts_per_page=10&paged=', "sort6" => 'order=ASC&orderby=meta_value_num&meta_key=views&posts_per_page=10&paged=' ); ?> <?php if($sortset != '') { $sort = $sortall[$sortset]; } else { $sort = $sortall["sort1"];} ?> <?php query_posts($sort . $paged); ?>
かなり長い記述なので、ややこしいです。ひとつひとつ順番に読んでいきましょう。
まずは、4行目の記述から読んでいきます。
<?php if(!isset($_REQUEST[‘narabi’]) || $_REQUEST[‘narabi’] == ‘sort1’) echo ‘ selected=”selected”‘
;?>
文章が長くなっていますのでややこしいですが これは、<?php if() ;?> を使った記述です。
<?php if(条件1) echo’条件2’;?>
となっており、「条件1を満たしたら条件2が記述される」という内容です。
!isset($_REQUEST[‘narabi’]) || $_REQUEST[‘narabi’] == ‘sort1’を満たしたらselected=”selected”
が記入される という 意味になりますね。
条件1が少し複雑ですが、分かってしまうとなんでもないです。
isset() 変数を調べる関数です。内部の変数の中身が空(null)でなければ、True、
空だったらFalseを返す
$_REQUEST スーパーグローバル変数 GET変数orPOST変数と同じ値のデータが入ってる
$_GET スーパーグローバル変数 入力フォームで選択した値を入れる変数(URLに格納)
$_POST スーパーグローバル変数 入力フォームで選択した値を入れる変数
条件1の内容は、次のようになります。
narabi入力フォームで受け取った変数の値が空の時 または、変数の中身が’sort1’の時
この条件が満たされた時、selected=”selected”が記入されます。
この記述が書かれている箇所のソースは、実際には以下のように記入されます。
条件1を満たす時
<option value=”sort1″ selected=”selected”>投稿日時が新しい順</option>
条件1を満たせない時
<option value=”sort1″>投稿日時が新しい順</option>
selected=”selected” のパラメータを入れるとそのオプションが初期に表示されます。
7行目、10行目、13行目、16行目、19行目も似たような内容です。
例えば7行目では条件1の内容は、次のようになります。
narabi入力フォームで受け取った変数に何かの値が入っており、変数の中身が’sort2’の時
この条件が満たされた時、selected=”selected”が記入されます。
10行目~19行目も同じで、違いは「変数の中身の内容のみです。」
つまり、簡単に言いますと ドロップダウンメニューでリストを選択するごとに、selected=”selected”
を選択したものにあわせるというのが、ココでのphpの記述の内容となっています。
続いて説明していきます。まずは、23行目です。
<?php $sortset = $_GET[‘narabi’];?>
23行目は、変数に値を入れています。
$sortsetにnarabi入力フォームで選択された値が入れられます。
例えば、ドロップダウンメニューで「投稿日時が古い順」 を選択されると$sortsetに入る値は、”sort2″、
「五十音順(わ~あ)」 を選択されると$sortsetに入る値は、”sort4″ という風になります。
24~31行目は、$sortallに配列を使って文字列を記録しています。このように記録することで、
$sortall[$sortset]とやると、$sortsetの内容で、望む内容の記述が配列から呼び出せます。
例えば、ドロップダウンメニューで「投稿日時が古い順」 を選択すると、$sortsetに入る値は、”sort2″、
そうすると、 $sortall[“sort2”]となりますので、’order=ASC&posts_per_page=10&paged=’という
内容が 呼び出されます。
33~36行目が最後のphpの記述です。ココも簡単なIf文です。
<?php if($sortset != ”) {$sort = $sortall[$sortset];} else {$sort = $sortall[“sort1”];}?>
ですので、 <?php if(条件1) {結果1;} else {結果2;}?> という内容になり、
「条件1ならば、結果1、それ以外の場合は、結果2となる」という内容で読めます。
コレに当てはめると、「$sortsetの値が空でない時は、$sort = $sortall[$sortset]、それ以外は、
$sort = $sortall[“sort1”]とする」という記述の内容となります。
長くなりましたが、phpの記述で行なっていることは、簡単にいいますと、
「ドロップダウンメニューで選んだモノによって、$sortの中の値を変化させています。」
この$sortは、38行目の<?php query_posts($sort . $paged);?>にて、値をわたす
役割の変数となっています。 query_posts はWordPressでの記事の順番を変えるタグですので
$sortの中身が変わるとquery_posts に渡される内容が変わり、その結果、記事の順番が変わる
という流れとなっています。
以上で簡単ですがphpの説明は終了です。それでは、ソート(並び替え)の記事で
実際にソート(並び替え)を作ってみてください。
この記事へのコメント
【コメントの投稿の仕方について】
このサイトでは、「Disqus」と呼ばれるコメント機能を使っています。
ツイッターやフェイスブックなどにアカウントをお持ちの方は、ログインすることで
自分の各プロフィールでコメントすることが出来ます。
なんのアカウントもない人もメールアドレスさえ入力すればコメントできます。
(入力したメアドはコメント投稿には表示されません。)
また、コメント欄には画像を張ることも出来ます。
なにか書いていただけると管理人が嬉しがります。