Formulardaten an php-File übergeben

  • Hallo,

    in einem speziellem zusammenhang muss ich Formulardaten an eine PHP-Datei übergeben, welche in meinem
    Plugin-Verzeichnis liegt. Allerdings geht es ja nicht mit dem berühmten action="datei.php".
    Auf Codex habe (bisher zumindest) nichts gefunden. Wie muss ich solch einen Fall bei Wordpress lösen?

    NACHTRAG: Ich muss in der php-Datei auch z.B. mit Sachen wie $wpdb arbeiten können

    Ati

    Einmal editiert, zuletzt von Ati (18. Februar 2014 um 16:37)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren


  • in einem speziellem zusammenhang muss ich Formulardaten an eine PHP-Datei übergeben, welche in meinem
    Plugin-Verzeichnis liegt. Allerdings geht es ja nicht mit dem berühmten action="datei.php".

    sende das Formular an Wordpress /index.php

    Allerdings geht es ja nicht mit dem berühmten action="datei.php".

    Warum nicht?

    http://www.php-faq.de/q-formular-variablen.html


    NACHTRAG: Ich muss in der php-Datei auch z.B. mit Sachen wie $wpdb arbeiten können

    und das Problem ist?

    Zeigt doch einfach mal deinen code

    Mit offenen Augen träumen

  • Im Prinzip geht es darum aus diversen Filtermöglichkeiten eine SQL-Abfrage nach Excel/CSV zu exportieren und diese sofort "Downloadbar" zu machen. Aktuell ist es ja mal nur ein Testcode aber wehe ihr lacht :)
    Formular Code


    Lasse ich bei action nur "export.php" drin kommt...Die Seite konnte nicht gefunden werden!
    Hier mal die export.php


    Wenn ich jetzt meine Daten absenden will kommt "Notice: Trying to get property of non-object" und das bezieht sich
    auf die Zeile

    Zitat

    $table_reklamationen = $wpdb->prefix . "za_reklamationen";

  • hallo,

    puh...

    PHP
    echo '<form method="post" action="'. plugins_url ( '/export.php', __FILE__ ).'">

    schon einmal angesehen, was dabei raus kommt? sorry ...

    sende an Wordpress deine Variable (wenn du nicht nachvollziehen kannst, wie wordpress dies macht, betrachte das suchformular in Wordpress)

    Trenne html und PHP sonst wirst du die Fehler nicht finden.

    Zitat


    Wenn ich jetzt meine Daten absenden will kommt "Notice: Trying to get property of non-object" und das bezieht sich

    verwende Wordpress und nicht dein Plugin als Ziehl.

    Hoffe, dies hilft dir weiter...

    ralf

    Mit offenen Augen träumen

    Einmal editiert, zuletzt von r23 (18. Februar 2014 um 18:47)

  • vielleicht sehe ich auch nach 12 Stunden den Wald vor lauter Bäumen nicht mehr.


    12 Stunden ist ja keine Zeit, ich meine ich sehe da ja noch viel weniger als Du. Ich sehe nur eine Frage nach dem Namen der Tabelle und nicht nach deren Inhalt. Doch was möchtest Du mit dem Namen von der Tabelle, wenn im Anschluss keine SQL-Abfrage zu sehen ist?
    Oder ich verstehe gerade etwas nicht und ich verstehe ja auch wirklich noch nicht viel, doch einige von den Beispielen auf der Seite habe ich zumindest bereits ausprobiert und nie so eine Warnung erhalten, höchstens andere oder gar nichts.

  • r23
    der Eintrag bei "action=" ist der verzweifelung geschuldet. Trage ich nur datei.php ein kommt ein "Die Seite wurde nicht gefunden". Werde mir das Suchformular mal anschauen und auch Deinen Hinweis html und php zu trennen.
    Melewo
    ich meinte mit 12 Stunden arbeiten...da sieht man das eine oder andere offensichtliche nicht mehr :)

  • der Eintrag bei "action=" ist der verzweifelung geschuldet.


    Ja und da sollte man sich halt einmal 12 Stunden Zeit nehmen und austesten, ob zum Beispiel get_bloginfo("wpurl") oder site_url() der richtige Weg wäre:

    http://www.coder-welten.com/wp-funktionen-…l-und-site_url/

    Und wenn die Post an die selbe Seite geht, so genügt zur Not auch:

    PHP
    action=\"http://".$_SERVER["HTTP_HOST"].esc_attr($_SERVER["REQUEST_URI"])."\"
  • PHP
    action=\"http://".$_SERVER["HTTP_HOST"].esc_attr($_SERVER["REQUEST_URI"])."\"

    bitte! richtig! Server["HTTP_HOST"] ist überlüssig.

    PHP
    action='".esc_url($_SERVER['REQUEST_URI']) . "'

    oder

    PHP
    action='" esc_url($_SERVER['PHP_SELF']) . "'

    wird hier aber nicht benötigt und verwirrt den TE nur.

    Mit offenen Augen träumen

  • So dann will ich mal

    1. Melewo es zwingt Dich niemand meine Fragen hier zu beantworten. Wenn Du das aber machst bitte mit etwas Respekt. Ich bin kein dummer Junge und will auch so nicht behandelt werden. Ich hatte in #3 geschrieben das dies Testcode ist...also gab es da noch keine weitere SQL-Anweisungen, da ja schon vorher ein Fehler gemeldet wurd. Mit 12 Stunden meinte ich meine eigentliche Arbeit. Das hier ist mehr oder weniger Hobby.

    2.

    Zitat

    PHP-Code:
    [COLOR=#000000] [COLOR=#0000BB][/COLOR][COLOR=#007700]echo [/COLOR][COLOR=#DD0000]'<form method="post" action="'[/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]plugins_url [/COLOR][COLOR=#007700]( [/COLOR][COLOR=#DD0000]'/export.php'[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]__FILE__ [/COLOR][COLOR=#007700]).[/COLOR][COLOR=#DD0000]'">
    [/COLOR] [/COLOR]

    schon einmal angesehen, was dabei raus kommt? sorry ...


    Kann Dir da nicht folgen. Erklär mal bitte!! Und auch wie es am besten wäre!

    3. Habe ich meinen "Fehler" gestern noch gefunden. Als ich in der zweiten Datgei wp-load eingebunden habe, ging alles. Allerdings habe ich aktuell immer noch den von euch kritisierten "Action-Code" verwendet.

    Ati

  • 1. Melewo es zwingt Dich niemand meine Fragen hier zu beantworten. Wenn Du das aber machst bitte mit etwas Respekt.


    Ja gut, wenn Du aussagekräftige Beispielcode lieferst, aus denen das erahnbar ist, zum Beispiel durch einen kleinen Kommentar im Beispielcode, wie:

    PHP
    // SQL-Abfrage


    Hätte schon vollständig genügt um zu erkennen, dass Du kein blutiger Anfänger bist, der die Hälfte mal kurz weglässt. Und dafür gibt es genügen Beispiel hier im Forum, wie erst vor Tagen eine Else ohne das etwas folge oder geschlossen wurde, weil dem Fragesteller der Sinn und die Syntax von if/else scheinbar völlig fremd waren.

    Ist geeignet um zum Beispiel eine Datei zu laden:

    PHP
    plugins_url ( '/export.php', __FILE__ );


    Sind beide fürs Attribut action in Formularen geeeignet, mit gewissen Unterschieden:

    PHP
    home_url("/beitragsseite/");
    site_url("/test/beitragsseite.php");


    Eine Datei wie beitragsseite.php existiert nicht, es wurde nur ein Beitrag mit dem Titel 'beitragsseite' gespeichert, und die Einstellung für Permalinks ist Beitragsname:

    Code
    home_url("/beitragsseite/");


    Eine Datei wie beitragsseite.php existiert, zum Beispiel in einem Verzeichnis /test:

    Code
    site_url("/test/beitragsseite.php");

    Einmal editiert, zuletzt von Melewo (19. Februar 2014 um 08:40)

  • Hm ich würde mich schon als Anfänger bezeichnen...aber mit gefährlichem Halbwissen :-D.
    Ich hielt meine Version nicht für so verkehrt, falls sich (was und wie auch immer) in der Ordnerstruktur ändert.
    Gemäß Deinem letztem Beispiel müßte das dann in etwa doch so aussehen oder?

    Zitat

    <form action="<?php echo site_url("/wp-content/plugins/test/test2.php");?>" method="post">


    Zumindest paßt hier auch das Ergebnis!!

  • Wenn es funktioniert, dann ist es ja gut. Werde mal heute meine Seite auch noch einmal überarbeiten und weiter unten dann eine Zusammenfassung einfügen. Mit esc_url() würde ich es für besser halten, doch da wollte ich auch noch einmal etwas testen.

    Was ich jetzt nicht so richtig nachvollziehen kann, möchtest Du die Post an einer Seite im Plugin übergeben?

    Einmal editiert, zuletzt von Melewo (19. Februar 2014 um 09:37)

  • Ich habe vielleicht sogar noch was besseres gefunden.

    Zitat

    action="<?php echo plugin_dir_url( __FILE__ );?>test2.php"


    Funktioniert auch

  • Ich verstehe ja nicht, wieso Du Post an eine Datei im Plugin-Verzeichnis senden möchtest, statt zum Beispiel eine Funktion oder Klasse zu schreiben, die das direkt abrufen und übergeben kann und nicht das da jeder beliebige User Post an ein Plugin senden kann?

    Innerhalb vom Dashboard würde ich das als normal empfinden, dass man das dann vielleicht per Formular (mit oder ohne Ajax) erledigt, doch aber nicht unbedingt von den öffentlichen Seiten aus. Und im Dashboard könntest Du die Dateien dann gleich so verarbeiten, zum Beispiel mit in dem Du die mit dirname(__FILE__) einbindest und was erforderlich ist als Objekt übergibst.
    Ich verstehe zwar so halbwegs was Du vorhast, doch soll das öffentlich sein? Dann lege dafür doch eine benutzerdefinierte Seite mit einem Formular an, filtere die Eingaben richtig, mache mit den Eingaben eine DB-Abfrage und verarbeite das intern.

    Einmal editiert, zuletzt von Melewo (19. Februar 2014 um 10:40)

  • Es geht in diesem konkreten Fall um den Export einer gefilterten SQL-Abfrage (eigene Tabelle) in eine CSV-Datei.
    Nur dafür nutze ich die Datei

  • Hallo,



    2.
    Kann Dir da nicht folgen. Erklär mal bitte!! Und auch wie es am besten wäre!

    Sende deine Variablen aus dem Formual an Wordpress - Was verstehst du daran nicht?
    Wenn du deine Variablen mit [COLOR=#000000][COLOR=#DD0000]<form method="post" action="http://blog.r23.de/[/COLOR][COLOR=#DD0000]'"[/COLOR][/COLOR] ... sendest, erhalte ich die Daten - was genauso sinnfrei ist - als wenn du dein Daten an ein Script in einem Plugin Verzeichnis sendest. Da kommen nur die Varibalen an. Die Funktionen und Möglichkeiten von Wordpressen stehen dir so nicht zur Verfügung.

    Überlasse doch einfach Wordpress welche Objekte, Funktionen geladen werden müssen, damit in deinem Plugin (dann Teil von Wordpress) die Datenbank zur Verfügung steht.

    grummel... Es gibt hier ein jobforum! Such dir einen Bastler, der dir ein expoert script schreibt - wenn du noch nicht einmal das suchformular in wordpress verstehst. es gibt sicherlich auch fertige Pluigins...

    Mit offenen Augen träumen

  • Hab jetzt 2x alles durchgelesen, aber keine Aussage von mir gefunden das ich das Suchformular nicht verstehe....nur das ich es mir mal angucken werde. Aber mein Export geht soweit von daher alles gut.

  • Hab jetzt 2x alles durchgelesen, aber keine Aussage von mir gefunden das ich das Suchformular nicht verstehe....nur das ich es mir mal angucken werde.

    und warum sendest du es dann an dein Script und nicht an Wordpress?


    Aber mein Export geht soweit von daher alles gut.

    bist du dir sicher?

    PHP
    $filterau = $_POST ["filterau"];

    oder sollen Hacker neue Möglichkeiten erhalten

    Ich hoffe, du hast es für einen Kunden geschrieben.

    Mit offenen Augen träumen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!