忍者ブログ

おやっさんのWEBサイト制作への道

WEBサイト制作ど素人のおやっさんが、HTML、CSS、PHPなど学んでいく技術ブログです。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

PHP022(FizzBuzz問題をPHPで解いてみました。)

「1」から「100」まで数えていき、「3」の倍数は「Fizz」、「5」の倍数は「Buzz」と表示。「3」と「5」の公倍数は「Fizz Buzz」と表示する。らしいです。とりあえずやってみました。


<?php
for ($i = 1; $i < 101; $i++){
if(($i%3 == 0) && ($i%5 == 0)){
echo '<p><font color="#0000FF">['.$i.']Fizz Buzz</font></p>';
}elseif($i%3 == 0){
echo '<p><font color="#FF0000">['.$i.']Fizz</font></p>';
}elseif($i%5 == 0){
echo '<p><font color="#00FF00">['.$i.']Buzz</font></p>';
}else{
echo '<p>['.$i.']</p>';
}
}
?>

こんな感じで、たぶん、あってると思います。たぶんですけど。

PR

PHP021(自作お問い合わせフォーム)

とりあえず、お問い合わせフォーム的なものを、作ってみました。
これだとmaxlength効かないブラウザだと、わからないけど何か攻撃されるかもです。ソースを利用したり、改造して利用したりしても自由ですが、何かしら被害にあったときは自己責任でお願いします。



inquiry.html


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="" />
<title>お問い合わせフォーム</title>
</head>
<body>
<div id="container">
<div id="header">
<h1>TITLE</h1>
</div><!-- #header -->
<div id="contents">
<h2>★CONTACT</h2>
<form action="check_inquiry.php" method="POST">
<table>
<tr>
<th>
お名前<sapn>[必須]</sapn>
</th>
<td>><label>姓 <input type="text" name="fname" value="" maxlength="15" /></label>
<label>名 <input type="text" name="sname" value="" maxlength="15" /></label>
</td>
</tr>

<tr>
<th>
カナ<sapn>[必須]</sapn>
</th>
<td>
<label>セイ<input type="text" name="fkana" value="" maxlength="15" /></label>
<label>メイ<input type="text" name="skana" value="" maxlength="15" /></label>
</td>
</tr>

<tr>
<th>
生年月日<sapn>[必須]</sapn>
</th>
<td>
<label>西暦<input type="text" name="year" value="" maxlength="4" />年</label>
<label><input type="text" name="month" value="" maxlength="2" />月</label>
<label><input type="text" name="day" value="" maxlength="2" />日</label>

<tr>
<th>
性別[必須]
</th>
<td>
<label><input type="radio" name="sex" value="男性" checked="checked"/>男性</label>
<label><input type="radio" name="sex" value="女性" />女性</label>
</td>
</tr>

<tr>
<th>
都道府県
</th>
<td>
<select name="pref_name">
<option value="秘密">秘密</option>
<option value="北海道">北海道</option>
<option value="青森県">青森県</option>
<option value="岩手県">岩手県</option>
<option value="宮城県">宮城県</option>
<option value="秋田県">秋田県</option>
<option value="山形県">山形県</option>
<option value="福島県">福島県</option>
<option value="茨城県">茨城県</option>
<option value="栃木県">栃木県</option>
<option value="群馬県">群馬県</option>
<option value="埼玉県">埼玉県</option>
<option value="千葉県">千葉県</option>
<option value="東京都">東京都</option>
<option value="神奈川県">神奈川県</option>
<option value="新潟県">新潟県</option>
<option value="富山県">富山県</option>
<option value="石川県">石川県</option>
<option value="福井県">福井県</option>
<option value="山梨県">山梨県</option>
<option value="長野県">長野県</option>
<option value="岐阜県">岐阜県</option>
<option value="静岡県">静岡県</option>
<option value="愛知県">愛知県</option>
<option value="三重県">三重県</option>
<option value="滋賀県">滋賀県</option>
<option value="大阪府">大阪府</option>
<option value="兵庫県">兵庫県</option>
<option value="奈良県">奈良県</option>
<option value="和歌山県">和歌山県</option>
<option value="鳥取県">鳥取県</option>
<option value="島根県">島根県</option>
<option value="岡山県">岡山県</option>
<option value="広島県">広島県</option>
<option value="山口県">山口県</option>
<option value="徳島県">徳島県</option>
<option value="愛媛県">愛媛県</option>
<option value="高知県">高知県</option>
<option value="福岡県">福岡県</option>
<option value="佐賀県">佐賀県</option>
<option value="長崎県">長崎県</option>
<option value="熊本県">熊本県</option>
<option value="大分県">大分県</option>
<option value="宮崎県">宮崎県</option>
<option value="鹿児島県">鹿児島県</option>
<option value="沖縄県">沖縄県</option>
</select>
</td>
</tr>

<tr>
<th>
メールアドレス
</th>
<td>
<input type="text" name="mail" value="" maxlength="100" class="mail" /></td>
</tr>

<tr>
<th>
ご意見・ご感想[必須]
</th>
<td>
<textarea name="message" cols="80" rows="8" maxlength="500" class="message"></textarea>
</td>
</tr>
</table>
<div id="sendButton">
<input type="submit" value="内容の確認" />
</div>
</form>
</div><!-- #contents -->
</div><!-- #container -->
</body>
</html>


check_inquiry.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="" />
<title>お問い合わせフォーム</title>
<?php
$fname = $_POST['fname'];
$sname = $_POST['sname'];
$fkana = $_POST['fkana'];
$skana = $_POST['skana'];
$mail = $_POST['mail'];
$year = $_POST['year'];
$month = $_POST['month'];
$day = $_POST['day'];
$sex = $_POST['sex'];
$pref_name = $_POST['pref_name'];
$message = $_POST['message'];

// エラー用FLAGを未記入の場合1にする
$flag = 0;

// 姓の確認
if(empty($fname)) {
$flag = 1;
}

// 名の確認
if(empty($sname)) {
$flag = 1;
}

// セイの確認
mb_regex_encoding("UTF-8");

// セイが無記入の時
if(empty($fkana)){
$flag = 1;
}elseif

// セイが全角カタカナでない時
(!mb_ereg("^[ァ-ヶー]+$", $fkana)){
$flag = 1;
}

// メイの確認
mb_regex_encoding("UTF-8");

// メイが無記入の時
if(empty($skana)){
$flag = 1;
}elseif

// メイが全角カタカナでない時
(!mb_ereg("^[ァ-ヶー]+$", $skana)){
$flag = 1;
}

// 日付チェック
// 年が無記入の時
if(empty($year)){
$flag = 1;
}elseif
// 年が半角数字でない時
(isset($year)){
if(!preg_match('/^[0-9]+$/', $year)){
$flag = 1;
}
}

// 月が無記入の時
if(empty($month)){
$flag = 1;
}elseif
// 月が半角数字でない時
(isset($month)){
if(!preg_match('/^[0-9]+$/', $month)){
$flag = 1;
}
}

// 日が無記入の時
if(empty($day)){
$flag = 1;
}elseif
// 日が半角英数でない時
(isset($day)){
if(!preg_match('/^[0-9]+$/', $day)){
$flag = 1;
}
}

// 年月日が正しくない時
if(is_numeric($year) && is_numeric($month) && is_numeric($day)){
if(!checkdate($month,$day,$year)){
$flag = 1;
}else{
// 生年月日が正しい時
checkdate($month,$day,$year);
}
}

// ご意見・ご感想がない時
if(empty($message)){
$flag = 1;
}
?>
</head>
<body>
<div id="container">
<div id="header">
<h1>TITLE</h1>
</div><!-- #header -->
<div id="contents">
<h2>★CONTACT</h2>
<?php
if($flag == 1){
echo '<form action="check_inquiry.php" method="POST">
<input type="hidden" name="fname" value="'.$fname.'" />
<input type="hidden" name="sname" value="'.$sname.'" />
<input type="hidden" name="fkana" value="'.$fkana.'" />
<input type="hidden" name="skana" value="'.$skana.'" />
<input type="hidden" name="year" value="'.$year.'" />
<input type="hidden" name="month" value="'.$month.'" />
<input type="hidden" name="day" value="'.$day.'" />
<input type="hidden" name="mail" value="'.$mail.'" />
<input type="hidden" name="sex" value="'.$sex.'" />
<input type="hidden" name="pref_name" value="'.$pref_name.'" />
<input type="hidden" name="message" value="'.$message.'" />
<table border="1">
<tr>
<th>
お名前<sapn>[必須]</sapn>
</th>
<td>'; // 姓の確認
// 姓が空の時
if(empty($fname)){
echo '<span class="warning">※姓を入力してください。</span>';
echo '<label>姓 <input type="text" name="fname" size="7" value="'.htmlspecialchars($fname, ENT_QUOTES).'" maxlength="15" /></label>';
}elseif
// 姓が正しい時
(isset($fname)){
echo '<label>姓 <input type="text" name="fname" size="7" value="'.htmlspecialchars($fname, ENT_QUOTES).'" maxlength="15" /></label>';
}

// 名の確認
// 名が空の時
if(empty($sname)){
echo '<span class="warning">※名を入力してください。</span>';
echo '<label>名 <input type="text" name="sname" size="7" value="'.htmlspecialchars($sname, ENT_QUOTES).'" maxlength="15" /></label></td></tr>';
}elseif
// 名が正しい時
(isset($sname)){
echo '<label>名 <input type="text" name="fname" size="7" value="'.htmlspecialchars($sname, ENT_QUOTES).'" maxlength="15" /></label></td></tr>';
}
echo '<tr>
<th>
カナ<sapn>[必須]</sapn>
</th>
<td>';
// セイの確認
mb_regex_encoding("UTF-8");

// セイが無記入の時
if(empty($fkana)){
echo '<span class="warning">※セイを入力してください。</span>';
echo '<label>セイ<input type="text" name="fkana" size="7" value="'.htmlspecialchars($fkana, ENT_QUOTES).'" maxlength="15" /></label>';
}elseif
// セイが全角カタカナでない時
(!mb_ereg("^[ァ-ヶー]+$", $fkana)){
echo '<span class="warning">※セイを全角カタカナを入力してください。</span>';
echo '<label>セイ<input type="text" name="fkana" size="7" value="'.htmlspecialchars($fkana, ENT_QUOTES).'" maxlength="15" /></label>';
}elseif
// セイが全角カタカナの時
(mb_ereg("^[ァ-ヶー]+$", $fkana)){
echo '<label>セイ<input type="text" name="fkana" size="7" value="'.htmlspecialchars($fkana, ENT_QUOTES).'" maxlength="15" /></label>';
}

// メイの確認
mb_regex_encoding("UTF-8");

// メイが無記入の時
if(empty($skana)){
echo '<span class="warning">※メイを入力してください。</span>';
echo '<label>メイ<input type="text" name="skana" size="7" value="'.htmlspecialchars($skana, ENT_QUOTES).'" maxlength="15" /></label></td></tr>';
}elseif

// メイが全角カタカナでない時
(!mb_ereg("^[ァ-ヶー]+$", $skana)){
echo '<span class="warning">※メイを全角カタカナで入力してください。</span>';
echo '<label>メイ<input type="text" name="skana" size="7" value="'.htmlspecialchars($skana, ENT_QUOTES).'" maxlength="15" /></label></td></tr>';
}elseif
// メイが全角カタカナの時
(mb_ereg("^[ァ-ヶー]+$", $skana)){
echo '<label>メイ<input type="text" name="fkana" size="7" value="'.htmlspecialchars($skana, ENT_QUOTES).'" maxlength="15" /></label>';
}


echo '<tr>
<th>
生年月日<sapn>[必須]</sapn>
</th>
<td>';
// 日付チェック
// 年が無記入の時
if(empty($year)){
echo '<p class="warning">※生まれた年を入力してください。</p>';
}elseif
// 年が半角数字でない時
(isset($year)){
if(!preg_match('/^[0-9]+$/', $year)){
echo '<p class="warning">※生まれた年を半角数字で入力してください。</p>';
}
}

// 月が無記入の時
if(empty($month)){
echo '<p class="warning">※生まれた月を入力してください。</p>';
}elseif
// 月が半角数字でない時
(isset($month)){
if(!preg_match('/^[0-9]+$/', $month)){
echo '<p class="warning">※生まれた月を半角数字で入力してください。</p>';
}
}

// 日が無記入の時
if(empty($day)){
echo '<p class="warning">※生まれた日を入力してください。</p>';
}elseif
// 日が半角英数でない時
(isset($day)){
if(!preg_match('/^[0-9]+$/', $day)){
echo '<p class="warning">※生まれた日を半角数字で入力してください。</p>';
}
}

// 年月日が正しくない時
if(is_numeric($year) && is_numeric($month) && is_numeric($day)){
if(!checkdate($month,$day,$year)){
echo '<p class="warning">※正しい生年月日を入力してください。</p>';
}else{
// 生年月日が正しい時
checkdate($month,$day,$year);
}
}
echo '<label>西暦<input type="text" name="year" value="'.htmlspecialchars($year, ENT_QUOTES).'" maxlength="4" />年</label>
<label><input type="text" name="month" value="'.htmlspecialchars($month, ENT_QUOTES).'" maxlength="2" />月</label>
<label><input type="text" name="day" value="'.htmlspecialchars($day, ENT_QUOTES).'" maxlength="2" />日</label></td></tr>';

echo '<tr>
<th>
性別<sapn>[必須]</sapn>
</th>
<td>';
if($sex == '男性'){
echo '<label><input type="radio" name="sex" value="男性" checked="checked" />男性</label>
<label><input type="radio" name="sex" value="女性" />女性</label></td></tr>';
}elseif($sex == '女性'){
echo '<label><input type="radio" name="sex" value="男性" />男性</label>
<label><input type="radio" name="sex" value="女性" checked="checked" />女性</label></td></tr>';
}

echo '<tr>
<th>
都道府県
</th>
<td>
<select name="pref_name">
<option>'.htmlspecialchars($pref_name, ENT_QUOTES).'</option>
<option value="秘密">秘密</option>
<option value="北海道">北海道</option>
<option value="青森県">青森県</option>
<option value="岩手県">岩手県</option>
<option value="宮城県">宮城県</option>
<option value="秋田県">秋田県</option>
<option value="山形県">山形県</option>
<option value="福島県">福島県</option>
<option value="茨城県">茨城県</option>
<option value="栃木県">栃木県</option>
<option value="群馬県">群馬県</option>
<option value="埼玉県">埼玉県</option>
<option value="千葉県">千葉県</option>
<option value="東京都">東京都</option>
<option value="神奈川県">神奈川県</option>
<option value="新潟県">新潟県</option>
<option value="富山県">富山県</option>
<option value="石川県">石川県</option>
<option value="福井県">福井県</option>
<option value="山梨県">山梨県</option>
<option value="長野県">長野県</option>
<option value="岐阜県">岐阜県</option>
<option value="静岡県">静岡県</option>
<option value="愛知県">愛知県</option>
<option value="三重県">三重県</option>
<option value="滋賀県">滋賀県</option>
<option value="大阪府">大阪府</option>
<option value="兵庫県">兵庫県</option>
<option value="奈良県">奈良県</option>
<option value="和歌山県">和歌山県</option>
<option value="鳥取県">鳥取県</option>
<option value="島根県">島根県</option>
<option value="岡山県">岡山県</option>
<option value="広島県">広島県</option>
<option value="山口県">山口県</option>
<option value="徳島県">徳島県</option>
<option value="愛媛県">愛媛県</option>
<option value="高知県">高知県</option>
<option value="福岡県">福岡県</option>
<option value="佐賀県">佐賀県</option>
<option value="長崎県">長崎県</option>
<option value="熊本県">熊本県</option>
<option value="大分県">大分県</option>
<option value="宮崎県">宮崎県</option>
<option value="鹿児島県">鹿児島県</option>
<option value="沖縄県">沖縄県</option>
</select>
</td>
</th>

<tr>
<th>
メールアドレス
</th>
<td>
<input type="text" name="mail" value="'.htmlspecialchars($mail, ENT_QUOTES).'" class="mail" />
</td>
</tr>

<tr>
<th>
ご意見・ご感想<sapn>[必須]</sapn>
</th>
<td>';
// ご意見・ご感想が空の時
if(empty($message)){
echo '<p class="warning">※必須項目です。</p>';
echo '<textarea name="message" cols="60" rows="8" maxlength="500" class="message">'.htmlspecialchars($message, ENT_QUOTES).'</textarea>
</td>
</tr>';
}elseif
// ご意見・ご感想が書かれている時
(isset($message)){
echo '<textarea name="message" cols="60" rows="8" maxlength="500" class="message">'.htmlspecialchars($message, ENT_QUOTES).'</textarea>
</td>
</tr>';
}
echo '</table>
<div id="sendButton">
<input type="submit" value="内容の送信" />
</div>
</form> ';
}elseif
// エラーがない時
($flag == 0){
echo '<form action="send_inquiry.php" method="POST">
<input type="hidden" name="fname" value="'.$fname.'" />
<input type="hidden" name="sname" value="'.$sname.'" />
<input type="hidden" name="fkana" value="'.$fkana.'" />
<input type="hidden" name="skana" value="'.$skana.'" />
<input type="hidden" name="year" value="'.$year.'" />
<input type="hidden" name="month" value="'.$month.'" />
<input type="hidden" name="day" value="'.$day.'" />
<input type="hidden" name="mail" value="'.$mail.'" />
<input type="hidden" name="sex" value="'.$sex.'" />
<input type="hidden" name="pref_name" value="'.$pref_name.'" />
<input type="hidden" name="message" value="'.$message.'" />
<table border="1">
<tr>
<th>
お名前<sapn>[必須]</sapn>
</th>
<td>'
.htmlspecialchars($fname, ENT_QUOTES).' '.htmlspecialchars($fname, ENT_QUOTES).
'</td>
</tr>

<tr>
<th>
カナ<sapn>[必須]</sapn>
</th>
<td>'
.htmlspecialchars($fkana, ENT_QUOTES).' '. htmlspecialchars($skana, ENT_QUOTES).
'</td>
</tr>

<tr>
<th>
生年月日<sapn>[必須]</sapn>
</th>
<td>
西暦'.htmlspecialchars($year, ENT_QUOTES).'年'.htmlspecialchars($month, ENT_QUOTES).'月'.htmlspecialchars($day, ENT_QUOTES).'日
</td>
</tr>

<tr>
<th>
性別<sapn>[必須]</sapn>
</th>
<td>'
.htmlspecialchars($sex, ENT_QUOTES).
'</td>
</tr>

<tr>
<th>
都道府県
</th>
<td>'
.htmlspecialchars($pref_name, ENT_QUOTES).
'</td>
</tr>

<tr>
<th>
メールアドレス
</th>
<td>'
.htmlspecialchars($mail, ENT_QUOTES).
'</td>
</tr>

<tr>
<th>
ご意見・ご感想<sapn>[必須]</sapn>
</th>
<td>'
.nl2br(htmlspecialchars($message, ENT_QUOTES)).
'</td>
</tr>
</table>
<div id="sendButton">
<input type="submit" value="内容の送信" />
</div>
</form>';
}
?>
</div><!-- contents -->
</div><!-- #container -->
</body>
</html>


send_inquiry.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="" />
<title>お問い合わせフォーム</title>
</head>
<body>
<div id="container">
<div id="header">
<h1>TITLE</h1>
</div><!-- #header -->
<div id="contents">
<?php
// お問い合わせタイトル、詳細のセット
$fname = $_POST['fname'];
$sname = $_POST['sname'];
$fkana = $_POST['fkana'];
$skana = $_POST['skana'];
$mail = $_POST['mail'];
$year = $_POST['year'];
$month = $_POST['month'];
$day = $_POST['day'];
$sex = $_POST['sex'];
$pref_name = $_POST['pref_name'];
$message = $_POST['message'];

// エラー用FLAGを未記入の場合1にする
$flag = 0;

// 姓の確認
if(empty($fname)) {
echo '<p class="warning">※姓を入力してください。</p>';
$flag = 1;
}


// 姓の確認
if(empty($sname)) {
echo '<p class="warning">※名を入力してください。</p>';
$flag = 1;
}

// セイの確認
mb_regex_encoding("UTF-8");

// セイが無記入の時
if(empty($fkana)){
echo '<p class="warning">※セイを入力してください。</p>';
$flag = 1;
}elseif

// セイが全角カタカナでない時
(!mb_ereg("^[ァ-ヶー]+$", $fkana)){
echo '<p class="warning">※セイを全角カタカナで入力してください。</p>';
$flag = 1;
}

mb_regex_encoding("UTF-8");

// メイが無記入の時
if (empty($skana)){
echo '<p class="warning">※メイを入力してください。</p>';
$flag = 1;
}elseif

// メイが全角カタカナでない時
(!mb_ereg("^[ァ-ヶー]+$", $skana)){
echo '<p class="warning">※セイを全角カタカナで入力してください。</p>';
$flag = 1;
}


// 日付チェック
// 年が無記入の時
if(empty($year)){
echo '<p class="warning">※生まれた年を入力してください。</p>';
$flag = 1;
}elseif
// 年が半角数字でない時
(isset($year)){
if(!preg_match('/^[0-9]+$/', $year)){
echo '<p class="warning">※生まれた年を半角数字で入力してください。</p>';
$flag = 1;
}
}

// 月が無記入の時
if(empty($month)){
echo '<p class="warning">※生まれた月を入力してください。</p>';
$flag = 1;
}elseif
// 月が半角数字でない時
(isset($month)){
if(!preg_match('/^[0-9]+$/', $month)){
echo '<p class="warning">※生まれた月を半角数字で入力してください。</p>';
$flag = 1;
}
}

// 日が無記入の時
if(empty($day)){
echo '<p class="warning">※生まれた日を入力してください。</p>';
$flag = 1;
}elseif
// 日が半角英数でない時
(isset($day)){
if(!preg_match('/^[0-9]+$/', $day)){
echo '<p class="warning">※生まれた日を半角数字で入力してください。</p>';
$flag = 1;
}
}

// 年月日が正しくないとき。
if(is_numeric($year) && is_numeric($month) && is_numeric($day)){
if (!checkdate($month,$day,$year)){
echo '<p class="warning">※正しい生年月日を入力してください。</p>';
$flag = 1;
}else{
// 生年月日が正しい時
checkdate($month,$day,$year);
}
}

// ご意見・ご感想がない時
if(empty($message)){
echo '<p class="warning">※ご意見・ご感想を入力してください。</p>';
$flag = 1;
}

// FLAGが0の時
if($flag == 0){
// 日本語(UTF-8)の指定
mb_language('ja');
mb_internal_encoding('UTF-8');

// FROMアドレスの設定(自動送信<送信元のアドレス>)
$header = 'From: '.mb_encode_mimeheader('送信者名的なものを入力してください。')."<送信者のメールアドレス的なものを入力してください>\nCC:<なんかCCの人のメールアドレス的なものを入力してください。>";

$message = "【ご意見・ご感想】\n".$message."\n【名前】\n".$fname.' '.$sname."\n【カナ】\n".$fkana.' '.$skana."\n【メールアドレス】\n".$mail."\n【生年月日】\n".$year.'年'.$month.'月'.$day."日\n【性別】\n".$sex."\n【都道府県】\n".$pref_name;

// メール送信
$result = mb_send_mail("<送信先のメールアドレスを入力してください。>",'件名を入力してください。', $message, $header);

// メール送信の確認
if($result) {
// メール送信の成功
echo '<p>■送信しました。</p>';

}else{
// メール送信の失敗
echo '<p>■送信に失敗しました。</p>';
}
}
?>
</div><!-- #contents -->
</div><!-- #container -->
</body>
</html>


PHP020(会員制掲示板06 掲示板のデータを格納するテーブルの作成、ブラウザでの書き込みの閲覧まで)

書き込んだデータをデータベースに保存するテーブルを作ります。コマンドプロントを開いていつものごとく入力しましょう。


cd c:\xampp\mysql\bin(※ここのパスはXAMPPをインストールしたときデフォルトのままならこのパスです。)

mysql -u sample_user -p

sample_pass

use sample_db;

create table message_tb
(message_id int(8) primary key auto_increment,
message_title varchar(100),
message varchar(500),
user_name varchar(100),
entry_date timestamp);

describe message_tb;

↓次にinsert_message.phpを作ります。


<?php
// ログインチェック
require_once 'check_login_message.php';

// タイトル、メッセージ
$title = $_POST['title'];
$message = $_POST['message'];

// MySQLへの接続
$conn = mysql_connect('localhost','sample_user','sample_pass');

if($conn){
// データベースの選択
mysql_select_db('sample_db',$conn);
// データベースへ書き込むSQL文
$sql = 'INSERT INTO message_tb
(message_title,message,user_name)
VALUES
("'.$title.'","'.$message.'","'.$_SESSION['name'].'")';

// SQL文の実行
$query = mysql_query($sql,$conn);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>2京ちゃんねる</title>
</head>
<body>
<h1>しょぼい掲示板【2京ちゃんねる】</h1>
<h2>Login_user:<?php echo $_SESSION['name']; ?></h2>
<hr />
<a href='logout.php'>【ログアウト】</a>
<hr />
<h2>■掲示板メニュー</h2>
<ul>
<li><a href="menu_message.php">メニュー画面へ</a></li>
<li><a href="write_message.php">メッセージを書く</a></li>
<li><a href="show_message.php">メッセージを読む</a></li>
</ul>
<hr />
<h2>●メッセージを登録しました。</h2>
<hr />
</body>
</html>

これで掲示板に書き込めるようになりました。なにか書き込んでみてください。
何回か書き込んだら、コマンドプロントでuse sample_dbを表示させて


select * from message_tb;

↑と入力しましょう。

書き込み確認
↑で文字化けしてますが書き込んだメッセージがデータベースに保存されたことがわかります。


次はデータベースに書き込んだメッセージをブラウザで表示させる為のshow_message.phpを作ります。↓


<?php
// ログインチェック
require_once 'check_login_message.php';

// MySQLへの接続
$conn = mysql_connect('localhost','sample_user','sample_pass');

if($conn){
// データベースの選択
mysql_select_db('sample_db',$conn);
// データベースからの取り出しSQL文
$sql = 'SELECT message_id,message_title,message,user_name,entry_date FROM message_tb ORDER BY message_id';

// SQL文の実行
$query = mysql_query($sql,$conn);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<?php
require_once 'header.php';
?>
<ul>
<li><a href="menu_message.php">メニュー画面へ</a></li>
<li><a href="write_message.php">メッセージを書く</a></li>
<li><a href="show_message.php">メッセージを読む</a></li>
</ul>
<hr />
<h2>●メッセージ一覧</h2>
<table border="1">
<tr bgcolor="#cccccc">
<td>ID</td>
<td>タイトル</td>
<td>メッセージ</td>
<td>ユーザー</td>
<td>登録日</td>
</tr>
<?php
// データの取り出し
while($row=mysql_fetch_object($query)){
echo '<tr>';
echo '<td>'.$row->message_id.'</td>';
echo '<td>'.$row->message_title.'</td>';
echo '<td>'.nl2br($row->message).'</td>';
echo '<td>'.$row->user_name.'</td>';
echo '<td>'.$row->entry_date.'</td>';
echo '</tr>';
}
?>
</body>
</html>

↓これでブラウザ上で書き込んだデータを見れるようになりました。(※画像はクリックで拡大できます。)

書き込みの閲覧

PHP019(会員制掲示板05 テーブルの作成 require_once文,ヒアドキュメント,exit())

↓menu_message.phpを作ります。


// ログインチェック
require_once 'check_login_message.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<style type="text/css">
</style>
<title>2京ちゃんねる</title>
</head>
<body>
<?php
require_once 'header.php';
?>
<ul>
<li><a href="write_message.php">メッセージを書く</a></li>
<li><a href="show_message.php">メッセージを読む</a></li>
</ul>
</body>
</html>

require_once文

外部ファイルを読み込める的な感じの文です。ファイルがすでに読み込まれていないかチェックして未読み込みなら読み込みます。違うファイルで共通部分を一つの外部ファイルにまとめられます。
require once `パス`;
的な書き方です。

require once文で使う共通外部ファイルherder.phpを作ります。↓


<h1>しょぼい掲示板【2京ちゃんねる】</h1>
<h2>Login_user:<?php echo $_SESSION['name']; ?></h2>
<hr />
<a href='logout.php'>【ログアウト】</a>
<hr />
<h2/>■掲示板メニュー</h2>

↓次にcheck_login_message.phpを作ります。


<?php
// セッションの開始
session_start();

// ログインチェック
if($_SESSION['login'] != 'OK'){
// ログインしていないメッセージを表示する

echo <<<EOT
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>2京ちゃんねる</title>
</head>
<body>
<h1>しょぼい掲示板【2京ちゃんねる】</h1>
<h2>■ログインしてません。</h2>
<ul>
<li><a href="login.html">ログイン画面を開く</a></li>
</ul>
</body>
</html>
EOT;

// 終了
exit();
}
?>

ヒアドキュメント構文

長い文字列を表示したり、変数に代入したい時に使うと便利らしです。実感ないですが。
ヒアドキュメント
<<<は決まっている形です。くくくで覚えましょう。変数に代入する場合
$str = <<<EOT
長い文字列
EOT;
みたいな感じです。改行コードを含めて複数行の文字列を扱えます。変数も中で使えます。IDは何を使ってもよいですが、 EOT、EOF、EODなどが使われることが多いらしいです。


exit()

プログラムの終了です。
if(~){
exit();}
でifがtureならそれより下のプログラムは実行されません。exit;だけでもいけるらしいです。もしかしたらこの書き方も→exit(0);



↓次にwrite_message.phpを作ります。


<?php
// ログインチェック
require_once 'check_login_message.php';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>2京ちゃんねる</title>
</head>
<body>
<?php
require_once 'header.php';
?>
<ul>
<li><a href="menu_message.php">メニュー画面へ</a></li>
<li><a href="show_message.php">メッセージを読む</a></li>
</ul>
<hr />
<h2>●書き書き書き込みっ!!</h2>
<form action="insert_message.php" method="POST">
<p>
タイトル:<br />
<input type="text" name="title" maxlength="40" />
</p>
<p>
メッセージ:<br />
<textarea name="message" cols="70" rows="15" maxlength="500"></textarea>
</p>
<div id="sendButton">
<input type="submit" value="メッセージの登録" />
</form>
<hr />
</body>
</html>

↓menu_message.phpです(※画像はクリックで拡大できます。)


メニュー画面

↓write_message.phpです(※画像はクリックで拡大できます。)

書き込み画面

PHP018(会員制掲示板04 テーブルの作成)

今度はデータベースにuser_tbテーブルを作成します。コマンドプロント使って入力します。


cd c:\xampp\mysql\bin(※ここのパスはXAMPPをインストールしたときデフォルトのままならこのパスです。)
mysql -u sample_user -p

sample_pass

use sample_db;

create table user_tb
(user_id int(4) primary key auto_increment,
login_name varchar(30),
login_password varchar(30),
user_name varchar(100));

↓作成したテーブルを確認します。<\p>


describe user_tb;

↓続いてユーザーデーターを2件ほどテーブルに挿入します。



insert into user_tb(login_name,login_password,user_name)
values("yamada","password1","Taro Yamada");

insert into user_tb(login_name,login_password,user_name)
values("tanaka","password2","Hanako Tanaka");

insert intoとvaluesは決まっています。login_name,login_password,user_nameと"yamada","password1","Taro Yamada"とかは自分で決めます。順番通りにしないとダメです。

このままコマンドプロントで確認します。


select * from user_tb;

コマンドプロントログイン作成確認画面

↑こんな画面がでたら成功です。(※画像はクリックで拡大できます。)


カレンダー

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

フリーエリア

にほんブログ村 IT技術ブログ HTML/CSSへ にほんブログ村 IT技術ブログ PHPへ

最新コメント

[11/23 テスト]

プロフィール

HN:
おやっさん
性別:
非公開

バーコード

ブログ内検索

P R

忍者ツールズプロフィール

忍者ツールズプロフィールは終了しました

カウンター