Fehler bim löschen

Snowowl

Erfahrenes Mitglied
Hi,
ich habe ein Gästebuch und will die Einträge löschen, wenn man auf den link Löschen klickt. Das klappt auch alles gut, aber auch wenn man auf abbrechen klcikt, löscht er den eintrag? Warum?
PHP:
 if(isset($_POST['id']))
{
    $del_id = $_POST['id'];
    $meta = "<meta http-equiv=refresh content='0; URL=/buch'>";
    $del_eintrag = "DELETE FROM guestbook WHERE guestbook_ID=$del_id LIMIT 1";
    $del_query = mysql_query($del_eintrag);
    echo "
        <script language=\"JavaScript\">
            if(window.confirm(\"Eintrag $del_id wirklich löschen?\")) {
                var ok = \"Der Eintrag $del_id wurde erfolgreich gelöscht!\";
                document.write(\" $del_query \");
                alert(ok);
                document.write(\" $meta \");
        } else { 
            document.write(\" $meta \");
        }
    </script>
    ";
}

Danke schonmal für eure Hilfe,
Gruß Snowowl
 
Mir kommt das ganze etwas konfus vor.
Die Bestaetigung mittels JavaScript soll also dafuer sorgen, dass etwas geloescht wird.
Jedoch frage ich mich wie JS das beeinflussen soll, denn PHP wird ja bereits auf dem Server ausgefuehrt.
$del_query enthaelt ja auch nicht den Befehl, sondern das Ergebnis der Funktion mysql_query() welche ausgefuehrt wird bevor der User ueberhaupt die Wahl hat ob er wirklich loeschen will oder doch lieber abbricht.
Geloescht wird also in jedem Fall, und das, wie gesagt, bevor JavaScript ueberhaupt den Hauch einer Chance hat aktiv zu werden.
 
Hi,
und wie soll ich es dann machen, weil ich will halt dieses JS fenster mit OK und ABRECHEN. Wie mache ich dass dann?
Gruß,
Snowowl
 
Moeglicherweise liesse sich diese Abfrage an das Absenden des Formulars koppeln und somit dann verhindern, dass der User ueberhaupt auf diese Seite geleitet wird wenn er nicht wirklich loeschen will.
Oder aber, dass erst noch eine Seite kommt mit der Abfrage und dann, nach nochmaligem Reload, geloescht wird.
Damit koennte man dann sogar auf JavaScript verzichten.
 
Hi,
könntest du mir mal ein bsp. schicken? Ich stehe nämlcih total auf dem Schlauch! :(
Übrings, ich habe statt dem Submit Button dieses hier:
PHP:
<a href=\"javascript:document.del$id.submit()\">Löschen</a>
Gruß,
Snowowl
 
Ich hab von JavaScript so gut wie keine Ahnung.
Ich meine mich zu erinnern, dass man halt den Versand von Formularen und Links irgendwie verhindern kann. Aber frag mich nicht wie.

Ich glaub ich schieb den Thread doch mal rueber zum Java-Script-Forum.
Wir konnten ja hier zumindest schonmal eingrenzen, dass es ein Java-Script-Problem ist.
 
Komisch ich hatte schon ewig vorher auf diesen Thread geantwortet und dann war er auf einmal gelöscht. Dann "BAAM" taucht er weider auf. Ich schätze mal der Thread wurde gelöscht und dann der ursprüngliche aus dem php-Forum hierher verschoben.

Das nächste Mal bitte genauere Beschreibung und mehr Code. Deine Erklärungen bezüglich deines Problems sind mehr als dürftig und das Problem lässt sich auch nicht aus dem wenigen Code erschließen, den du gepostet hast. Wie mein Vorredner schon sagte "etwas konfus" (obwohl das ja eher meine Spezialität sein sollte).

Daher eine andere Lösung:
Also rein vom Prinzip her rufst du mit Javascript ein php-Script auf, welches dir dann den Eintrag aus der Database löscht. Dafür gibt es viele Möglichkeiten. Ich halte diese für die beste:
HTML:
<script type="text/javascript"><!--
     function loadScript(url) {
     	skript=document.createElement('SCRIPT');
     	skript.setAttribute('src',url);
     	document.getElementsByTagName('BODY')[0].appendChild(skript);
     }
     
     function delEntry(entry) {
     	if (confirm('Wollen sie'+ entry +'wirklich löschen?')) 
     		loadScript('http://www.beispiel.de/guestbook/delEntry.php?beitrag='+entry);
     	return false;
     }
     //
     --></script>
     
 <input value="Beitrag1 löschen" onclick="return delEntry('Beitrag1')" />
Zur Erklärung: Die Funktion loadScript() läd das php-Script delEntry.php und übergibt ihm einen Get-Variable mit dem Wert "Beitrag1". Diese Get-Variable, kannst du dann natürlich im Script auslesen, den entsprechenden Beitrag aus deiner Datenbank löschen und wenn es keinen mysqlerror gab dann ein echo "alert('Beitrag gelöscht!');"; zur Bestätigung schreiben.

Und nun etwas in Sache des Forums:
Bitte kein PHP im Javascript-Forum!
Siehe dazu: http://www.tutorials.de/tutorials215197.html#post1138237

Es bricht dir kein Zacken aus der Krone, wenn du die Browserausgabe (also dass, was im hübschen Fenster dienes Browsers steht, dass auftaucht wenn du in ihm auf irgentwas mit Quelltext klickst nachdem du in ihm die Betreffende Seite aufgeufen hast) postest.
Php ist einfach nur hinderlich, wenn es sich wirklich um ein Javascript-Problem handelt und alles andere gehört nicht ins Javascript-Board. Es ist deswegen hinderlich, weil erstens längst nich alle Javascripter auch php können, wie auch nicht alle phpler JS können und zweitens, weil längst nicht alle die Lust haben sich erst Gedanken darüber zu machen, was der php-Code genau tut bevor sie zum eigentlichen Problem vordringen können.

Bitte beherzige das in Zukunft.
 
Zuletzt bearbeitet:
Voll Cool - Danke ;)

Ich hab zwar die Frage nicht gestellt - konnte aber deinen Lösungsansatz super gebrauchen für meine skripte.
früher hab ich immer ein kleines Fenster aufgerufen um " php - Löschskript" auszuführen - der sich dann automatisch schließen sollte - war irgendwie blöd.

Mit einfach Skript laden ist ja praktisch
 
Wenn das php-Script keine Rueckmeldung gibt (weil es an der Seite, welche es aufruft nichts aendern soll), dann genuegt auch einfach ein
Code:
var loaderObject = new Image();
 loaderObject.src='http://www.beispiel.de/script.php?variable='+ wert;
 
Das ist ja nett Danke,

ich hab noch eine kleine Frage, wenn du schon so nett bist :)

Ich möchte einen automatischen reload oder refresh - nach dem loeschen erzwingen - weiß aber nicht genau wie es geht. Ich dachte mir den Befehl könnte man irgendwie in die Funktion, die das Loeschen veranlasst, einbauen. Was aber auch gut wäre wenn man diese Wahrnug" Seite enthält Postdaten ... "u.s.w. vermeiden könnte.

Ich hab noch nicht richtig gesucht nach ne Lösung, aber vielleicht hättest du da nen Tipp :p

Gruß
 
Zurück