リスト表示
1. データベースへの接続、エラーの判断、文字セットの設定
接続、エラーの判断、文字セットの選択はすべて上記で説明しました。古いルールでは、最初のステップは mysqli_connect を使用してデータベースに接続することです。最初のセクションで述べたように、4 番目のパラメータにライブラリの選択を追加できます。後でデータベースを再度選択するために mysqli_select_db 関数を使用する必要はなくなりました。
返される型は接続リソースです。どの接続を操作しているかを決定するには、mysqli_errno、mysqli_error、mysqli_set_charset のリソースを渡す必要があります。
$conn = mysqli_connect('localhost', 'root', 'secret', 'book'); if (mysqli_errno($conn)) { mysqli_error($conn); exit; } mysqli_set_charset($conn, 'utf8');
2. SQL ステートメントを準備して送信します
クエリする必要があるのは、ユーザー ID、ユーザー名、時刻、IP です。そして、order by id を使用して降順に並べ替えます。
人間の考え方によれば、人々は一般に登録ユーザーの最新のバッチを見ることを好みます。 ID は自動的に増加します。つまり、ID が大きいほど、より多くの新規ユーザーが登録されます。したがって、SQL ステートメントを記述するときは、ID による順序を記述します。
$sql = "select id,username,createtime,createip from user order by id desc"; $result = mysqli_query($conn, $sql);
3. 判定結果
SQL文が正しく、結果変数$resultがtrueである限り、クエリの結果はtrueとなります。したがって、$result だけでなく、実装時にもう 1 つの判断ステップを追加する必要があります。さらに、クエリされる行数を決定します。
行数をクエリするには、mysqli_num_rows を使用できます。この関数では、$result クエリの結果変数が渡される必要があります。
結果がある場合はリストが表示されます。結果がない場合はプロンプトが生成されます。
コードスニペットは次のとおりです:
if($result && mysqli_num_rows($result)){ //显示列表代码段 }else{ //提示没有结果的代码段 }
4. データのループ表示
すべての結果をリストの形式で表示する必要があります。テーブルの行と列はデータテーブルの行と列と同じです。簡単に表示できます。
まずテーブルを宣言し、ループするたびに1行を出力します。結果を各列に表示します。
使用される関数は mysqli_fetch_assoc で、連想配列を返します。
この関数は結果セットを読み取り、一度後方に移動します。読み込み結果がない場合はブール値 false を返します。したがって、mysqli_fetch_assoc と連携するために while を選択します。
各ループの結果は $row に代入され、$row は連想配列になります。したがって、このループでは行と列の両方を表示できます。
echo '<table width="800" border="1">'; while ($row = mysqli_fetch_assoc($result)) { echo '<tr>'; echo '<td>' . $row['username'] . '</td>'; echo '<td>' . date('Y-m-d H:i:s', $row['createtime']) . '</td>'; echo '<td>' . long2ip($row['createip']) . '</td>'; echo '</tr>'; } echo '</table>';
5. 編集と削除のコントロールを追加します
1. 削除する場合、単一選択削除と複数選択削除に分けられます。
2. 編集時にユーザーを選択します
ページでの削除と編集を実現するために、前のステップのコードにいくつかの小さな点を追加しました。
具体的な実装プロセスについて推論するために、実際のレンダリングを見てみましょう。結果は次のとおりです:
1. 削除または編集を選択するときは、どのユーザーが編集または削除されるかを知るために、get メソッドを使用して ID を渡す必要があります。
2. 複数の選択を削除する場合は、複数のユーザーを渡す必要があります。したがって、フォーム form と post メソッドを使用して、このユーザー ID のバッチを送信できます。
単一選択削除の場合は、delete.php に従って ID と値を追加し、クリックすると削除リクエストを行うことができます。
echo '<td><a href="delete.php?id=' . $row['id'] . '">ユーザーを削除</a></td>';同様に、edit.php に ? を追加し、クリックすると、どのユーザーを編集する必要があるかがわかります。
echo '<td><a href="edit.php?id=' . $row['id'] . '">ユーザーの編集</a></td>';
と複数選択の削除では、HTML でチェックボックスを使用する必要があります。複数のユーザー ID を渡す場合は、名前の後に id[] を追加する必要があります。フォームを使用してテーブルをラップし、テーブルの外側に送信タグを追加して複数選択の削除を実現します。
<form action="delete.php" method="post"> echo '<td><input type="checkbox" name="id[]" value="' . $row['id'] . '" /></td>'; echo '<input type="submit" value="删除" />'; echo '</form>';
コードは次のとおりです:
echo '<form action="delete.php" method="post">'; echo '<table width="800" border="1">'; while ($row = mysqli_fetch_assoc($result)) { echo '<tr>'; echo '<td><input type="checkbox" name="id[]" value="' . $row['id'] . '" /></td>'; echo '<td>' . $row['username'] . '</td>'; echo '<td>' . date('Y-m-d H:i:s', $row['createtime']) . '</td>'; echo '<td>' . long2ip($row['createip']) . '</td>'; echo '<td><a href="edit.php?id=' . $row['id'] . '">编辑用户</a></td>'; echo '<td><a href="delete.php?id=' . $row['id'] . '">删除用户</a></td>'; echo '</tr>'; } echo '</table>'; echo '<input type="submit" value="删除" />'; echo '</form>';
7. データベース接続を閉じます
データベースを操作した後、データベース接続を閉じます。
mysqli_close($conn);
実装したユーザーリスト list.php コードは次のとおりです:
<?php $conn = mysqli_connect('localhost', 'root', 'secret', 'book'); if (mysqli_errno($conn)) { mysqli_error($conn); exit; } mysqli_set_charset($conn, 'utf8'); $sql = "select id,username,createtime,createip from user order by id desc"; $result = mysqli_query($conn, $sql); if ($result && mysqli_num_rows($result)) { echo '<table width="800" border="1">'; while ($row = mysqli_fetch_assoc($result)) { echo '<tr>'; echo '<td>' . $row['username'] . '</td>'; echo '<td>' . date('Y-m-d H:i:s', $row['createtime']) . '</td>'; echo '<td>' . long2ip($row['createip']) . '</td>'; echo '<td><a href="edit.php?id=' . $row['id'] . '">编辑用户</a></td>'; echo '<td><a href="delete.php?id=' . $row['id'] . '">删除用户</a></td>'; echo '</tr>'; } echo '</table>'; } else { echo '没有数据'; } mysqli_close($conn);