• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Popup-Fenster in PHP erstellen

A

Anonymous

Gast
Hallo,
bei meiner kleinen Datenbank (lampp) soll vor dem eigentlichen Löschen noch eine Sicherheitsabfrage kommen, in dem eine Fenster aufgeht mit der Abfrage "Datensatz wirklich löschen? <Abbruch> <OK>".

Die Daten werden zunächst tabellarisch angezeigt und am Ende jeder Zeile kann auf "löschen" geklickt werden.
Code:
<td><a href="<? echo ''.$PHP_SELF.'?clear='.$daten[F_ID].'' ?>">löschen</a></td>
Dann wird der Löschvorgang ausgeführt:
Code:
if($clear) 
{
mysql_query("DELETE FROM Firma WHERE F_ID=$clear",$db);
}
Und vor dem mysql_query("DELETE... soll die Abfrage kommen.


Kann mir jemand helfen??
Bei JavaScript zB gibt es etwas wie alert(). Gibt es das o.ä. auch für PHP?
Gruß
 
PHP ist eine serverseitige Scriptsprache. Vom Browser weiß das ganze System nichts. Ergo kannst Du auch keine Popups erstellen. Du kannst aber Javascript und PHP kombinieren. Du kannst den Aufruf der Löschseite in einen Link setzten welcher nur nach klicken auf "Ok" eines Javascriptfensters ausgeführt wird.
 
OP
A

Anonymous

Gast
Hallo,
ersteinmal danke für den Tipp, nur gelöst habe ich damit mein Problem noch nicht.

Ich rufe in meinem PHP-Skript mit include("loesch.js") ein JavaScript auf, welches das Popup-Fenster erzeugt. So weit so gut. Aber wie rufe ich jetzt von diesem Javascript ein PHP-Programm zum Löschen auf?
Code:
<SCRIPT LANGUAGE="JAVASCRIPT">
i=confirm("Datensatz wirklich entfernen");
if ( i==true)
	<?php  ???????  ?>;
</SCRIPT>
Ich habe auch einmal direkt im PHP-Script folgendes probiert:
Code:
if($clear) 
{
echo "<SCRIPT LANGUAGE=\"JAVASCRIPT\">
i=confirm(\"Datensatz wirklich entfernen?\");</SCRIPT>";
}
Aber wie komme ich hier auf den Inhalt der Variablen i?


In beiden Fällen wird der Dialog aufgerufen.
Gruß
 
JavaScript ist eine clientseitige Scriptsprache. Von dem was da mit JS vor sich geht bekommt der Server (und damit PHP) nichts mit, außer natürlich der Server bekommt eine entsprechende Anweisung. Diese kann der Client natürlich auch per JS generieren.
 
Hallo Renate,

wie andere schon beschrieben haben, muß Dein Problem getrennt behandelt werden. Es ist leider nicht möglich, JavaScript mit PHP, Deiner Idee entsprechend, miteinander zu vermischen, weil JavaScript auf den Computern Deiner Website-Besucher läuft, und PHP auf Deinem Server.

Folgendermaßen läßt sich das Problem allerdings beheben:

Innerhalb Deiner HTML-Datei müßtest Du ein Formular einbauen, welches einen Submit-Knopf beinhaltet. Laß diesen Submitknopf diese Lösch-Aktion ausführen, und nicht ein Link. Wenn Du solche Aktionen über Links ausführst, wird dies auch in der Adresszeile sichtbar sein. Stell Dir vor, Du kopierst versehentlich die Adresszeile, welche den Löschbefehl beinhaltet und gibst diese Adresse beispielsweise in einer E-Mail weiter. Das kann Probleme verursachen, welche teilweise durch Formulare unterbunden werden können, aber das führt jetzt vorerst noch zuweit in Sicherheitsthematiken hinein (dazu weiter unten mehr).

HTML-Datei, welche Formular beinhaltet:
Code:
<html>
<body>
<form action="loeschen.php" method="post" onsubmit="return confirm('Wollen Sie diesen Eintrag wirklich löschen?')">
<input type="hidden" name="LID" value="DIE_ZU_LÖSCHENDE_ID">
<input type="submit" value="Löschen">
</form>
</body>
</html>

Beachte, daß Dieses HTML-Beispiel oben absolut minimalistisch ist. Du müßtest dieses Formular also noch richtig in Deine HTML-Seite an der korrekten Stelle einbauen. Dieses Formular wird dafür sorgen, daß Dein gewünschtes JavaScript-Popup mit der Meldung "Wollen Sie diesen Eintrag wirklich löschen?" erscheinen wird, wenn der Knopf "Löschen" gedrückt wird. In diesem Formular befindet sich noch das versteckte Feld mit dem Namen "LID" und als Wert muß dieses Feld die ID des zu löschenden Eintrags haben. Für jeden Eintrag, der zu löschen wäre, müßtest Du jeweils ein Formular nach obigem Muster erstellen.

Dann bräuchtest Du eine separate PHP-Datei, welche "loeschen.php" heißt und dieses Löschen letztendlich durchführt und eventuell danach noch eine "Löschen erfolgreich"-Meldung an den Browser ausgibt.

Folgendermaßen müßte dann in etwa diese PHP-Datei arbeiten:
Code:
<?php
// Immer prüfen, ob ein Wert überhaupt gesetzt wurde!
if(isset($_POST["LID"])) {
    // Dann kann man weitermachen:
    // Wir müssen die ID aus dem Formular erstmal über folgende Funktion
    // filtern. $db_link ist hierbei das Datenbank-Ressourcen-Objekt,
    // Welches Du beim Verbinden mit Deiner Datenbank erhalten hast.
    $lid = mysql_real_escape_string($_POST["LID"], $db_link);
    
    // .....
    // An dieser Stelle kann jetzt Dein Löschcode erscheinen
    // .....
    // Und hier kannst Du nun entweder über den Befehl 
    // header("Location: http://www.meinehomepage.de/seite.html");
    // den Browser auf eine andere Seite umleiten, oder eine 
    // Erfolgsmeldung als HTML-Seite ausgeben.
}
?>

Wie Du siehst, hab ich oben dieses mysql_real_escape_string eingefügt. Wenn man diese Funktion nicht auf Daten, welche man von dem Browser/Benutzer erhalten hat, anwendet, setzt man seinen eigenen Server, auf dem das PHP-Skript läuft, unnötigen Gefahren aus. Stichwort: http://de.wikipedia.org/wiki/SQL-Injektion

Ich würde Dir darüberhinaus empfehlen, Dich eingehender mit HTML, JavaScript und PHP auseinanderzusetzen, weil Dir offensichtlich konzeptionell einiges unklar ist. Ein guter Startpunkt wäre http://de.selfhtml.org (HTML, JavaScript und ein bissl PHP, mit gutem Forum), http://de.php.net (für PHP-Programmierung), sowie ganz dringend, um sichere PHP-Programmierung zu erlernen: http://www.phpadvisory.com/ (auf Englisch, sehr gutes Forum).

Ich habe den Code oben nicht getestet; er soll lediglich exemplarisch sein. Außerdem kann man die Verarbeitung eines Löschen-Befehls noch über viele andere Wege bewältigen. Der oben gezeigte Weg, dürfte am einfachsten sein.

Viele Grüße und viel Erfolg!
 
Oben