前の章では、「データベース接続への 8 つのステップ」に従って、ユーザー登録を正常に完了しました。
バックグラウンドでのユーザー一覧表示を作ってみましょう。実際の管理プロセスでは、バックエンドを通じてユーザーのパスワードとユーザー関連情報を個別に変更できます。
バックグラウンドでは、すべてのユーザーを表形式で表示する必要があります。これがユーザーリストです。
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. 削除と編集を単一選択する場合、 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>';
6. データベース接続を閉じます
データベースを操作した後、データベース接続を閉じます。
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); ?>