tableの中から選んだ職種を表示させます
変数を設定します
$job = '';//selectの中の値
$host = '';//データベースのホスト名またはIPアドレス
$username = '';//ユーザー名
$passwd = '';//パスワード
$dbname = '';//データベース名
//データベースの情報を渡して接続する値を$linkに代入する
$link = mysqli_connect($host, $username, $passwd, $dbname);
myspli_connectの "()" 内がデータベースの接続に必要な情報で、これを
渡すことで接続できます。
返り値はリンクIDで、接続したデータベースを特定するIDとなっています。
- emp_idは社員番号
- emp_nameは名前
- emp_tableはtable名
if($link) {
//文字化け防止
mysqli_set_charset($link, 'utf8');
//最初か全部選択を選んだ時
if($job === '' || $job === '全部選択') {
//実行する内容を$queryに代入する
$query = 'SELECT emp_id, emp_name, job, age FROM emp_table
ORDER BY emp_id';
//他の職種を選んだ時
} else {
//実行する内容を$queryに代入する
$query = 'SELECT emp_id, emp_name, job, age FROM emp_table
WHERE job = "'.$job.'" ORDER BY emp_id';
}
//社員番号順にtableから3つのカラムを取得する
$query = 'SELECT emp_id, emp_name, job, age FROM emp_table
ORDER BY emp_id ASC';
ORDER BYは順序を決めます。
- ASC・・・昇順
- DESC・・・降順
//社員番号順にtableから3つのカラムの中から選んだ職種を取得
$query = 'SELECT emp_id, emp_name, job, age FROM emp_table
WHERE job = "'.$job.'" ORDER BY emp_id';
WHERE 条件を決めます。
変数は文字列の中ではそのまま使えないので、このような記述となっています。
ちなみにこちらのほうが分かりやすいですね。
$query = "SELECT emp_id, emp_name, job, age FROM emp_table
WHERE job = '$job' ORDER BY emp_id";
クエリを実行する
$result = mysqli_query($link, $query);
//1行ずつ配列を取得する
while($row = mysqli_fetch_array($result)) {
//取得したデータを配列にする
$goods_data[] = $row;
}
mysqli_query()は、SELECTだった場合は選択されたデータが返ってくる。
UPDATE,DELETEだった場合はtrue,falseを返す。
mysqli_fetch_array()は、成功すると行の配列を、行がなくなればnull,
失敗するとfalseを返す。
mysqli_free_result($result);
mysqli_close($link);
mysqli_free_result()は、保存されているメモリを開放する
mysqli_query()で取得したデータを利用した場合すぐに開放しましょう。
mysqli_close()はデータベースから切断します。
##全てのコード
<?php
$job = '';
$host = '';
$username = '';
$passwd = '';
$dbname = '';
//データベースの情報を渡して接続する値を$linkに代入する
$link = mysqli_connect($host, $username, $passwd, $dbname);
if(isset($_GET['job'])=== true) {
$job = $_GET['job'];
}
if($link) {
//文字化け防止
mysqli_set_charset($link, 'utf8');
if($job === '' || $job === '全部選択') {
$query = 'SELECT emp_id, emp_name, job, age FROM emp_table
ORDER BY emp_id';
} else {
$query = "SELECT emp_id, emp_name, job, age FROM emp_table
WHERE job = '$job' ORDER BY emp_id";
}
//クエリを実行
$result = mysqli_query($link, $query);
//1行ずつ配列を取得する
while($row = mysqli_fetch_array($result)) {
$goods_data[] = $row;
// var_dump($row);
}
mysqli_free_result($result);
mysqli_close($link);
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>サンプル</title>
<style type="text/css">
table, td, th {
border: solid black 1px;
}
table {
width: 200px;
}
</style>
</head>
<body>
<p>表示する職種を選択してください。</p>
<form>
<select name="job">
<option>全部選択</option>
<option>manager</option>
<option>analyst</option>
<option>clerk</option>
</select>
<input type="submit" value="表示">
</form>
<table>
<tr>
<th>社員番号</th>
<th>名前</th>
<th>職種</th>
<th>年齢</th>
</tr>
<?php
foreach ($goods_data as $value) {
?>
<tr>
<td><?php print htmlspecialchars($value['emp_id'], ENT_QUOTES, 'UTF-8'); ?></td>
<td><?php print htmlspecialchars($value['emp_name'], ENT_QUOTES, 'UTF-8'); ?></td>
<td><?php print htmlspecialchars($value['job'], ENT_QUOTES, 'UTF-8'); ?></td>
<td><?php print htmlspecialchars($value['age'], ENT_QUOTES, 'UTF-8'); ?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>