Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP ausführen ohne Seite neu zu laden

Einklappen

Neue Werbung 2019

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

  • #16
    Zitat von hausl Beitrag anzeigen
    Die Frage wie man "Anker in PHP ausführt" finde ich klingt als hättest du die Art und Weise und Reihenfolge noch nicht ganz verstanden, oder?

    Das ein Anker nur eine Sprungmarke für den Browser ist die nur im Browser relevant ist bzw. ausgeführt wird und der Browser vom PHP reines HTML (+ JS/CSS) ausgeleifert bekommt um dieses dann eben zu interpretieren - inkl. der Sprungmarken - ist die aber schon klar, oder?

    Ansonten ist mit EVA eigentlich schon alles gesagt, die Ausgabe von HTML und deinem Anker geört zu PHP und du brauchst du gar kein header(), wenn du EVA und das Affenformular http://php-de.github.io/jumpto/affenformular/ verwendetst und im Ziel (target) deines Formulars den Anker mit aufnimmst, fertig.

    LG

    Zitat von hausl Beitrag anzeigen
    Kopiere das mal ein eine leere PHP Datei und schau was passiert, wenn du ganz unten auf den button klickst. (Das Beispiel dient nur zur Verdeutlichung von dem Prinzip und ist weder vollständig noch ganz korrekt!)

    PHP-Code:
    <?php
    // ...
    // Hier würdest du $_POST auslesen/die Werte abholen, validieren und dann deine Berechnungen machen und in Variable(n) abstellen, die du dann ganz unten irgendwo zur Ausgabe verwenden kannst.
    // ...
    ?>
    <html><body>
    <?php
    // 50 Absätze erzeugen
    for ($i 1$i <= 50$i++) {
        echo 
    "<p>Zeile ".$i."</p>\n";
    }
    ?>
    <form id="theForm" method="post" action="#theForm">
        <button type="submit">klick mich</button>
    </form>
    </body></html>
    Dass die Anker eigentlich nur Sprungmarken sind, habe ich schon verstanden und so benutze ich sie normalerweise, bzw. dass der Browser eben selbst kein PHP verarbeitet, sondern vom Server "verarbeitet bekommt". Dabei habe ich aber nicht daran gedacht, dass man ja auch dem Formular an sich eine id verpassen kann und auf eueren Hinweis mit der action="***" bin ich leider gar nicht gekommen.

    Wenn ich dein Beispiel richtig verstehe generiert es durch absenden automatisch #theForm als Anker und ruft sich, da es selbst diesen Anker hat wieder selbst auf.

    Dein Beispiel ist wirklich richtig gut und ich glaube ich habe es jetzt auch richtig verstanden und umgesetzt.

    PHP-Code:
    <html>
    <head>
    <?php 
    $_gramm 
    $_POST["gramm"]; 

    if(
    $_gramm!="")
    {
       if (!empty(
    $_POST["kcal"])) 
       { 
          
    $_kcal 1.1;                    /*kcal pro g des Essens eingeben */ 
          
    $c=bcmul($_gramm$_kcal2); 

           
       } 
       if (!empty(
    $_POST["kJ"])) 
       { 
          
    $_kJ 4.4187;                    /*kJ pro g des Essens eingeben */ 
          
    $c=bcmul($_gramm$_kJ2); 
       } 
    }
    ?>
    </head>
    <body>
    </div>
      <h1>test</h1>
      <form id="test" method="POST" action="#test">
        <input name="gramm" size=10>
        g <br>
        <br>
        <input type=submit name=kcal value="kcal berechnen">
        <input type=submit name=kJ value="kJ berechnen">
      </form>
      <br/>
      <br/>
      <?php 

       
    if (!empty($_POST["kcal"])) 
       { 
         echo 
    "<h4> $_gramm g entsprechen $c kcal<h4>"
       } 
       if (!empty(
    $_POST["kJ"])) 
       { 
         echo 
    "<h4> $_gramm g entsprechen $c kJ<h4>"
       } 
    ?>
    </body>
    </html>
    Jetzt führe ich quasi oben im head meine Berechnungen mit den Variablen aus, die ich unten im Formular später einsammle. Nach der Verarbeitung (oben) wird dann unten je nach $_POST kcal/kJ dann die entsprechende Ausgabe erzeugt. Beim Ausführen wird gleichzeitig durch action="#test" der Anker #test aufgerufen und vom Browser dorthin gesprungen. Also müsste mein Code jetzt sauber(er) sein, richtig?

    Die konstanten Variablen sind jetzt ja auch oben im Head, passt das so, oder wäre das streng gesehen auch noch unsauber?

    Ich danke euch ehrlich für eure Mühe, die ihr euch hier mit mir gebt.

    LG

    Kommentar


    • #17
      Die Vorstellung, PHP-Code in die HTML-Struktur integrieren zu müssen (hier <head>) ist allerdings falsch.

      Ein PHP-Skript ist nicht – wie etwa JavaScript – Teil eines HTML-Dokuments. PHP generiert das HTML-Dokument (oder jede andere Art von Ausgabe).

      Das PHP-Skript erhält beim Start Eingaben in Form von beispielsweise GET- oder POST-Werten (Eingabe). Auf Grundlage dieser Eingaben führt es dann irgendwelche Operationen durch (Verarbeitung). Danach entscheidet es, welche Rückgabe es liefern soll (Ausgabe), denn es ist zum Beispiel erst nach der Verarbeitung bekannt, ob etwa alles wie gewünscht funktioniert hat.

      Du greifst aktuell vor, indem du sagst: „So, fangen wir erst mal eine normale HTML-Ausgabe an. Danach können wir mal gucken, was wir tun sollen.“

      Ansonsten: POST- und GET-Felder können beliebig modifiziert werden, weil sie vom Nutzer frei gesetzt werden können. Du kannst dich nicht darauf verlassen, dass alle Felder gesetzt sind und sinnvolle Werte enthalten (Stichwort Validierung). Dann solltest du bei Ausgaben von variablen Werten immer den Kontextwechsel nach HTML beachten und entsprechend escapen. (Ich würde es auch dann machen, wenn die Werte Zahlen sind. Ich würde es einfach immer machen.)

      - http://wiki.selfhtml.org/wiki/PHP/Ar...Kontextwechsel
      - http://de1.php.net/manual/en/functio...ecialchars.php

      Kommentar

      Lädt...
      X