スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PHP DBからデータ取得し テーブルに表示させる

DBからデータを取得し、HTMLのテーブルに表示します。
通常のHTMLでテーブルを作成する場合、以下のような感じになります。

<table>
 <tr>
  <th>ID</th>
  <th>メーカー</th>
  <th>商品名</th>
  <th>価格</th>
 </tr>
 <tr>
 <td>1</td>
 <td>Panasonic</td>
 <td>DVDレコーダー</td>
 <td>59800</td>
 </tr>
</table>


これをDBから取得したデータから作成する場合、
以前にも学習したselect文で、取得し
テーブルの<TD>と</TD>の間に取得したデータを挿入していきます。
データを出力をループする事により、取得したデータ件数だけ行が追加されるようになります。
テーブル:shop_item
項目: ID,maker,item_name,priceの4項目。


コード記述例は以下の通り
DB接続部分は省略し、dbconnect.phpに実行させます。
dbconnect.phpの詳細は過去の記事を参照

<?php
require('dbconnect.php');

$recordset = mysql_query('select * from shop_item order by id asc');
?>

<html>



<body>

<table width="80%" border="1">
 <tr>
  <th scope="col">ID</th>
  <th scope="col">メーカー</th>
  <th scope="col">商品名</th>
  <th scope="col">価格</th>
 </tr>
 <?php
 while($table = mysql_fetch_assoc($recordset)) {
 ?>
 <tr>
  <td><?php print(htmlspecialchars($table['id'])); ?> </td>
  <td><?php print(htmlspecialchars($table['maker'])); ?> </td>
  <td><?php print(htmlspecialchars($table['item_name'])); ?> </td>
  <td><?php print(htmlspecialchars($table['price'])); ?> </td>
 </tr>
 <?php
 }
 ?>
 </table>
</body>
</html>

今回のポイントは、HTMLとPHPが入り混じっている点です。
少し見づらいですが、慣れれば大丈夫でしょう。
<>や()の誤入力で数などを間違えるとまったく想像もつかない動きになる可能性があるので注意が必要です。
<tr>から</tr>をwhile文でくくる事により、データがある分だけ行を追加できるようになります。

実行結果はこちら


20131111.jpg一覧表が表示されました。




スポンサーサイト

PHP フォームに入力した内容をテーブルに登録

今度はフォームに入力した内容をテーブルに登録できるようにします。

まずは、入力フォームを作成します。
フォーム部分のみを抜粋したコード例です。

input_form.html

<p>登録するユーザの情報を入力してください。</p><br />
<form action="insert.php" id="input_form" name="input_form" method="post">
  <dl>
  <dt>
    <label for="user_id">ID</label>
  </dt>
  <dd>
    <input name="user_id" type="text" id="user_id" size="10" maxlength="20" />
  </dd>
  <br />
  <dt>
    <label for="password">パスワード</label>
  </dt>
  <dd>
    <input name="password" type="text" id="password" size="35" maxlength="255" />
  </dd>
  <br />
  <input type="submit" value="登録する" />
</form>


続いて、入力フォームに入力した内容をテーブルに登録するコードです。
insert.php

<?php
require('dbconnect.php');

$sql = sprintf('INSERT INTO login_check SET id="%s", password="%s" ',
 mysql_real_escape_string($_POST['user_id']),
 mysql_real_escape_string($_POST['password'])
);
mysql_query($sql) or die(mysql_error());
?>

<html>
<head>
<title>登録</title>
</head>
<body><h1>ユーザ情報登録</h1>
<p>ユーザー情報をテーブルに登録しました</p>
</body>
</html>

今回のポイントは、2つあります。
フォームから受け取る際に使用する mysql_real_escape_string
SQL文に代入する際に使用する "%s"


1つ目のmysql_real_escape_stringは
入力された内容が攻撃目的であったり、誤った内容で入力された場合に
影響を受けない様、サニタイズ(無害化)する為に用意されているファンクションです。
データを受け取る際にまずサニタイズしてからSQL文に代入していきます。


2つ目はSQL文に代入する際に使用している
"%s"これは 文字列である事を意味しています。
ちなみに数値型の場合は、 %dとなります。


文字型の場合  id="%s" (stringのs)
数値型の場合 id=%d    (digitのd)


%sや%dは "sprintf" という命令に使用されます。





PHP DB接続プログラムを共通で使用する。

DBを使用するには、必ずDB接続コマンドを記述する必要があります。
しかし毎回同じコマンドを入力するのなら、共通化すべきですね。

connectのコマンドはdbconnect.phpとして作成し、
毎回このプログラムを呼ぶだけという形にします。



1.まず接続コマンドを記述したプログラムを作成します。
例) dbconect.php


<?php
mysql_connect('designcc.info','test_user','password123') or die(mysql_error());
mysql_select_db('login') or die(mysql_error());
mysql_query('SET NAMES UTF8');
?>


続いて、
接続を要するプログラムを記述する際にdbconnect.phpを呼ぶプログラムを作成します。


例)test.php

<?php
require('dbconnect.php');


$recordset = mysql_query('select * from user_info');
$data = mysql_fetch_assoc($recordset);
echo $data['id'];
?>


共通化すればDB接続のコマンドは require('dbconnect.php'); のみで良いのですっきりします。
しかもパスワード等の変更が発生した場合でも、基のdbconnect.phpを変更すれば
すべてのプログラムに反映される為、管理もしやくて一石二鳥です。

PHPでデータベースのデータを操作する(MySQL)

前回、DB接続ができるようになりましたので、いよいよDBを操作していこうと思います。


DBのテーブル設定等は省略します。

まず以下のようなテーブルを用意しました。
user_infoテーブル
idとpasswordという2つのフィールドが存在します。

まずは、user_infoテーブルにid、test_user password、testというデータを挿入してみようと思います。

<?php
mysql_connect('designcc.info','test_user','password123') or die(mysql_error());
mysql_select_db('login') or die(mysql_error());
mysql_query('SET NAMES UTF8');

mysql_query('insert into user_info set id="test_user",password="test" ') or die(mysql_error());
echo 'データ挿入完了';

?>

このプログラムを実行すると
以下の様に各フィールドにデータが挿入されました。

20131107.jpg



今度はデータを抽出してみましょう。
抽出は少し複雑になります。
まずselect文でDBからデータを取り出し、変数に格納します。
これだけではまだ使用できません。
その変数に格納されたデータをmysql_fetch_assocというファンクションを使用し
1件のデータを取り出す事でようやく使用できるデータとなります。

1.user_infoテーブルからすべてのデータを抽出
2.ファンクションを使用し、変数dataに格納
3.フィールド名を指定し表示

$recordset = mysql_query('select * from user_info');
$data = mysql_fetch_assoc($recordset);
echo $data['id'];


画面では

test_user

と一件のデータが表示されます。

この場合、データは最初の1件のみ表示されます。
$data = mysql_fetch_assoc($recordset);
echo $data['id'];
このコードを何度も記述すれば2件目、3件目が表示されます。
データがあるだけ表示させたい場合は、繰り返し文を使用します。

$recordset = mysql_query('select * from login_check');
while ($data = mysql_fetch_assoc($recordset)) {
echo $data['id'];
echo '<br>';
}


結果

test_user
guest
administrator
special_user

idに登録されているデータがすべて表示されました。






スポンサードリンク

最新記事

最新コメント

プロフィール

かっこいいデザイン、にぎやかなデザイン、きゅ~となデザイン、シンプルで洗練されたデザイン。
想像するだけで心がモワモワしてきます♪
いいデザインにいっぱい出会いますように★

好きな言葉は、旋律と色彩

ブログランキングに参加しています。こちらにも是非♪

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。