1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Berechnung per PHP aus Contact Form 7 ausführen

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von ASenna, 24. Juli 2017.

  1. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    Moin,

    ich habe mit Contact Form 7 ein paar Abfragen (Multiple Choice) erstellt und würde diese jetzt gerne per PHP "ausrechnen". Dabei reicht mir zunächst, zu zählen, wie häufig die erste, zweite oder dritte Antwort angekreuzt wurde.

    PHP kann ich ein bisschen. Was mir aber fehlt ist der Ansatz, wie ich Contact Form 7 dazu bringe, ein PHP-Skript auszulösen. Im Netz stand zwar hier uns dort was, ich habe das aber nicht ganz verstanden.

    Kann jemand helfen?
     
  2. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    Was hast du denn mit den Werten vor? Sollen die angezeigt werden oder z.B. in der Mail oder in die Datenbank eingefügt werden?

    Ein möglicher weg wäre, das ganze in JavaScript / Ajax zu machen.

    Möglich ist aber auch einen Hook zu verwenden. Ich denke, "wpcf7_before_send_mail" könnte z.B. passen.
     
  3. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    Ich möchte wirklich "rechnen". Hintergrund: Ich möchte auf meinen Seiten die Fragen einbinden, die zur Bestimmung des Pflegegrades bei Pflegebedürftigkeit abgefragt werden. Sie alle haben vier Antwortalternativen, vereinfacht Hilfsbedürftigkeit gar nicht - ein wenig - ziemlich viel - total. Je nachdem, was angekreuzt wird, gibt esw unterschiedlich Punkte, die dann noch zweimal umgerechnet werden und am Ende den Pflegegrad (früher Pflegestufe) ergeben.

    Ich brauche also ein Butten, der das PHP-Skript ausführt, wobei das PHP-Skript die Wert der einzelnen Fragen (also was angekreuzt wurde) irgendwie auslesen muss.

    Als Ausgabe steht dann eine Zahl zwischen 0 und 5.

    Die Berechnung bekäme ich per PHP hin. JAVA kenne ich gar nicht.

    Zum Hook: Was ist das? Wo wird er eingebaut?

    Im Netz habe ich folgendes gefunden: https://wordpress.org/support/topic/contact-form-7-input-fields-values-as-php-get-viarables/
    Ich kann damit aber nur begrenzt etwas anfangen.
     
    #3 ASenna, 25. Juli 2017
    Zuletzt bearbeitet: 25. Juli 2017
  4. bgeissler

    bgeissler Well-Known Member

    Registriert seit:
    6. August 2006
    Beiträge:
    4.404
    Zustimmungen:
    0
    Warum brauchst du CF7 für diese Aufgabe?
    Bau dir das Formular selbst, ist nicht so schwer.

    - Eingabe/Auswahl der Werte
    - Berechnung im phpscript
    - Ausgabe des Ergebnisses auf der selben Seite

    Hier ein Beispiel: https://goo.gl/hdvheF
     
  5. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    @ASenna:
    Ich meinte meine Frage eigentlich anders. Ich wollte darauf hinaus, was mit den berechneten Werten passieren soll. So wie du es jetzt beschreibst, sollen die ja einfach nur auf der Seite ausgegeben werden.

    Also (vereinfacht gesagt) der User klickt ein paar Radio-Buttons oder Checkboxen an und bekommt einen Wert angezeigt. Soweit korrekt?

    Ich verstehe auch nicht ganz, warum du dann CF7 verwenden willst. Ich würde, wie @bgeissler, auch eher ein eigenes HTML-Formular verwenden. Das dürfte auf jeden Fall einfacher sein, als die Werte aus CF7 "herauszufischen"

    Was die Frage zu zum Hook angeht, empfehle ich die WordPress Doku. Hooks sind ein Grundkonzept von WordPress, um "fremde" Funktionen zu erweitern, anzupassen oder zu ergänzen.


    Edit:

    Nur der Vollständigkeit halber:
    JavaScript und Java haben eigentlich nichts miteinander zu tun (außer, dass beide "Java" im Namen tragen).
     
    #5 danielgoehr, 25. Juli 2017
    Zuletzt bearbeitet: 25. Juli 2017
  6. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    7.317
    Zustimmungen:
    582
    Warning: Division by zero in ~/themes/responsive-child-theme/whtr.php on line 42
     
  7. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    Ja genau, ein paar mal klicken (genau genommen 64 mal), dann rechnet PHP und dann kommt eine Zahl raus.

    Und zu Java/Java-Skript: Damit siehst du,wie viel ich von Java verstehe :lol:

    Ich schau mir mal das Beispiel von bgeissler an. Vielleicht ist das wirklich der bessere Ansatz.

    Danke Euch beiden!
     
  8. bgeissler

    bgeissler Well-Known Member

    Registriert seit:
    6. August 2006
    Beiträge:
    4.404
    Zustimmungen:
    0
    Ist mir auch schon aufgefallen. Das script ist schon einige Jährchen alt, ich werde es heute überarbeiten.
     
  9. bgeissler

    bgeissler Well-Known Member

    Registriert seit:
    6. August 2006
    Beiträge:
    4.404
    Zustimmungen:
    0
  10. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    Ich habe jetzt noch mal eine Nachfrage. Eurem Tipp nach habe ich das Formular rein in HTML gesetzt (also nur 2 Fragen). Auf der Seite steht jetzt also

    <form action="berechnung_pg.php">
    <input type="Radio" name="Item401" value="0"/>selbständig<br />
    <input type="Radio" name="Item401" value="1"/>überwiegend selbständig<br />
    <input type="Radio" name="Item401" value="2"/>überwiegend unselbständig<br />
    <input type="Radio" name="Item401" value="3"/>unselbständig<br />
    </form>

    und etwas später

    <input type="Submit" name="submit" value="Berechnung des Pflegegrades"/>

    Die Berechnung soll also in einer PHP-Datei erfolgen.

    Frage: Wo muss ich die auf dem Server abspeichern? Und wie bestimme ich, an welcher Stelle das Ergebnis erscheint?

    In der PHP-Datei steht ggw. nur ein Echobefehl:

    <?php
    /*
    Template Name: berechnung_pg.php
    */
    ?>

    <?php
    echo "################ Hier steht der Pflegegrad ###################";
    ?>

    Aber dieser Text erscheint nirgends. Was mache ich falsch?

    AS
     
  11. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    Ich befürchte, so wird das nichts werden. Du kannst nicht in irgendeiner externen Datei Berechnungen durchführen und dann auf einer anderen Seite das Ergebnis ausgeben.

    Du musst die Berechnung und die Ausgabe auf der Seite machen, auf der das Ergebnis angezeigt werden soll.

    Dafür gibt es verschiedene Ansätze, aber der einfachste wäre aus meiner Sicht folgender:

    Erstell einen Shortcode, der das Formular ausgibt. Dann übergibst du im Formular die Post-Daten an sich selbst (einfach das action-Attribut weglassen).
    Im gleichen Shortcode kannst du dann prüfen, ob die entsprechenden Post-Daten des Formulars gesetzt sind. Daran erkennst du, ob es submitted wurde oder nicht.
    Wenn sie gesetzt sind, machst du die Berechnung und gibst den Wert aus.

    https://codex.wordpress.org/Function_Reference/add_shortcode
     
  12. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    Ok, mit Shortcodes habe ich bereits gearbeitet. Dann probiere ich das mal auf diesem Weg.

    Danke für den Link!
     
  13. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    So, ich habe das jetzt umgesetzt. Der PHP-Code existiert (wenn zunächst auch nur rudimentär).

    Was mir jetzt nur fehlt ist die Aktualisierung des ShortCodes. Wie bringe ich den PC dazu, auf die Befehle

    <button type="button">Pflegegrad berechnen</button>
    <input type="button" name="submit" value="Berechnung des Pflegegrades">

    hin das hinter dem ShortCode stehende PHP-Skript auszuführen?
     
    #13 ASenna, 2. August 2017
    Zuletzt bearbeitet: 2. August 2017
  14. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    Im Grunde sollte es ungefähr so funktionieren (sehr vereinfacht, aber ich denke, das Prinzip wird klar)
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  15. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    Das habe ich so auch umgesetzt:

    if( isset($_POST["Item401"])){
    //$gewichtetePunkte = $_post["Item401"] * 10;
    $gewichtetePunkte = 40;
    }
    else {
    $gewichtetePunkte = 1;
    }

    Aber Isset ist nie true. $gewichtetePunkte ist immer 1. Das gilt selbst dann, wenn ich bei den Radio-Buttons mit checked="checked" feste Werte voreinstelle.

    Ich sehe zwei mögliche Ursachen:
    Kann es sein, dass bei mir GET, POST-Variablen nicht als globale Variablen registriert werden?
    Kann es sein, dass mein PHP-Code an der falschen Stelle steht (anderer Shortcode wird auf der Seite aber ordentlich ausgeführt).

    AS
     
  16. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    Was gibt denn
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    aus?
     
  17. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    wenn ich den befehl gleich zu Beginn des PHP-Codes mit echo aufrufe.
     
  18. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    var_dump erzeugt eine eigene Ausgabe und wird ohne echo aufgerufen.

    Gleich zu Beginn kann $POST ja keine Daten enthalten. Ich meine natürlich nach dem submit deines Formulars.

    Edit:
    Bitte poste mal den kompletten Code, so wie du ihn jetzt hast.
     
  19. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    133
    Zustimmungen:
    0
    Hier irgendwo liegt mein Missverständnis. Also zur Erläuterung, damit du weißt, was bei mir wo steht:

    Ich habe unter WordPress eine Seite angelegt, in der die Radiobuttons sind:
    Wie kann der Betroffene sich kämmen, seine Zähne pflege, seine Prothesen reinigen und sich rasieren?
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Dann habe ich unter WordPress eine eigene Datei angelegt mit dem Namen eigenePlugins.php, in der der PHP-Code läuft. Hier drin steht auch schon Code für andere Seiten, auf denen ich ShortCodes verwendet habe. Das klappt ja auch prima. Diese Datei ist unter der Rubik "Plugins" aufrufbar, aktivierbar/deaktivierbar. Und in dieser Datei steht dann auch der Code für mein hier interessierenden ShortCode, der auch funktioniert, wenn ich den ShortCode irgend einen Text wie "Hallo" zuordne.

    Hier der PHP-Code
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    #19 ASenna, 2. August 2017
    Zuletzt bearbeitet: 2. August 2017
  20. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    Das ist alles irgendwie etwas zusammengeschustert.

    Ich persönlich würde die Ausgabe des Formulars auch über den Shortcode regeln und in der Seite nichts einfügen. Das ist aber kein muss.

    Das größte Problem dürfte aber sein, dass du nachwievor ein action-Attribut verwendest. Deshalb nochmal der Hinweis:

    Nochmal: Dein Formular soll an keiner Stelle ein action-Attribut enthalten!

    Dazu kommt, dass dein Shortcode in einem zusätzlichen init-Hook ist. Du schreibst ja, dass es funktioniert, insofern halb so schlimm. Benötigt wird der aber eigentlich nicht.

    Dein Formular ist auch falsch. Der Submit-Button muss innerhalb des Formulars stehen. Also vor </form>.

    Den Shortcode musst du dann in der Seite einfügen, wo auch das Ergebnis angezeigt werden soll.

    Wenn die die o.g. Punkte so umsetzt, sollte es eigentlich funktionieren.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden