忍者ブログ

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

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

[PR]

×

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

PHP014(アンケートフォーム06 mysql_connect('データベースサーバー','ユーザー名','パスワード'),mysql_select_db('データベース名',リンクID),SQL文,mysql_query(SQL文,リンクID))

write_question_db.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" />
<title>アンケート</title>
</head>
<body>
<?php
// 購入日
$pdate = $_POST['pdate'];
// 平均購入額
$pprice = $_POST['pprice'];
// 評価
$star = $_POST['star'];
// 興味のある言語
for ($i =0; $i < 6; $i++) {
if (isset($_POST['lang'][$i])) {
$lang[$i] = $_POST['lang'][$i];
} else {
$lang[$i] = '';
}

// 1、0に変換
if ($lang[$i] == '') {
$lang[$i] = 0;
} else {
$lang[$i] = 1;
}
}
// 職業
$job = $_POST['job'];

// 日付チェック
// 全角から半角へ変換
$pdate = mb_convert_kana($pdate,'as','UTF-8');

// 「/」で分割
if (empty($pdate)) {
echo htmlspecialchars($pdate, ENT_QUOTES) . '(年月日を入力してください。)<br />';
} elseif (preg_match("/([0-9]{4})[-\/]+([0-9]{1,2})[-\/]+([0-9]{1,2})/", $pdate)) {
list($year,$month,$day) = explode('/',$pdate);
} else {
echo htmlspecialchars($pdate, ENT_QUOTES) . '(年月日を「/」で区切って下さい。)<br />';
}
// 日付チェック
if (isset($year,$month,$day)) {
checkdate($month,$day,$year);
}
// 数値チェック
// 全角から半角変換
$pprice = mb_convert_kana($pprice,'as','UTF-8');
// 数値チェック
if (!is_numeric($pprice)) $pprice = '';

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

if($conn) {
//データベースの選択
mysql_select_db('sample_db',$conn);
//データベースへの書き込みSQL文
$sql = 'INSERT INTO question_tb(purchase_date,purchase_price,star,lang_php,
lang_perl,lang_java,lang_cs,lang_cpp,lang_basic,job)
VALUES("'.$pdate.'",'.$pprice.','.$star.','.$lang[0].','.$lang[1].','.$lang[2].','.
$lang[3].','.$lang[4].','.$lang[5].',"'.$job.'")';

// SQL文の送信
//$query = mysql_query($sql, $conn);
if(mysql_query($sql, $conn)){
echo '<p>■アンケートを登録しました。</p>';
}else{
echo '<p>■アンケートを登録できませんでした。</p>>';
}
}else{
echo '<p>■MySQLに接続失敗しました。</p>';
}
?>
</body>
</html>

mysql_connect('データベースサーバー','ユーザー名','パスワード')

MySQLへの接続をする。関数です。MySQLとはデータベースサーバーのOS的なものだと思います。たぶん。ここでは
$conn = mysql_connect('localhost','sample_user','sample_pass');
と$connに代入します。これがリンクIDになります。
接続に失敗したらfalseを返します。


mysql_select_db('データベース名',リンクID)

データベースを選択します。


SQL文

データベースサーバーに命令をする文ですかね。たぶん、そんな感じです。言葉が足りずすいません。
INSERT文・・・データベースのテーブルへの書き込みです。
UPDATE文文・・・データベースのテーブルへの上書き(書き換え)ですかね?
DELETE文・・・データーベースのテーブル中のデータ削除です。たぶんです。
ここではINSERT文を使います。
$sql = 'INSERT(←※書き込みます。) INTO (←※question_tbの中に)question_tb(←※テーブル名)(purchase_date,purchase_price,star,lang_php,
lang_perl,lang_java,lang_cs,lang_cpp,lang_basic,job(←※カッコの中は全部フィールド名です))
VALUES(値)("'.$pdate.'",'.$pprice.','.$star.','.$lang[0].','.$lang[1].','.$lang[2].','.
$lang[3].','.$lang[4].','.$lang[5].',"'.$job.'"(←カッコの中は全部、値です。))';
$langシリーズは「0」か「1」が値になります。真偽値booleanのデータ型なので。
$pdateは「/」が入っているので文字列になります。データ型はvarcharです。なので「"」で囲みます。
他は整数です。データ型はintです。
フィールド名と値の順番は同じにしないと、だめです。値は
データベースに設定したデータ型のもの渡さないとだめです。
とりあえず、ここで$sql
にSQL文を代入しときます。


mysql_query(SQL文,リンクID)

MySQLクエリを送信する。この時、SQL文はデータベースサーバーで実行されます。クエリとは命令するとかそんな意味らしいです。


check_question.phpのformタグのaction属性をwrite_question_db.phpに書き変えます。

question.htmlからアンケートを送信しまくってください。↓(※画像はクリックで拡大できます。)

アンケートの登録画面

コマンドプロントでデータベースに接続してテーブルデータが書き込まれたか確認してみましょう。↓


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

mysql -u sample_user -p

sample_pass

use sample_db;

select * from question_tb;

↓データが書き込まれたのををこんな感じで確認できます。(※画像はクリックで確認できます。)

データベースの書き込みを確認画面

PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

カレンダー

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

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

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

カウンター