vitavie_: php und js

Hallo,

vielleicht hat jemand die Geduld mir zu helfen.

Ich seh einfach nicht, wo mein Denkfehler im Zusammenspiel mit JS und php ist.

Situation:
Formular, mit mehren Buttons, die neue Teilbereiche zum Bearbeiten einblenden (include).
Gleichzeitig rufen diese Buttons aber auch eine JavaScriptfunktion auf, die Radiobuttons neu markiert, um eben Userfehler abzufangen, und der richtige Status(radio) mit den richtigen Eigenschaften in der DB landet.

Momentan schaut die Verarbeitung scheinabr so aus:

NEU (button)
     |
     |
change_radio(wert=neu)
stati = l (hiddenfeld)
radio = l
     |
     |
ausführung include, mit dem
Ergebnis, dass wieder Wert aus DB
bzw. nix drin steht.

Ich versteh es einfach nicht.
Normalerweise sollte doch erst die php-includiert werden und dann JS ausgeführt werden.

Kann meinen Ausführungen jemand folgen und 'sieht' vielleicht, wo der Hänger ist?

Quellcode zu posten ist schwierig ....

  1. Hallo vitavie,

    ehrlich gesagt: So ganz verstehe ich Deine Frage noch nicht.

    Du kannst per JavaScript natürlich nur Elemente einblenden, die beim Laden der Seite bereits includiert wurden. Also:

    • Alles laden
    • Beim Aufruf der Seite Teile per CSS ausblenden
    • Beim Buttonklick diese Teile per JS wieder einblenden

    Was nicht geht:

    • Teile laden
    • Beim Buttonklick Teile per JS laden und einblenden

    Aber wenn ich Dich richtig verstehe, ist das nicht Dein Problem, oder?

    -- snorri

    1. Hi,

      • Beim Aufruf der Seite Teile per CSS ausblenden
      • Beim Buttonklick diese Teile per JS wieder einblenden

      Sollte man nicht machen. Wenn man mit JS einblendet, dann blendet man mit JS auch aus! Sonst haben Non-JS-Surfer ein Problem.

      • Teile laden
      • Beim Buttonklick Teile per JS laden und einblenden

      Klar geht das (XMLHttpRequest()).

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Hi,

    Normalerweise sollte doch erst die php-includiert werden und dann JS ausgeführt werden.

    Ja. Allerdings dauert die PHP-Ausgabe ja ggf. etwas. Und wenn mit PHP ein JS ausgegeben wird, dann kann es durchaus sein, daß das JS bereits ausgeführt wurde, während PHP noch am Rödeln ist.

    Kann meinen Ausführungen jemand folgen

    Vermutlich eher nicht - also zumindest was mich angeht ... =;-)

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  3. Hi,

    Formular, mit mehren Buttons, die neue Teilbereiche zum Bearbeiten einblenden (include).

    D.h. also, Formular wird abgeschickt, und in der Ergebnisseite wird etwas anderes/neues per include eingebunden?

    Gleichzeitig rufen diese Buttons aber auch eine JavaScriptfunktion auf,

    Neine, "gleichzeitig" ganz sicher nicht.
    Entweder tun sie das, noch bevor das Formular abgeschickt wird - oder indirekt, nachdem die Antwortseite erhalten wurde, in der dann entsprechende Javascript-Anweisungen stehen.
    Was davon bei dir der Fall ist, hast du uns noch nicht gesagt.

    Ich versteh es einfach nicht.
    Normalerweise sollte doch erst die php-includiert werden und dann JS ausgeführt werden.

    Mach dir klar, was in welcher Reihenfolge geschieht - insb. wann ein neuer Request an den Server abgesetzt wird, und damit anschliessend ein neues Dokument dargestellt wird.

    Kann meinen Ausführungen jemand folgen und 'sieht' vielleicht, wo der Hänger ist?

    Jein, bzw. hoechstens "so halb".

    Quellcode zu posten ist schwierig ....

    Etwas genauer beschreiben solltest du dein Problem aber trotzdem, wenn es nachvollziehbar werden soll.

    MfG ChrisB

  4. von wegen nachricht nur einmal senden .. egal ... neuer versuch ..

    Ich habe Daten zu Werbeblöcken, die beim Klick auf
    -Einzelprodukt
    -Produktliste
    -externen Link oder Datenblatt(pdf)
    führen können.

    Das sind die Stati und werden im Änderungsform mittels Radiobuttons angezeigt. (if row(status) == e, checked_e == checked).

    Soll der Werbeblock in Zukunft nicht auf ein Einzel sondern aus Produktliste zeigen, brauche ich statt der EinzelID die Angabe der Kategorie(n), mittels der die Produktliste ausgeleen wird.

    Dazu gibt es denButton [Neu], der

    • die Datei mit DropDown für Kategorie(n) Auswahl includieren soll (if (submit == neu, include xyz.php), und
    • "gleichzeitig", mittles onClick die Funktion onChange(neu) aufruft, die den entsprechenden Radiobutton markieren soll und den Wert nochmal in ein hidden-Feld schreibt.

    Soweit das sichtbar ist, funktioniert das auch.

    • hidden-Feld wird belegt
    • radiobutton markiert

    nur wird dann erst die includierte Datei angezeigt, und die Markierung wieder auf Wert aus DB (bzw. Vrarbeitung ind aurufender Datei) gesetzt. Auch das hidden hat keinen Wert mehr.

    Hoffe, das es jetzt klarer ist.

    Die onChange-Funktion hat keinen location.href, das ist dann schon das nächste Problem.

    1. Hi,

      Dazu gibt es denButton [Neu], der

      • die Datei mit DropDown für Kategorie(n) Auswahl includieren soll (if (submit == neu, include xyz.php),

      Noch mal: Der Button _kann_ nichts serverseitig inkludieren.
      Also forderst du wohl ueber das Absenden des Formulars eine neue Ressource an.

      Soweit das sichtbar ist, funktioniert das auch.

      • hidden-Feld wird belegt
      • radiobutton markiert

      nur wird dann erst die includierte Datei angezeigt, und die Markierung wieder auf Wert aus DB (bzw. Vrarbeitung ind aurufender Datei) gesetzt. Auch das hidden hat keinen Wert mehr.

      Natuerlich nicht, woher denn auch - schliesslich hast du eine neue Ressource angefordert.
      Wenn du innerhalb dieser das hidden-Feld wieder entsprechend belegt haben willst - dann mache dies serverseitig beim Erzeugen dieser Ressource.

      MfG ChrisB

      1. Hallo,

        Noch mal: Der Button _kann_ nichts serverseitig inkludieren.
        Also forderst du wohl ueber das Absenden des Formulars eine neue Ressource an.

        Jep .. is ein submit.

        Soweit das sichtbar ist, funktioniert das auch.

        • hidden-Feld wird belegt
        • radiobutton markiert

        nur wird dann erst die includierte Datei angezeigt, und die Markierung wieder auf Wert aus DB (bzw. Vrarbeitung ind aurufender Datei) gesetzt. Auch das hidden hat keinen Wert mehr.

        Natuerlich nicht, woher denn auch - schliesslich hast du eine neue Ressource angefordert.

        Also wird erst JS ausgeführt und dann das submit?
        Dachte es wäre umgekehrt.

        Wenn du innerhalb dieser das hidden-Feld wieder entsprechend belegt haben willst - dann mache dies serverseitig beim Erzeugen dieser Ressource.

        Das klappt einmalig auch.
        Die includierte Datei hat aber 3 DropDowns -> onChange(update_auswahl) -> location.href = var1, var2. Mit diesen Variablen werden die query für das nächste DropDown geholt und mein hidden ist wieder auf null.

        Ich gebs auf, Kreisspiele sind doof :-(

        1. Jep - es scheint zu funktionieren! *kreisel*

          Danke an alle für die schnelle Hilfe :-)

          gruß vitavie_