2017-03-31 7 views
-1

同じページに、データを削除したいかどうかを確認するフォームがあり、PHPコードがあります。今、私はデータベースからスーパーグローバルを使用して行を削除するが、私は問題を把握することはできません。常に「削除されません」とエコーします。また、ユーザーが削除しないことを選択した場合は、home.phpへのリダイレクトを実行したいと思います。同じページのフォームを持つデータベースから行を削除する

<body> 

<h2>Are you sure you want to delete the student?</h2> 
<form method="post" action="<?=$_SERVER['PHP_SELF']?>"> 
    <input type="submit" name="submit" value="YES" /> 
    <input type="submit" name="submit" value="NO" /> 
</form> 

<?php 

$fields = array('id', 'student', 'firstname', 'lastname', 'email'); 
$student= array(); 

foreach ($fields as $field) { 
$student[$field]=""; 
} 

if(isset($_POST['id'])) { 
    $id = htmlspecialchars($_POST['id']); 
} 
else if(isset($_GET['id'])) { 
    $id = htmlspecialchars($_GET['id']); 
} 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if(!empty($id)) { 

    include "inc_DBConnect.php"; 

    $SQLString = "DELETE FROM students WHERE id = '$id'"; 

    $SQLQueryResult = mysqli_query($DBConnection, $SQLString); 
    if($SQLQueryResult === FALSE) { 
     echo "<p>There was an error retrieving the record.<br />\n</p>"; 
    } else { 
     echo "<p>Student deleted</p>"; 
    } 
} else { 
    echo "NOT DELETED"; 
} 


} 

?> 
</body> 
+0

「POST」リクエストが行われていない可能性が高いためです。あなたが 'var_dump()'や 'print_r()'を使うことを妨げるものが何であるか分かりません。 –

+0

$ _SERVER ["REQUEST_METHOD"]のプリントを行います。変数idはどこから来ていますか?私はあなたのフォームでそれを見ることができないので。私はそれが隠されたフィールドか何かであると仮定しました – Akintunde007

+0

あなたのフォームには、その後に再利用しようとする "id"(varまたは入力)が表示されません... $ _POST ['id']や$ _GET [' id ']から来た? – OldPadawan

答えて

0

OR var_dump($_SERVER)かの前に、あなたの$_SERVER['REQUEST_METHOD']変数を印刷し、この配列に間違っているかどうか確認してみてください - 多分あなたのサーバーは、REQUEST_METHODキーを設定しないでください。

他の方法によって、あなたはまた、このようにあなたのコードで

if(count($_POST)){/*....*/}; 
0

ので、POSTリクエストでそれを取得するつもりはないだろうそこにはidフィールドが存在しないを試してみてください。

<body> 
<?php 
// check this too when your form is submitting 
// print_r($_SERVER); 
?> 
<h2>Are you sure you want to delete the student?</h2> 
<form method="post" action="<?=$_SERVER['PHP_SELF']?>"> 
    <input type="hidden" name="id" value="<?php echo $_GET['id']?>" /> 
    <input type="submit" name="submit" value="YES" /> 
    <input type="submit" name="submit" value="NO" /> 
</form> 

<?php 

$fields = array('id', 'student', 'firstname', 'lastname', 'email'); 
$student= array(); 

foreach ($fields as $field) { 
$student[$field]=""; 
} 

if(isset($_POST['id'])) { 
    $id = htmlspecialchars($_POST['id']); 
} 
else if(isset($_GET['id'])) { 
    $id = htmlspecialchars($_GET['id']); 
} 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if(!empty($id)) { 

    include "inc_DBConnect.php"; 

    $SQLString = "DELETE FROM students WHERE id = '$id'"; 

    $SQLQueryResult = mysqli_query($DBConnection, $SQLString); 
    if($SQLQueryResult === FALSE) { 
     echo "<p>There was an error retrieving the record.<br />\n</p>"; 
    } 
    else { 
     echo "<p>Student deleted</p>"; 
    } 
} 
else { 
    echo "NOT DELETED"; 
} 
} 

?> 
</body> 
+0

問題は、このコードがサーバー要求メソッド行を超えないことです。最初に見つけたことは、その行が返すものです。それはPOST、GETなどですか? – Akintunde007

関連する問題