PHP-befehl unter button/link !?

Hallo,

ich möchte, dass z.b. eine funktion ausgeführt wird, wenn man auf einen button klickt. In meinem Falle, wäre es das Speichern eines Strings in einer Datei.
ISt das möglich?
Wenn ja wie?

Admin-Formular

Vielen Dank.

Gruß
Thomas

was soll das denn sein?

  1. Pre tags nutzen nicht viel wenn eh keine Formatierung drin ist…

  2. ja das geht. Aber die Datei würde auf dem Webserver gespeichert werden. Du kannst natürlich auch einen Download-Dialog erzwingen, wo Du dann diese Datei runterladen lässt…

Admin-Formular

so… was soll das denn nun sein?

  1. wo fopen, da auch fclose
  2. Funktionen müssen nicht an der Stelle stehen wo sie ausgeführt werden sollen. Deine Funktion wird aber garnicht aufgerufen.
  3. input type=„submit“ value=„absenden“
  4. form method=post action=index.php
  5. Ansprechen von Variablen bevorzugt mit $_GET[‚question‘] bzw $_POST[‚question‘]
  6. form tag ist noch offen - nach dem submit-button fehlt ein und das ist nicht geschlossen (">")

Hi,

  1. ja das geht. Aber die Datei würde auf dem Webserver
    gespeichert werden. Du kannst natürlich auch einen
    Download-Dialog erzwingen, wo Du dann diese Datei runterladen
    lässt…

ich möchte ein Admin-Formular erstellen, in welchem ich eine Frage für ein Rätsel eingeben kann. Diese Frage soll später in einem anderen Fenster aus der Datei ausgelesen werden und in einer Form angezeigt werden.

Der Admin soll in ein Textfeld eine Frage eingeben und diese soll dann , wenn ein Link/Button angeklickt wird, in der Datei gespeichert werden.
Meine Frage ist nun, ob ich unbedingt eine Form erstellen muss oder ob es die möglichkeit gibt, eine Funktion mittels Link oder Button aufzurufen. Habe mich zwar etwas eingearbeitet, habe aber nicht so viel Ahnung von PHP.

Admin-Formular

eventueller befehl um funktion aufzurufen

so… was soll das denn nun sein?

  1. wo fopen, da auch fclose
  2. Funktionen müssen nicht an der Stelle stehen wo sie
    ausgeführt werden sollen. Deine Funktion wird aber garnicht
    aufgerufen.
  3. input type=„submit“ value=„absenden“
  4. form method=post action=index.php
  5. Ansprechen von Variablen bevorzugt mit $_GET[‚question‘]
    bzw $_POST[‚question‘]
  6. form tag ist noch offen - nach dem submit-button fehlt ein
    und das ist nicht geschlossen
    (">")

SORRY, das war eben nur ein Entwurf

Gruß
Thomas

Hi!

Meine Frage ist nun, ob ich unbedingt eine Form erstellen muss
oder ob es die möglichkeit gibt, eine Funktion mittels Link
oder Button aufzurufen. Habe mich zwar etwas eingearbeitet,
habe aber nicht so viel Ahnung von PHP.

Dein Problem sind nicht mangelnde PHP-Kenntnisse, sondern das fehlende Verständnis, wie die Kommunikation zwischen dem Client (also dem Browser) und dem Server abläuft.

Der Browser nimmt über eine Art „Kommunikationszeile“ Kontakt mit dem Server auf (z.B. durch „www.test.de“ in der Adresszeile des Browsers). Auf dem Server wird das entsprechende Programm gestartet (normalerweise die Index.html oder Index.php, die u.U. mit einem weiteren Programm verlinkt ist). Ist dieses Programm ein PHP-Programm, so läuft es durch einen Interpreter, wird auf dem Server ausgeführt (evtl. mit Datei- oder Datenbankzugriffen) und erzeugt am Ende eine Datei, die aus reinem HTML besteht. Diese Datei wird an den Client zurückgeschickt und dort vom Browser in eine Anzeige umgesetzt. Und damit verabschiedet sich der Server aus der Verbindung. Klickt man nun im Browser auf einen Button, wird die im Tag „Form“ angegebene „Action“ ausgelöst, d.h. der Client nimmt erneut Kontakt mit dem Server auf, wo das gewünschte Programm gestartet und neuer HTML-Coder erzeugt und an den Client geschickt wird. Ähnliches kann man auch ohne HTML-Tag „Form“ mit „Action“ über das HTML-Tag „href“ erreichen - allerdings muß man dann die Parameter, die in der „Kommunikationszeile“ zu übergeben sind, selbst versorgen.

So weit verständlich?

Für dein Problem brauchst du keine Funktion, die auf einen Buttonklick oder Link-Klick reagiert. Der Button-Klick / Link-Klick löst einen Selbstaufruf des Programmes aus, das dir den HTML-Code für die Anzeige erzeugt. Beim ersten Aufruf bekommt das Programm auf Serverseite aber keine Parameter übergeben (logisch, weil das Eingabefeld noch gar nicht im Browser zu sehen ist). Der PHP-Code läuft auf dem Server, erzeugt den notwendigen HTML-Code und schickt ihn an den Client. Damit hat der Client jetzt einen Dialog (z.B. mit Eingabefeld und Button bzw. einer href-Zeile). Klickst du auf den Button/Link, wird das Programm auf dem Server erneut gestartet, dieses Mal aber mit Parameter. Das muß das Programm auf dem Server aber selbst feststellen. Werden Parameter übergeben, schreibt das Programm die Daten in eine Datei, erzeugt den HTML-Code und schickt diesen wieder an den Client.

Ist eigentlich wie ein Ping-Pong-Spiel.

Der Code (ungetestet!) von „Frage.php“ sähe in etwa so aus:

<?php $frage = isset($_GET["frage"]) ? $_GET["frage"] : "";
if ($frage != "") { $datei = fopen("question.txt", "a"); if ($datei) { fwrite($datei, $frage); fclose($datei); } } echo

formular;

?>

Statt des Submit-Buttons mit der Action="Frage.php" ginge auch ein href, das allerdings den Programmaufruf mit selbstgesetzten Parametern durchführen muss, etwa so:

Nächste Frage

Wichtig ist der Teil nach dem Fragezeichen, da hier die Werte für das isset und das $_GET gesetzt sein müssen.

Grüße
Heinrich

Hi!

Meine Frage ist nun, ob ich unbedingt eine Form erstellen muss
oder ob es die möglichkeit gibt, eine Funktion mittels Link
oder Button aufzurufen. Habe mich zwar etwas eingearbeitet,
habe aber nicht so viel Ahnung von PHP.

Dein Problem sind nicht mangelnde PHP-Kenntnisse, sondern das
fehlende Verständnis, wie die Kommunikation zwischen dem
Client (also dem Browser) und dem Server abläuft.

Der Browser nimmt über eine Art „Kommunikationszeile“ Kontakt
mit dem Server auf (z.B. durch „www.test.de“ in der
Adresszeile des Browsers). Auf dem Server wird das
entsprechende Programm gestartet (normalerweise die Index.html
oder Index.php, die u.U. mit einem weiteren Programm verlinkt
ist). Ist dieses Programm ein PHP-Programm, so läuft es durch
einen Interpreter, wird auf dem Server ausgeführt (evtl. mit
Datei- oder Datenbankzugriffen) und erzeugt am Ende eine
Datei, die aus reinem HTML besteht. Diese Datei wird an den
Client zurückgeschickt und dort vom Browser in eine Anzeige
umgesetzt. Und damit verabschiedet sich der Server aus der
Verbindung. Klickt man nun im Browser auf einen Button, wird
die im Tag „Form“ angegebene „Action“ ausgelöst, d.h. der
Client nimmt erneut Kontakt mit dem Server auf, wo das
gewünschte Programm gestartet und neuer HTML-Coder erzeugt und
an den Client geschickt wird. Ähnliches kann man auch ohne
HTML-Tag „Form“ mit „Action“ über das HTML-Tag „href“
erreichen - allerdings muß man dann die Parameter, die in der
„Kommunikationszeile“ zu übergeben sind, selbst versorgen.

So weit verständlich?

Ja.

Für dein Problem brauchst du keine Funktion, die auf einen
Buttonklick oder Link-Klick reagiert. Der Button-Klick /
Link-Klick löst einen Selbstaufruf des Programmes aus, das dir
den HTML-Code für die Anzeige erzeugt. Beim ersten Aufruf
bekommt das Programm auf Serverseite aber keine Parameter
übergeben (logisch, weil das Eingabefeld noch gar nicht im
Browser zu sehen ist). Der PHP-Code läuft auf dem Server,
erzeugt den notwendigen HTML-Code und schickt ihn an den
Client. Damit hat der Client jetzt einen Dialog (z.B. mit
Eingabefeld und Button bzw. einer href-Zeile). Klickst du auf
den Button/Link, wird das Programm auf dem Server erneut
gestartet, dieses Mal aber mit Parameter. Das muß das Programm
auf dem Server aber selbst feststellen. Werden Parameter
übergeben, schreibt das Programm die Daten in eine Datei,
erzeugt den HTML-Code und schickt diesen wieder an den Client.

Ist eigentlich wie ein Ping-Pong-Spiel.

Der Code (ungetestet!) von „Frage.php“ sähe in etwa so aus:

<?php :
$frage = isset($\_GET["frage"]) ? $\_GET["frage"] : ""; if ($frage != "") { $datei = fopen("question.txt", "a"); if ($datei) { fwrite($datei, $frage); fclose($datei); } } echo




formular; #Was macht dieser Ausdruck? ("formular;")

?>

Statt des Submit-Buttons mit der Action="Frage.php" ginge auch
ein href, das allerdings den Programmaufruf mit
selbstgesetzten Parametern durchführen muss, etwa so:

Nächste Frage

Wichtig ist der Teil nach dem Fragezeichen, da hier die Werte
für das isset und das $_GET gesetzt sein müssen.

Vielen Dank für die Erklärung!

Grüße
Heinrich

Grüße
Thomas

Hi!

echo $wert1";

echo " ";
echo " $wert2 ";
echo " ";
echo " $wert3 ";

//PHP-Block beenden
?>

b)
Der PHP-Programmblock wird für jeden HTML-Befehl unterbrochen und danach wieder neu eröffnet

Bsp:

<?php //hier beginnt der PHP-Block
//hier werden PHP-Variablen versorgt $wert1 = "A"; $wert2 = "B"; $wert3 = "C"; //PHP-Block beenden, dadurch in HTML-Modus wechseln und Ausgabe der Variablen durch neu gestarteten PHP-Block durchführen: # <?php echo $wert1 ?>" <?php echo $wert2 ?> <?php echo $wert3 ?>

Das ist für beide Fälle ausgesprochen umständlich. ALso haben sich die PHP-Entwickler etwas einfallen lassen und die sogenannte „Heredoc“-Schreibweise eingeführt. Durch den „echo“-Befehl, gefolgt von "$wert1
$wert2
$wert3

ausgabe;

//PHP-Block beenden

?>

Mit „ausgabe;“ wird der „Heredoc“-Block beendet, danach gilt wieder reine PHP-Programmierung. Einschränkung bei der „Heredoc“-Schreibweise: es können innerhalb des „Heredoc“-Blockes keine Funktionen und keine Bedingungen („if“) ausgeführt werden.

Gerade beim Füllen von HTML-Formularen mit PHP-Variableninhalten ist die „Heredoc“-Schreibweise sehr von Vorteil.

Grüße
Heinrich

Hi,

vielen Dank für die Erklärung.

Werde es mal ausprobieren.

Thx

Gruß
Thomas