Daten an anderes form übergeben.

  • Ich rufe von einem Form aus ein anderes Form (popup) auf um Daten aus einer Datenbank per ODBC zu ermitteln.

    Das funktioniert.


    Vom popup möchte ich die ermittelten Daten an das aufrufende Form übergeben.

    Bzw in dem aufrufenden form Felder bestücken.

    Kann mir jemand hierzu Hilfe geben?


    Danke Harro

  • Jetzt bastel ich schon mehr als 2 Tage an dieser Sache rum.

    Es gelingt mir einfach nicht und ich komme nicht voran.

    Es scheitert einfach am Wissen und den fehlenden Zusammenhängen.


    Was mache ich:

    Im ersten Formular wird in einem Dropdown die Auswahl der "Auftragsart" vorgenommen.

    Diese Auswahl soll im zweiten Formular benutzt werden.


    Es wird ein zweites Formular aufgerufen (popup).

    In dem Formular möchte ich mit der "Auftragsart" arbeiten.

    Code
    1. Formular
    select
    onchange = "this.form.submit()"
    name     = "selAuftragsArt"
    id       = "selAuftragsArt"
    style    = "font-family:Arial,sans-serif; font-size:12px; color:blue">
    2. Formular
    $ProduktTyp   = JRequest::getString('selAuftragsArt','get');
    echo "<br />AuftragsArt: >" . $AuftragsArt . "< <br/";

    Leider kann ich keinen Link zur Verfügung stellen. Der Entwicklungsrechner ist von "außen" nicht erreichbar.

    Das einzige was ginge, wäre eine TeamViewer-Sitzung. Könnte die Zugangsdaten per PN zur Verfügung stellen.

  • Ich dachte erst vielleicht nutzt du GET und POST falsch (Per 'Post' oder per 'GET'? Du darfst nicht denken mit Post sendet man und mit Get nimmt man die Daten an. Beides sind Varianten zum Versenden. Nur bei GET werden die Antworten in die URL gehangen und bei POST verdeckt übertragen. Hast du denn in deiner URL am Ende sowas wie ?selAuftragsArt=xyz? Dann würde per GET übertragen.).


    Aber dann habe ich mal eben gegoogelt wie man Daten holt (habe ich noch nie genutzt). Dabei ist mir aufgefallen, dass du in Zeile 9 JRequest nutzt. Laut der Doku ist die Methode aber veraltet (https://api.joomla.org/cms-3/classes/JRequest.html). Du solltest also JInput nehmen (https://docs.joomla.org/Retrieving_request_data_using_JInput). Dort ist auch ein gutes Beispiel, wie du die Daten holst. Anstelle von 'p1' nutzt du halt 'selAuftragsArt'.

    Hoffentlich konnte ich damit helfen und erzähle nicht zu viel Quatsch! War halt meine spontane Idee :)

  • Es ist mir nicht gelungen mit POST oder GET an die Daten heranzukommen.

    Keine Idee warum.

    Es muß an Automatismen von JOOMLA liegen, die ich nicht überschaue.


    Jetzt habe ich einen Weg gefunden.

    Ob das sinnvoll/richtig ist, weiß ich nicht.

  • Es geht um Transportaufträge.

    Im Form1 "Auftrag" wähle ich den Auftrags-Typ über Dropdown. "Lieferung, Abholung, Umlagerung" und andere Parameter


    In Form2 "Produkt-Auswahl" kann nun anhand der übergebenen Parameter eine spezifizierte Produktauswahl getroffen werden.

    Die Produkt-Auswahl funktioniert.


    Mein Problem war, wie bekomme ich die Parameter von Form1 in Form2.

    Habe das nun über $_Session erreicht.

    Ich denke nur das müßte doch auch anders gehen.

    Warum hat $_POST nicht funktioniert? Gibt es Voraussetzungen damit das geht?

  • Es gibt nun hier mehrere Möglichkeiten:
    - eine ziemlich billige

    - die richtige


    Die Billige

    Formular A sieht so aus:

    Code
    <form action="link-zu-form-2" method="GET">
        <select name="layout" id="xxx">
            <option value="option1">Option 1</option>
        </select>
    </form>

    Nun entweder für Formular 2 je Option ein layout anlegen (die dateien in dem tmpl Order) und per JS den Link zusammenbasteln und als IFrame im Modal öffnen: index.php?option=com_xxx&view=yyy&layout=zzz


    Oder das Formular schon auf der Seite haben und dann per JS Event den Wert setzen:

    Code
    jQuery('#myselect').on('change', function()
    {
        jQuery('#target).val(jQuery(this).val());
    });


    Die Richtige

    Du solltest den Joomla!-Standard mit XML-generierten Formulare verwenden. Dort gibt es dann im Model eine getForm und loadFormData-Methode. Letztere kannst du dann verwenden um Werte für das Formular vorzubelegen.

  • Hatte nur überhaupt keine Idee als ich den Thread eröffnet habe.

    Ich habe ja jetzt eine funktionierende Lösung mit $_SESSION gefunden.

    Jetzt wollte ich nur noch wissen, ob der Weg über $_SESSION ok ist, bevor ich fundamentale Fehler einbaue.


    Mich hatte auch irritiert, daß ich es mit $_POST nicht geregelt bekommen habe.


    Mit den XML-generierten Formularen schlägst Du ein für mich völlig unbekanntes Kapitel auf.

    Da würde ich jetzt die Finger von lassen.


    Danke bis hierher Harro

  • Also verstehe ich das richtig? Das einzige Problem sind eigentlich die abhängigen Formularfelder? Da du ja nicht der PHP/Javascriptentwickler bist würde ich dir sonst raten mal eine Formularkomponente aus dem JED zu nutzen. Da können einige abhängige Formularfelder, da kann sogar die Ganze nächste Seite anders aussehen in abhängigkeit zur ersten Seite.

  • Da können einige abhängige Formularfelder, da kann sogar die Ganze nächste Seite anders aussehen in abhängigkeit zur ersten Seite.

    Das habe ich schon erreicht und funktioniert auch auf anhieb prima.

    Mein Problem war die Parameter vom aufrufenden Formular zu bekommen.

    Aber auch das tuts ja jetzt.


    Nein ein PHP/Javascriptentwickler bin ich nicht, aber so langsam kommts.

    War nicht einfach, sich mit der Syntax anzufreunden.


    Betrachte dieses Thema jetzt als erledigt.

  • Hallo Astrid,

    danke, werde mir den Link noch mal genau anschauen.

    Im Moment habe ich die Situation, daß POST und GET mir keine Daten liefert.

    Durch irgendetwas sind die Variablen immer leer.

    Ich glaube/vermute es liegt daran, dass du gar kein HTML Requests ausführst beim Absenden deines Formulars sondern nur per Javascript eine Lightbox öffnest... Aber dafür müsste man es sehen.


    Ich kann dir nur dringend dazu raten, wie von Harmageddon empfohlen (und von mir auch bereits vorher) über eine professionelle Formularkomponente nachzudenken. Oder es zumindest auf irgendeinen free Webspace zu stellen damit wir es sehen können...

  • Sie sprechen üebr Joomla Erweiterungen, die an aus dem Joomla Extension Directory (JED) herunterladen kann. Du findest dort für fast alles eine passende Erweiterung.

    Ich finde es ja beeindruckend, wie du selbst dich durchbeissen willst, aber wie schon jemand geschrieben hat, für "ernsthafte" Einsatzfälle solltest du schon aus Sicherheitsgründen was professionelles nehmen.