一覧表示を実装するPHP開発基...LOGIN

一覧表示を実装するPHP開発基本チュートリアル

前章の手順に従い、ユーザー登録を正常に完了しました。

バックグラウンドでのユーザーリスト表示を作ってみましょう。実際の管理プロセスでは、バックエンドを通じてユーザーのパスワードとユーザー関連情報を個別に変更できます。

バックグラウンドでは、すべてのユーザーを表形式で表示する必要があります。これはユーザーリストです。


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 に代入されます。したがって、このループでは行と列の両方を表示できます。

   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. 編集と削除のコントロールを追加

  • 削除する場合、単一選択削除と複数選択削除に分けます。

  • 編集するときは、ユーザーを選択します

ページでの削除と編集を実現するために、前のステップのコードにいくつかの小さなことを追加しました。

具体的な実装プロセスについて推論するために実際のレンダリングを見てみましょう:

117.png

実装プロセスにはいくつかの重要なポイントがあります:

  • get を使用する必要があります。単一選択削除および編集時のメソッド ID を渡すことで、どのユーザーを編集または削除するかがわかります。

  • 複数の選択を削除する場合は、複数のユーザーを渡す必要があります。したがって、フォーム 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);


次のセクション
<?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);
コースウェア