Fabian: (PHP) Form-Tag in Form-Tag?

Hallo Forumaner,

leider habe ich noch immer keine Lösung für mein Problem bekommen, die mir wirklich weiterhilft...

Vielleicht könntest du mir ja ein wenig weiterhelfen?

Ich habe eine html Seite, in welcher der User seine persönlichen Daten eingeben kann. Das habe ich mit einem Formular gelöst, welches über die ganze Seite geht.

Am Ende gibt es ein Button speichern oder abbrechen.

Nun würde ich dem User gern die Möglichkeit bieten, ein Bild upzuloaden. Dazu habe in in mitten des Formulares ein Platzhalterbild "Bild upload hier klicken" eingefügt.

Klickt der User dieses Platzhalterbild an, erscheint eine neue Seite, auf der das Bild upgeloaden werden kann. Geht der User per Schaltfläche "zurück" dann wieder auf die Eingabeseite zurück, sind jedoch alle zuvor eingegebenen Daten verschwunden.

Daher dachte ich mir, speichere ich die Daten, bevor der user auf die Upload Seite gelinkt wird, in der Datenbank ab.

Das würde meines Wissens sehr gut funktionieren, wenn ich das Bild einfach als Form definiere und bei Klick ein Submit zum Speichern durchführe:

<form action="anzeigentemplates/upload.php" method="post"><input type="image" src="logo.gif" value="submit">
</form>

Leider kann ich diese Form-Tag zum Bildupload innerhalb der Form zum eingeben der persönlichen Daten nicht definierten.

Ich habe auch bereits drei Lösungen bekommen:

Lösung1:
Öffne die Bild-Upload-Seite in einem neuen Fenster

Das ist eine gute Idee, doch wenn ich dann das Fenster wieder schließe, wird das Platzhalterbild duch das neue Bild nicht ersetzt.Das wäre schon sehr schön.
Besteht hier die Möglichkeit per Java Skript zu definieren, Z.B:OnClick(schließe neues Fenster und lade die alte Seite neu ein)?

Lösung2:
Wenn du keine RESET-Button zur Verfügung stellst, bleiben AFAIK die Formularinhalte beim Betätigen von ZURÜCK erhalten.

Ich habe vergessen zu sagen, dass das Formular selbst per include aufgerufen wird. Ich glaube deswegen sind auch die Eingaben immer wieder verschwunden.

Lösung3:
<img src.... alt... onClick="Hauptformular.ParameterWasDanachFürNeSeiteKommtAlsHidden="PIC";Hauptformularname.submit();">
Du hast in deinem Riesenformular ein HiddenFeld wodrin du speicherst ob als nächstes nur eine Danke-Seite kommen soll oder die Bildupload-Seite. Dann Submittest du das Hauptformular.

Die Lösung hört sich super an, leider scheitert es bei mir etwas an der Durchführung. Ich habe von Java Skript so gut wie keine Ahnung...
Insbesondere das AlsHidden kann ich nicht deuten.

Wenn ich das so richtig verstanden habe, füge ich ein Bild ein:
<img src="logo.gif" onClick="form.'upload.php'as hidden="PIC";form.submit();">

Klickt man nun auf das Platzhalterbild wird das Haupformular Submittet und damit die Werte gespeicht und man kommt auf die Upload seite.
Klickt man auf den Button Speichern. Wird das Formular ebenfalls gespeicht und man kommt auf die Danke Seite.

Ist das so generell richtig? Wenn ja, könnte mir hier jemand einen Tipp für die richtige Schreibweise dieses Befehls geben?

Eine weitere Lösung habe ich erhalten:
Warum mit JavaScript wenn es auch ohne geht? <input type="image" name="hochladen" value="tues" src="bla" alt="bli"> hat etwa den selben Effekt und funktioniert immer. (Das wäre auch die richtige (tm) Lösung für dieses Problem)

Aber damit kann ich, soweit ich weiß, doch nur die Adresse aufrufen, die im FormTag  Action definiert wurde. Beim Button speichern wird php-self aufgerufen, beim Klick auf das Bild sollte die Bild-Upload Seite erscheinen.

Oder kann man z.B. auch irgendwie zwei Action Adressen definieren, je nach Submit Button?

Für Antworten möchte ich mich schon jetzt sehr bedanken!

Viele Grüße aus Braunschweig
Fabian

  1. Hoi Fabian

    Ui ui ui - da scheinst Du Dir ja eine Menge arbeit aufzuladen für eine Funktion die ich meine nicht so wichtig wäre. Es gibt ne Menge Seiten die in der Hauptfunktion Bilder und andere Daten hochladen und die machen es nicht so kompliziert. Natürlich verstehe ich Dein Beweggrund, aber das Aufwand/Nutzen-Verhältnis ... naja ich weiss nicht recht.

    Ich kann Dir aber trotzdem wenigstens zu einem Punkt eine Antwort geben:

    Oder kann man z.B. auch irgendwie zwei Action Adressen definieren, je nach Submit Button?

    Zwei Action-Adressen geht nicht. Aber es gehen zwei submit Buttons:

    <input type="submit" name="Button1" value="Upload">
    <input type="submit" name="Button2" value="Speichern">

    Und damit kannst Du schon steuern wohin es gehen soll. Werte einfach im Script aus welcher Button gedrückt wurde und führe dann den gewünschten Code aus. (Übermittelt wird entweder Button1=Upload oder
    Button2=Speichern.)

    HTH
    kaepten

    1. Vielleicht solltest Du auch mal deinen MimeType überdenken den du für den upload bestimmst...Schau mal in Selfhtml für den upload von Dateien in dem Bereich Formulare.

      1. Danke für Eure Hilfe,

        den Upload selbst führe ich mit PHP durch. Es werden auch nur Bilder angenommen. Das habe ich bereits berücksichtigt.

        Jedoch klappt das mit der Weiterleitung auf die Upload Seite noch nicht so ganz.

        Ich habe nun ein Bild definiert, welches das Formular auch absendet.
        <input type="image" name="upload" src="anzeigentemplates/logo2.gif" width="100" height="75" border="0" value"upload">

        und einen Button mit:
        <input type="submit" name="abspeichern" value="Eingaben speichern!">

        Nun müßte ich doch auslesen können, ob nun auf das Bild zum Absenden des Formulares geklickt wurde oder auf den Button "abspeichern"

        php
        if isset $abspeichern --speichere ab
        if (isset ($upload)){window.location("../upload.php");}

        Die Variable aus dem Bild läßt sich jedoch nicht auslesen, ist das überhaupt möglich?

        Danke und Grüße aus Braunschweig

        Fabian

        1. Mit dem auslesen der Bild Variable hat es nun funktioniert, dedoch noch nicht mit der Weiterleitung..

          Ich habe nun ein Bild definiert, welches das Formular auch absendet.
          <input type="image" name="upload" src="anzeigentemplates/logo2.gif" width="100" height="75" border="0" value"upload">

          und einen Button mit:
          <input type="submit" name="abspeichern" value="Eingaben speichern!">

          php
          if isset $abspeichern --speichere ab

          if (isset ($upload_x)){window.location("../upload.php");}

          Nun scheitert es nur noch an dem JavaScript Teil window.location

          Danke und Grüße aus Braunschweig

          Fabian