Sessions richtig einsetzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sessions richtig einsetzen

    Hallo,

    es geht um die Verwendung von mehrseitigen Formularen.
    Die Besonderheit ist der Einsatz von einem Template, in dem für den Benutzer keinerlei PHP-Code offensichtlich ist.

    Im Template werden Formulare nach folgendem Schema angelegt:
    Normales Textfeld:
    PHP-Code:
    <input type="text" name="Titel" id="Titel" value="###value_Titel###" size="36"
    Checkbuttons:
    PHP-Code:
     <input type="checkbox" name="P18" id="P18" value="Ja" ###checked_P18_Ja###> 
    Das ganze sollte sich im folgendem Code wiederspiegeln und zeigen was ich meine:
    PHP-Code:
       function show_form($content$conf) {
        
    $this->get_post array_merge($_GET$_POST);
        
    session_start();
        
    $globalMarkerArray = array();

        
    # merge error-array with globalMarkerArray
        
    if (is_array($this->errors)) {
         
    $globalMarkerArray $this->errors;
        }
        
    #############################
        # define markers
        #############################
        
    if (is_array($this->get_post)) {
          
    $_SESSION["formular"][$this->get_post['id']] = array();
          
    $_SESSION["formular"][$this->get_post['id']] =  $this->get_post;

        foreach(
    $this->get_post as $k => $v) {
          if (!
    ereg('EMAIL_'$k)) {
           
    $globalMarkerArray['###value_'.$k.'###'] = $v;
           
    $globalMarkerArray['###checked_'.$k.'_'.$v.'###'] = 'checked';
           
    $globalMarkerArray['###selected_'.$k.'_'.$v.'###'] = 'selected';
          }
         }
        }[...] 
    Es wird ein entsperechendes Array für jedes Formular gespeichert. Ein Ausdruck über print_r($_SESSION["formular"]); bestätigt das..

    $this->get_post['id'] gibt die id der jeweiligen Seite wieder.

    Mein Problem. Wie erreiche ich, dass die Werte auch wieder im Value-Feld landen, wenn ich das Formular verlasse und wieder aufrufe?

    Hat jemand eine Idee?

    Dank im Voraus.

    D.
    http://www.2-ad.de
    http://www.2-ad.de/store

  • #2
    ich weis nicht ob du es wirklich willst, dass formulardaten mehrfach versendet werden?
    am besstens where es die namen von formularfelder mit einem zusatz versehen
    txtfeld_....
    checkbox_....
    select_.....
    damit du dynamisch zsamenhang zwischen platzhalter und nahmen finden kannst, als auch nach dem typ der in namen abgespeichert ist eine entscheidung treffen kanns ob in platzhalter ein checked, selected oder die value von get_post rein kommt.
    du kannst teoretisch sogar mit ob_start die ganze ausgabe vorher in eine variable oder db abspeichern und bei bedarf wieder alles komplett ausgeben.
    viele Grüße Slava.
    Slava
    bituniverse.com

    Kommentar


    • #3
      Danke für Deinen Vorschlag. Ich weis, es gäbe sicher mehrere Möglichkeiten aber mir sind Grenzen gesteckt.

      Dieser Code ist Teil eines ganzen und stammt aus einer Class, die auf dem Prinzip mit den Platzhaltern aufbaut. Ich muss also darauf aufbauen.

      Das mit der Session funktioniert soweit, wenn die Werte nicht in ein Unterarray mit der ID der Seite geschrieben werden. Aber für Checkbuttons ist dann kein 'disablen' mehr möglich. Darum lasse ich die Werte für jede Formularseite in ein Unterarray mit der eindeutigen ID der Seite schreiben, damit dieses jeweils mit den Änderungen überschrieben werden können.

      Nur bekomme ich die Werte aber nicht zurück ins Formular..
      http://www.2-ad.de
      http://www.2-ad.de/store

      Kommentar


      • #4
        du muss einfach prüffen ob session mit dieser seiten_id vorhanden ist
        PHP-Code:
        if(isset($_SESSION["formular"][seiten_id]]) AND $this->get_post[id]!=seiten_id){
        foreach(
        $_SESSION["formular"][seiten_id] as $k => $v) {
              if (!
        ereg('EMAIL_'$k)) {
               
        $globalMarkerArray['###value_'.$k.'###'] = $v;
               
        $globalMarkerArray['###checked_'.$k.'_'.$v.'###'] = 'checked';
               
        $globalMarkerArray['###selected_'.$k.'_'.$v.'###'] = 'selected';
              }
             } 
        Slava
        bituniverse.com

        Kommentar


        • #5
          Danke.. gesehen ;-)
          http://www.2-ad.de
          http://www.2-ad.de/store

          Kommentar


          • #6
            Hallo,
            ich hatte leider noch kein Erfolg mit dieser Lösung. Vermutlich falsch zusammengebaut.


            Mein Code sieht jetzt aber so aus, da das mit der eindeutigen Zuordnung der Formularseite nicht richtig funktionierte.

            $this->get_post['fm_pid'] ist nun der Wert eines im Formular angegebenen Hidden-Felds der der Formularseite einen eindeutigen String gibt. Im Formular steht jetzt noch dies:
            <input type="hidden" value="286" name="fm_pid">

            PHP-Code:
               function show_form($content$conf) {
                
            $this->get_post array_merge($_GET$_POST);
                
            session_start();
                
            $globalMarkerArray = array();

                
            #############################
                # define markers
                #############################
                
            if (is_array($this->get_post)) {
                  
            $_SESSION["formular"][$this->get_post['fm_pid']] = array();
                  
            $_SESSION["formular"][$this->get_post['fm_pid']] = $this->get_post;
                        

                foreach(
            $this->get_post as $k => $v) {
                  if (!
            ereg('EMAIL_'$k)) {
                   
            $globalMarkerArray['###value_'.$k.'###'] = $v;
                     
            $globalMarkerArray['###checked_'.$k.'_'.$v.'###'] = 'checked';
                   
            $globalMarkerArray['###selected_'.$k.'_'.$v.'###'] = 'selected';
                  }
                 }
                } 
            Ich gebe aber zu, als Webdesigner hab ich noch kein ausreichendes PHP-Wissen, um das richtig umzusetzen.

            Kannst noch mal drüberschaun?
            http://www.2-ad.de
            http://www.2-ad.de/store

            Kommentar

            Lädt...
            X