So löschen Sie Zeilen in der Datenbank über ajax
Möchte ich eine Zeile löschen in meiner Datenbank nach der ID der Zeile ist. Jede Zeile hat eine löschen-Schaltfläche und der Schaltfläche platziert wird, indem Sie mithilfe eines Formulars in der php-Datei für jede Zeile. Ich habe eine javascript Funktion mit ajax zur Anzeige der Tabelle die ich wollte, aber ich habe jetzt eine andere Funktion, die ich verwenden möchten, um eine Zeile zu löschen anhand der ID.
Dem problem begegnete ich war, dass jedes mal, wenn ich auf die Schaltfläche löschen meine ganze Seite nur aktualisiert und der Eintrag ist immer noch da. Keine Hilfe?
P. S. ich bin neu in php, ajax und vor allem javascript und haben nicht gelernt, jQuery, so dass vorzugsweise Hilfe würde geschätzt, wenn die codes geschrieben in reines javascript, wie ich will, Lerne zuerst die basics.
Dies ist die Funktion in der javascript-löschen Sie die Zeile, die mit ajax xmlhttp-Objekt.
function deleteThis(){
var del = document.getElementById("delete");
var delRow = document.getElementById("deleteRow");
var page = "database.php";
var parameters = 'delete='+del+'&deleteRow='+delRow;
var xmlhttp = new XMLHttpRequest();
if(confirm('Are you sure you want to delete this?')==true){
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
//What should be in here?
}
}
xmlhttp.open("POST", page, true);
xmlhttp.send(parameters);
}
}
Diese sind die codes in der php Datei zum löschen der Zeile
//Delete Row
if(isset($_POST['delete'])){//java script function somewhere
$id = $_POST['deleteRow'];
$query_string = "delete from $table_info where user_id='$id'";
$result = @mysql_query($query_string);
echo "row deleted";
}else {
echo "Cannot delete row";
}
Dies ist die Schaltfläche in eine Tabelle zu setzen, einen delete-button für jede Zeile.
<!--Delete button-->
<td><form id="delete" method="post" action="">
<input type="hidden" name="deleteRow" value="<?php echo $row['user_id']; ?>"/>
<input type="submit" name="delete" value="Delete" id="delete" onclick="return deleteThis()"<td></form></tr>
InformationsquelleAutor hzq | 2015-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, haben Sie mehrere Probleme mit dem HTML. Ich würde dir empfehlen, indent Sie den code konsistent zu unterstützen, zeigen sich Probleme. Denken Sie auch daran, Sie zum schließen des tags. Zum Beispiel:
Auch, wenn Sie das
button
neben jeder Zeile auf der Seite Sie sollten nicht geben ihm einenid
.id
s müssen auf einer Seite eindeutig sein (nur eine). Vielleicht sollten Sie eineclass
statt?Zweite:
submit
Art der Eingabe wird wörtlich Einreichen seiner umschließenden form und aktualisieren Sie die Seite. Das ist sein Zweck. Wenn Sie möchten, die AJAX verwenden, die Sie nicht wollen, um dieses tatsächlich zu tun.Was ich vorschlagen würde ist eine andere Funktion in Eure javascript und verweisen auf das von der
onclick
einer<button>
eher als eine<input>
. Dann können Sie richtig verhindern, dass die Vorlage der Seite.ZB:
Und in Ihrem javascript:
Eine ID für die löschen-Taste*
Warum wollen Sie senden das element als POST-parameter? Sie konnte einfach nur senden "delete= "true" wie mein Beispiel, nicht? Ist
<?php echo $row['user_id']; ?>
die eindeutige ID, die Sie benötigen, um zu bestimmen, welcher Benutzer zu löschen? Wenn dem so ist, dann ist das geschickt alsdeleteRow
in der POST-Parameter.Die eindeutige ID ist, was ich brauche, um zu bestimmen, welcher Benutzer zu löschen. Ich bezog das auf meine PHP-Datei für die erste
IF
Anweisung, wie das war, was ich verwendet, um zu bestimmen, wenn die Schaltfläche geklickt wird jetzt. Wie Sie vorgeschlagen haben, ändern Sie den senden-Typ auf eine Schaltfläche geben Sie für die löschen-Schaltfläche, jetzt, wie kann ich feststellen, wenn auf die Schaltfläche geklickt wird für die if-Anweisung? Tun mir verzeihen, wenn die Antwort scheint klar, denn ich bin noch neu in der PHP-Sprache und Begriff es.Keine Sorge - wir lieben Neulinge! - Programmierung die Spaß macht! In Ihrem PHP:
if(isset($_POST['delete'])){
Sie sind die überprüfung des $_POST-Objekt um zu sehen, ob es enthält eine variable namensdelete
. In der javascript-Beispiel, das ich gab, haben Sie einen Blick auf die Linievar parameters = 'delete=true&deleteRow='+delRow;
. Finden Sie diedelete=true
? Dies ist die Einstellung der variabletrue
, so sollte es immer noch funktionieren. Ist es nicht funktioniert?InformationsquelleAutor Alex McMillan
Versuchen Sie dies:
Wird es vermeiden, senden Sie das Formular ab. Werfen Sie einen Blick: event.preventDefault() vs. return false
Hier ist ein snippet für Euch:
onclick="return deleteThis(); return false" <--- ich glaube, Sie brauchen, um return false in HTML zu vermeiden, die Seite zu aktualisieren.
Schon gemacht, es nicht verhindern, dass es erfrischend aber.
Ihre
return deleteThis()
führen, dass Ihrreturn false;
nie ausgeführt werden, da die Veranstaltung bereits wieder. Vielleicht meinst du:onclick="deleteThis(); return false;"
? Trotzdem gibt es viele Gründe,, dies nicht zu tun.Danke @alex-mcmillan. Habe ich vergessen zu entfernen, das erste zurück.
InformationsquelleAutor Jonathan Prates