PHPstep

トップページ > PHPで占いプログラムを作ろう >

第二章 PHPでウェブアプリケーションを作ろう

PHPで占いプログラムを作ろう ソース全文

PHPで占いプログラムを作ろう」のソース全文です。 生年月日の入力ページ(index.php)、 鑑定結果ページ(result.php)。
※最終完成形はこちら→占いプログラムサンプル

生年月日の入力ページ(index.php)

サンプルソース:index.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ねこ占い|生年月日を元にした占いプログラム</title> </head> <body> <h1>ねこ占い</h1> <p>※生年月日で占います</p> <form method="get" action="result.php"> <p> 生年月日:<br> <?php /******************************* 生年月日(年) *******************************/ //現在の西暦年を取得 $date = getdate(); $nowyear = $date["year"]; $startyear = $nowyear-100; echo '<label>'; echo '<select name="y">'; echo '<option value="">----</option>'; for($i=0; $i<=100; $i++) { $optionyear = $startyear + $i; echo '<option value="'.$optionyear.'">'.$optionyear.'</option>'; } echo '</select>年 '; echo '</label>'; /******************************* 生年月日(月) *******************************/ echo '<label>'; echo '<select name="m">'; echo '<option value="">--</option>'; for($i=1; $i<=12; $i++) { echo '<option value="'.$i.'">'.$i.'</option>'; } echo '</select>月 '; echo '</label>'; /******************************* 生年月日(日) *******************************/ echo '<label>'; echo '<select name="d">'; echo '<option value="">--</option>'; for($i=1; $i<=31; $i++) { echo '<option value="'.$i.'">'.$i.'</option>'; } echo '</select>日'; echo '</label>'; echo '</p>'; echo '<p><input type="submit" value="生年月日で占う!"></p>'; echo '</form>'; ?> </body> </html>

鑑定結果ページ(result.php)

サンプルソース:result.php
<?php //変数の受け取り extract($_GET); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ねこ占い鑑定結果|生年月日を元にした占いプログラム</title> </head> <body> <h1>ねこ占い</h1> <?php /******************************* 未入力チェック *******************************/ $errmsg = ''; //エラーメッセージを空にしておく if ($y == '') { $errmsg = $errmsg.'<p>生まれた年が入力されていません。</p>'; } if ($m == '') { $errmsg = $errmsg.'<p>生まれた月が入力されていません。</p>'; } if ($d == '') { $errmsg = $errmsg.'<p>生まれた日が入力されていません。</p>'; } /******************************* 年月日の妥当性チェック *******************************/ if ($errmsg == '') { if (!checkdate($m, $d, $y)) { $errmsg = $errmsg.'<p>入力された年月日は存在していません。</p>'; } } /******************************* 鑑定結果の表示 *******************************/ if ($errmsg != '') { //エラーメッセージが空ではない場合には、エラーメッセージを表示する echo $errmsg; echo '<p><a href="javascript:history.back();">前のページへ戻る</a></p>'; } else { echo '<p>'.$y.'年'.$m.'月'.$d.'日生まれ</p>'; /******************************* 星座の算出 *******************************/ //ユーザーの入力した内容を日付に変換 $birthday = date($y."/".$m."/".$d); if ((strtotime($birthday) >= strtotime($y.'/3/21')) && (strtotime($birthday) <= strtotime($y.'/4/19'))) { $result = 1; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>自分で考えて道を切り拓く自立した行動派</p>'; //おひつじ座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/4/20')) && (strtotime($birthday) <= strtotime($y.'/5/20'))) { $result = 2; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>のんびりゆったり忍耐強い穏健派</p>'; //おうし座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/5/21')) && (strtotime($birthday) <= strtotime($y.'/6/21'))) { $result = 3; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>知的好奇心旺盛で会話上手な人気者</p>'; //ふたご座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/6/22')) && (strtotime($birthday) <= strtotime($y.'/7/22'))) { $result = 4; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>愛情深く感性豊かなロマンチスト</p>'; //かに座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/7/23')) && (strtotime($birthday) <= strtotime($y.'/8/22'))) { $result = 5; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>名誉を守り努力を重ね王道をいく理想家</p>'; //しし座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/8/23')) && (strtotime($birthday) <= strtotime($y.'/9/22'))) { $result = 6; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>鋭い観察力と高い実務能力を持つ知性派</p>'; //おとめ座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/9/23')) && (strtotime($birthday) <= strtotime($y.'/10/23'))) { $result = 7; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>説得力あり自然に仲間が集まる平和主義者</p>'; //てんびん座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/10/24')) && (strtotime($birthday) <= strtotime($y.'/11/21'))) { $result = 8; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>控え目な態度の内側に闘志を秘めた情熱家</p>'; //さそり座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/11/22')) && (strtotime($birthday) <= strtotime($y.'/12/21'))) { $result = 9; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>即決即断まよわないこだわらない前向きな楽天家</p>'; //いて座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/12/22')) && (strtotime($birthday) <= strtotime($y.'/12/31'))) { $result = 10; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>リスクを慎重に避け責務を果たす堅実派</p>'; //やぎ座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/1/1')) && (strtotime($birthday) <= strtotime($y.'/1/19'))) { $result = 10; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>リスクを慎重に避け責務を果たす堅実派</p>'; //やぎ座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/1/20')) && (strtotime($birthday) <= strtotime($y.'/2/18'))) { $result = 11; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>目標のための努力と挑戦を厭わない野心家</p>'; //みずがめ座の性格 } else if ((strtotime($birthday) >= strtotime($y.'/2/19')) && (strtotime($birthday) <= strtotime($y.'/3/20'))) { $result = 12; echo '<p><img src="./images/result'.$result.'.png"></p>'; echo '<p>頼まれたら自己犠牲の精神で応える人情家</p>'; //うお座の性格 } else { $result = 0; echo '<p>判定でエラーが発生しました。</p>'; exit; } echo '<a href="./">もう一度、ねこ占う</a>'; } ?> </body> </html>

  1. 生年月日入力ページを新規作成する
  2. 生まれた月と生まれた日をループ処理にする
  3. 生年月日入力ページを完成させる
  4. 入力された年月日が妥当かどうかチェックする
  5. 占いプログラムを完成させる