0

私は新しい PHP プログラマーです。ログインしているユーザーのリストを表示できるユーザーログインページを作成しました。データベースの接続に PDO を使用しています。問題は、リストからユーザーを削除したい場合、最後に挿入されたユーザーのみを削除することです。私は何を間違っていますか?誰か助けてくれませんか...

ここに私のHTMLコードがあります:

<form action="" method="post">
    <?php
    foreach($rows as $row){
        $time = $row['time_out'];
        echo "
        <input type='text' value='$row[user_name]' name='user_name'>
        <input type='text' value=' $row[course]' name='course'>
        <input type='text' value=' $time'>
        <input type='submit' value='submit' name='submit'>
        <br>";
    }
    ?>
</form>

if(isset($_POST['submit'])){
    //get course
    $course = $_POST['course'];

    //get user_name
    $user_name = $_POST['user_name'];

    //deleting user from the database
    $database->delete($user_name);

    //Redirect to current page
    header('Location: tutor.php');
    exit;
}

ログインユーザーを取得するための私の方法は次のとおりです。

public function selectFromOnline()
    {
        $sql = $this->connection()->prepare("SELECT * FROM online");
        $sql->execute();
        return $sql->fetchAll();
    }

ユーザーを削除するための私の方法は次のとおりです。

public function delete($user_name)
    {
        $sql = $this->connection()->prepare("DELETE FROM online WHERE user_name = :user_name");
        $sql->bindValue(':user_name', $user_name, PDO::PARAM_STR);
        $sql->execute();
        return $sql;
    }
4

2 に答える 2

0

問題は、すべての入力が同じ名前であるため、POST 値を取得しようとしても何も得られないことです。別のアプローチを試してください。たぶん、リダイレクト アクションを実行する新しいフィールド (ハイパーリンク) を追加し、削除アクションのパラメーターを GET で送信できます。

例:

echo "
    <input type='text' value='$row[user_name]' name='user_name'>
    <input type='text' value=' $row[course]' name='course'>
    <input type='text' value=' $time'>
    <a href='Test.php?username=$row[user_name]&course=$row[course]'>delete</a>        
    <br>";

}

Test.php は、php ページの名前です。次に、GET 値を使用してデータベースにクエリを実行できます。

$_GET["username"]
于 2013-06-29T03:50:48.090 に答える
0

申し訳ありませんが、私はあなたのコードを理解していませんでしたが、私はあなたの問題を理解しました.

<?php
//Please set these veriables according to your values....
$host_name = "YOUR_DB_HOST_NAME";        //Normally 'localhost'
$password = "YOUR_PASSWORD_FOR_MYSQL";   //your password
$username = "YOUR_USERNAME_FOR_MYSQL";   //Normally Root
$database_name = "NAME_OF_YOUR_DATABASE";
$connect = mysqli_connect($host_name, $username, $password, $database_name);
if(!$connect){
  echo "Something is Wrong Please Check your host name, user name, password or     database name";
}
?>

<!--YOUR FORM STARTS----------------------------------------------------->
<!--DON'T FORGET TO SET ACTION TO #(ON THE SAME             PAGE)------------------------------------>
<form action="#" method="post">
    <?php
    foreach($rows as $row){
        $time = $row['time_out'];
        //Any Two Input Fields Cant have same Name So...
        echo "
        <input type='text' value='$row[user_name]' name='user_name_display'>
        <input type='text' value=' $row[course]' name='course'>
        <input type='text' value=' $time'>
        <input type='hidden' value='$row[user_name]' name='user_name'>
        <input type='submit' value='submit' name='submit'>
        <br>";
    }
    ?>
</form>
<!--YOUR FORM ENDS----------------------------------------------------->

<?PHP
if(isset($_POST['submit'])){
    //get course
    $course = $_POST['course'];

    //get user_name
    $user_name = $_POST['user_name'];

//Creating and running mysqli query
$delete = "DELETE FROM online WHERE user_name='$user_name'";
$query = mysqli_query($connect, $delete);

if($query){
  //Code to run when user is deleted
  header("Location: tutor.php")
}else{
  //Error to show when can't delete user
  echo "Sorry Can't delete the user";
}
}
?>

いくつかのセミコロンといくつかの小さなエラー (もしあれば) を忘れてください。

于 2013-06-29T03:51:33.637 に答える