PHP Code ausführen bei einem onclick Javascript window.confirm

jamarilo

Grünschnabel
Hallo Leute ich bin neu hier und habe bereits ein riesen Problem, ich habe eine Mediensammlung wo ich DVD einlesen kann und wieder löschen. Mein Problem steht darin das die Löschen funktion hinter einem onclick=window.confirm steht und es nur ausgeführt werden soll wenn der confirm true ergibt. Aber der PHP Code wird so oder so ausgeführt auch wenn man den html Button gar nicht anwählt... Aber hier mal ein bischen Code vieleicht kan mir jemand helfen....

HTML:
<div class="mod modContent">
    
        <?php
            $id = $_GET['id'];
            $idg = $_GET['idg'];
        ?>
    
        <input type="button" value="Löschen" onclick="bestaetigt = window.confirm('Wollen Sie den DVD wirklich aus Ihrer Mediensammlung löschen?');

                                                        if (bestaetigt == true){
                                                            
                                                            <?php 
                                                            mysql_query("DELETE FROM mediensammlung.dvd_has_preise WHERE dvd_has_preise.DVD_idDVD = $id"); 
                                                            mysql_query("DELETE FROM mediensammlung.person_has_dvd WHERE person_has_dvd.DVD_idDVD = $id");
                                                            mysql_query("DELETE FROM mediensammlung.dvd WHERE dvd.idDVD = $id AND dvd.Genre_idGenre = $idg");
                                                            ?>  
                                                                    
                                                            window.location.href='index.php';
                                                            
                                                            }">
                                                        
        </input>
        
  </div>
</div>
]

Also diese HTML seite wird aufgerufen wen man auf einen bestimmten Link clickt, es werden sogleich mit diesem Link 2 id`s mitgegeben wie man im ersten PHP sieht, die brauch ich um den richtigen DVD zu löschen.
Mein eigentliches Problem liegt darin das auch wen man den Button nicht betätigt er diesen mysql_querry ausführt....
Für hilfe wäre ich sehr dankbar :)
 
Hi und herzlich Willkommen hier in der Community,

das Problem liegt darin begründet, dass PHP-Code serverseitig ausgeführt wird. Das heißt, dass dein Webserver erst das PHP ausführt, und das Ergebnis dann an den Browser zurückgibt. Eine Mischung einer JavaScript Bedingung und PHP-Code ist somit nicht möglich.

Was du brauchst, ist eine extra PHP-Seite, die nur aufgerufen / ausgeführt wird, wenn der Benutzer den Button klickt. Hierzu gibt es mehrere Ansätze. Entweder du fügst ein Formular ein, das die ausgewählten Checkboxen an ein PHP-Skript übergibt oder du lässt das ganze mit der JavaScript Technik AJAX laufen.

Ich würde in deinem Fall eher zu der ersten Lösung greifen. Baue ein Formular (<form><input> etc.) und schreibe dir dazu ne PHP-Seite die dann die MySQL-Anfragen abfeuert. Hier ein "Crashkurs" wie man das anstellt.

Übrigens:
SQL:
WHERE dvd_has_preise.DVD_idDVD = $id
Das ist gaaaaanz böse ;) Schicke Daten, die vom Benutzer verändert werden könnten niemals ungefiltert an die Datenbank, das kann ins Auge gehen. Hier ein paar Informationen, warum das böse ist :)

Gruß
BK
 
Zuletzt bearbeitet von einem Moderator:
Ich danke dir für die schnelle Antwort, ich habe es mir irgendwie gedacht das es mit dem zusammenhängt ich werde das mit dem <form> gleich mal ausprobieren.

Wegen der SQL injection bin ich mir bewust ich habe mir vorgenommen sobald ich mein Projekt die Grundufnktionalität beherscht werden ich mich um die feinheiten kümmern.
Ich danke dir viel Mals für die schnelle Hilfe. :D
 
Hallo ich bins nochmals habe mir den Crash kurs durchgelesen und noch ein wenig gegoogelt wie kann ich aber bewerkstelligen das ich mit diesem <form> noch 2 php Variablen mitsenden kann damit ich auf der neuen seite diese wieder verwenden kann....?
 
Hi,

du kannst Parameter im action-Attribut in der URL-Schreibweise angeben (z.B. action="action.php?foo=bar&var1=val1") oder mit einem hidden-Input-Feld (<input type="hidden" name="foo" value="bar" />). Während bei der ersten Methode die Parameter immer über $_GET erreichbar sind, hängt das bei der zweiten Variante vom method-Attribut des Form-Tags ab.

Best regards
 
Hi,

Wegen der SQL injection bin ich mir bewust ich habe mir vorgenommen sobald ich mein Projekt die Grundufnktionalität beherscht werden ich mich um die feinheiten kümmern.
Ich würde dir wirklich empfehlen, das immer gleich beim ersten Schreiben des Codes zu erledigen. Denn später ist es mehr Arbeit, weil man erst die Dateien raussuchen muss.


Du könntest übrigens auch einen AJAX-Request per JavaScript schicken. Dann brauchst du keine Form. Allerdings dafür JS.
 
Also ich habe es mit <form> und <input> gemacht und es funktionier tadellos ich danke euch viel Mals für die sehr sehr schnelle Hilfe******
So jetzt beherscht mein Projekt die Grundfunktionaliät, und ich kann mich um die feinheiten kümmern.... ;)

Das mit SQL injection werde ich bei meinem nächste Projekt sicherlich von anfang an damit beschäftigen, weil jetzt habe ich gewisse Grundkentnisse in PHP und werde mich an grössere Projekte ranwagen... :D
 
Zurück