Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausführen einer php-Funktion durch Buttonclick

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ausführen einer php-Funktion durch Buttonclick

    Hallo liebes Forum!

    Mal wieder kommt ein absoluter Anfänger mit einer wahrscheinlich simplen Frage...nichtsdestotrotz habe ich trotz lesen endloser Foreneinträge und Tutorials keine Lösung für mich gefunden.

    Ich möchte eine Webseite (nennen wir sie index.php) schreiben, auf der ein bisschen Text steht und dann kommt ein Knopf, welcher eine php-Funktion ausführt. Diese Funktion soll irgendwas machen - z.B. ping -c 1 google.de - und soll dann auf meiner Webseite ausgeben: "Du hast google.de angepingt und es hat geklappt". Diese Ausgabe soll auf meiner index.php unter dem Button erscheinen und den Button deaktivieren (die Aktion soll nur einmal ausgeführt werden können).

    Also zusammengefasst:
    -Index-Webseite mit Inhalt
    -Button führt bei Klick php-Funktion aus
    -Es erscheint eine Meldung, dass der Button geklickt wurde bzw. der Inhalt, welchen die Funktion zurück gegeben hat
    -Der Button ist quasi deaktiviert bzw. der Server "merkt" sich, dass der Button bereits geklickt wurde und führt die Funktion nicht noch hundertmal aus

    Ich hoffe ich konnte mich klar und verständlich ausdrücken und ihr wisst was ich meine

    Vielen Dank schonmal im Vorraus und ich hoffe, ich habe jetzt keine allzu blöde Anfängerfrage gestellt ^^


  • #2
    Was für Code hast du denn schon oder brauchst du komplett alles (form, if ect.)?

    Kommentar


    • #3
      Danke für die Rückmeldung! Bis jetzt gibt's mit meinen php-Kenntnissen nur einen funktionierenden Knopf...

      HTML-Code:
      <!DOCTYPE>
      <html>
      <body>
      
      <p>Text</p>
      
      <form method="post" action="ping.php">
      <input type="submit" name="ping">
      </form>
      
      </body>
      </html>
      PHP-Code:
      <?php
          
      // ping Funktion

          
      exec("ping -c 1 google.de");
          echo 
      "Du hast google.de angepingt."
      ?>
      Was ich brauche ist ein Rat, wie man am besten umsetzt, dass man nicht auf der ping.php Seite landet (die "action" quasi im Hintergrund abläuft und nur der Text erscheint) und ein zweiter Rat, wie man quasi einen Button "deaktiviert" (habe das was von sessions gelesen). Das Deaktivieren ist aber zweitrangig und soll quasi nur verhindern, dass die exec-Funktion zweimal abläuft.

      Ist mein Anliegen verständlich?

      Achso: Die Ausgabe des pings ist quasi egal, er soll nur ausgeführt werden.

      Kommentar


      • #4
        ping.php:

        PHP-Code:
        <?php
        // ping Funktion

        exec("ping -c 1 google.de");
        echo 
        "Du hast google.de angepingt."
        ?>
        <!DOCTYPE>
        <html>
        <body>

        <p>Text</p>

        <form method="post" action="ping.php">
        <input type="submit" name="ping" disabled>
        </form>

        </body>
        </html>
        Das ist die einfachste Variante. Wenn du nicht auf die ping.php wechseln willst sondern auf der index.php bleiben willst brauchst du JavaScript und einen AJAX-Request und das dürfte dann eine Nummer zu hoch sein.

        Kommentar


        • #5
          Auch vielen Dank für deine Idee jonas3344 . Ich verstehe komplett, was du meinst; es ist für mich aber leider keine funktionierende Lösung. Ich möchte nämlich auf der index.php bleiben, weil noch weitere Buttons und Funktionen dazu kommen sollen, die ähnlich aufgebaut sind. Die index.php soll sozusagen eine Schaltzentrale sein, die durch Buttonklicks Aufgaben ausführt und gewissermaßen Content generiert. Daher auch meine Überlegung mit den sessions, um den "alten Inhalt" von den vorherigen Klicks zu behalten.

          Du kannst sehr gut Recht haben, dass das alles eine Nummer zu groß ist, aber ich hab mir das nun leider in den Kopf gesetzt und - bis jetzt - noch die Hoffnung, dass ich da wenigstens zum Teil Erfolge mit verzeichnen kann
          Könntest du mir vielleicht ein paar Anhaltspunkte geben, in welche Richtung ich mich dann informieren müsste, um eine Lösung per JS und AJAX-Request zu bekommen?

          Noch als weitere Fragen: Ist es vielleicht sogar möglich, den Button nach klicken durch Text zu ersetzten? In wie weit ist es sinnvoll bzw. gängig zu diesem Zweck einen <iFrame> zu benutzen und die ping.php einzubinden? Damit würde immerhin die Seite nicht neu laden und der Inhalt sich nicht verändern...

          Kommentar


          • #6
            Gängig ist es, wie schon gesagt, beim Klick auf den Button einen Request abzusetzen, und danach die Antwort des Scripts einzublenden und ggfl. den Button auszuschalten.

            Wenn du das so realisieren willst wirst du nicht drumrumkommen Dich etwas eingehender mit Javascript zu befassen. Eventhandling, das Senden von Requests (AJAX ist hier das Stichwort) und Manipulation des DOMs. Du kannst das pur machen oder mit einem Framework wie jQuery. Mit etwas Eigeninitiative kriegst du das auch hin, das Internet ist voll von Tutorials zu diesen Themen. Und wenn etwas nicht klappt zeigst du hier Deinen Ansatz und wir helfen Dir gerne weiter.

            Kommentar

            Lädt...
            X