2017-03-31 2 views
-1

Auf der gleichen Seite habe ich ein Formular, das den Benutzer fragt, ob er die Daten löschen möchte oder nicht, und ich habe den PHP-Code. Jetzt möchte ich eine Zeile aus der Datenbank mit Superglobals löschen, aber ich kann das Problem nicht herausfinden. Es gibt immer Echos "NICHT GELÖSCHT". Auch wenn der Benutzer wählt, nicht zu löschen, möchte ich eine Umleitung zu home.php durchführen.Löschen Zeile aus der Datenbank mit Formular auf der gleichen Seite

<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

am wahrscheinlichsten, weil Sie 'POST' Anfrage nicht tun. Ich bin mir nicht sicher, was Sie davon abhält, 'var_dump()' oder 'print_r()' zu benutzen und überprüfen Sie das zuerst selbst, anstatt hier etwas auszuarbeiten. –

+0

einen Ausdruck von $ _SERVER ["REQUEST_METHOD"]; und woher kommt auch die variable id? weil ich es nicht auf deiner Form sehen kann. Ich nehme an, es wäre ein verstecktes Feld oder etwas gewesen – Akintunde007

+0

Ihr Formular zeigt keine "ID" (var oder Eingabe), die Sie danach wieder verwenden möchten ... wo tun $ _POST ['id'] oder $ _GET [' Komm 'her? – OldPadawan

Antwort

0

Versuchen Sie, Ihre $_SERVER['REQUEST_METHOD'] Variable vor zu drucken, wenn

OR var_dump($_SERVER) und überprüfen, was in diesem Array ist falsch - vielleicht Ihrem Server eingerichtet keinen REQUEST_METHOD Schlüssel.

Durch andere Weise sollten Sie auch auf diese Weise versuchen

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

In Ihrem Code gibt es keine ID-Feld würde es so nicht auf POST-Anfrage bekommen würde.

<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

klickt. Das Problem besteht darin, dass dieser Code nicht über die Serveranforderungs-Methodenzeile hinausgeht. Als erstes muss herausgefunden werden, was diese Zeile zurückgibt. Ist es ein POST, GET etc – Akintunde007

Verwandte Themen