0

しばらくこれに取り組んでいましたが、行を削除した後もページをリロードできません。

行の削除は正常に機能していますが、ページをリロードした後にのみ表示されます。送信を押したときに読み取れるようにコードの一部を移動しましたが、うまくいきませんでした。何か案は ?

 <?php
mysql_connect("localhost", "root", "") or die(mysql_error()) ; 
mysql_select_db("booking") or die(mysql_error()) ;

$resultselect = mysql_query("SELECT * FROM test_mysql ") or die(mysql_error()); 
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
        <title>row delete</title> 
        <link rel="stylesheet" type="text/css" href="" /> 
    </head> 

    <body>
<?php 
    if(isset($_POST['done'])){
    $done = implode(',', $_POST['done']);
    $deletequery = "DELETE FROM test_mysql WHERE id IN ($done)";
    $resultdelete = mysql_query($deletequery) or die(mysql_error());
    }

    ?>

    <form method="post" action="">
    <?php while($row = mysql_fetch_array($resultselect)){?>
        <input type="checkbox" name="done[]" 
    id="<?php echo $row['id'] ?>"
    value="<?php echo $row['id'] ?>">
    <label for="<?php echo $row['id'] ?>">
    <?php echo $row['name'] . ' ' . $row['lastname']. ' '.$row['email']; ?>
    </label>
    <br />
    <?php } ?>
    <input type ="submit" value ="submit">
    </form>
    <?php 

    if($resultdelete) {
        echo 'Item(s) deleted from list.';
    }
    ?>

    <pre>
    <?php print_r($_POST) ?>
     </pre>
    </body>
</html>
4

2 に答える 2

2

あなたが提供したコードは、$resultselectこの部分が実行される前にどこかに設定されたアプリケーションコードのスニペットであるため、私は推測しています。

ここで重要な部分は、MySQL クエリの順序です。行の前に行をSELECTingしている場合は、実行時に削除された行が引き続き表示されますDELETEmysql_fetch_array()

SELECTクエリの後にクエリを移動するDELETEと、すべてうまくいくはずです。

于 2012-06-28T06:09:47.547 に答える
1

delete ステートメントの前のコード セクションで $row の結果セットを取得しているようです。$deletequery コードをページの上部に配置すると、適切なデータ レコードを削除し、新しい結果セットを取得して、それらをユーザーに表示できます。

どんなクエリがループにフィードしても

while($row = mysql_fetch_array($resultselect))
{
....
}

後に実行する必要があります

$resultdelete = mysql_query($deletequery) or die(mysql_error());

声明。

完全なコードを実行するための編集:

<?php
    mysql_connect("localhost", "root", "") or die(mysql_error()) ; 
    mysql_select_db("booking") or die(mysql_error()) ;

    if(isset($_POST['done']))
    {
        $done = implode(',', $_POST['done']);
        $deletequery = "DELETE FROM test_mysql WHERE id IN ($done)";
        $resultdelete = mysql_query($deletequery) or die(mysql_error());
    }
    $resultselect = mysql_query("SELECT * FROM test_mysql ") or die(mysql_error()); 
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <title>row delete</title> 
    <link rel="stylesheet" type="text/css" href="" /> 
    </head> 

    <body>
    <form method="post" action="">
    <?php while($row = mysql_fetch_array($resultselect)){?>
    <input type="checkbox" name="done[]" 
    id="<?php echo $row['id'] ?>"
    value="<?php echo $row['id'] ?>">
    <label for="<?php echo $row['id'] ?>">
    <?php echo $row['name'] . ' ' . $row['lastname']. ' '.$row['email']; ?>
    </label>
    <br />
    <?php } ?>
    <input type ="submit" value ="submit">
    </form>
    <?php 

    if($resultdelete) {
    echo 'Item(s) deleted from list.';
    }
    ?>

    <pre>
    <?php print_r($_POST) ?>
     </pre>
    </body>
</html>
于 2012-06-28T06:07:38.227 に答える