array als session-variable im formular übergeben!?!

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

  • array als session-variable im formular übergeben!?!

    hallo...

    möchte in der datei index.php eine reihe von bildern erzeugen, die als link wieder die seite index.php aufrufen, dabei aber eine jeweils ein array als sessionvariable mitgeben.

    im detail:
    ich habe beispielhaft in 3 reihen jeweils 4 bilder nebeneinander...
    beim ersten aufruf ist noch kein bild aktiv und daher setzen wir als init-werte ein array wie folgt auf:
    $mein_status=array('reihe1' => '1', 'reihe2' => '1', 'reihe3' => '1')
    und ich kennzeiche entsprechend die jeweils ersten bild als aktiv...

    wenn ich das 2. bild in der 3. reihe anklicke möchte ich wieder mich selbst (index.php) aufrufen und das array als sessionvariable mitgeben, wobei es vorher aber in array('reihe1' => '1', 'reihe2' => '1', 'reihe3' => '2') verändert werden soll!

    wenn die seite jetzt aufgerufen wird ist entsprechend das 2. bild in der 3. reihe und wie vorher die beiden ersten bilder in der 1. + 2. reihe aktiv...

    wenn man jetzt ein wenig weiterdenkt (und in gedanken ordentlich klickt) hat man z.B. irgendwann ein array
    array('reihe1' => '4', 'reihe2' => '2', 'reihe3' => '1') und kann beim aufbau der seite die entsprechenden bilder und die dazugehörenden informationen ändern...

    ich übergebe also jeweils den status, den die neu aufgerufene seite dann haben soll, um das entsprechende bild in der entsprechenden reihe hervorzuheben...

    mit variablenübergabe über die url (z.B. index.php?r1=2&r2=4&r3=1)funktioniert das ganze, man hat aber das problem, dass man immer eine andere url übergibt (logisch) und der browser so von einer anderen seite ausgeht... deshalb vergisst er die position an der die seite gescrollt war und man muss immer wieder zu der stelle runterscrollen, wo man vorher war....

    das bild einfach via window.document.image.src="xyz.jpg" zu ändern geht auch nicht, da neben dem bild noch eine reihe andere ausgaben je nach auswahl dynamisch verändert bzw. aus der db geholt werden sollen...

    ich hab jetzt versucht dynamisch ein formular zu bauen, das ein type="hidden" input-feld mit der entsprechenden variable hat, bin dann aber daran gescheitert, dass ich ja ein array übergeben muss, damit ich beliebig den status von nicht nur 2 oder 3 sondern auch 5 oder 8 bilderreihen übergeben kann...

    frage:
    ist der ansatz mit dem formular und dem bild als submit von der richtung her richtig oder gibt es einen grundsätzlich anderen (besseren) weg?

    wie würde das formular aussehen, dass das array übergibt?

    danke
    alex

  • #2
    www.php.net/serialize und co sollten deine freunde werden
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      hmmm... das schaut ja schon mal gut aus.... könnten meine freunde werden ;-)

      ich hab mal ein kleines test-php geschrieben:
      formtest.php:
      - - - - - - - - 8<- - - - - - - - - - - - - - - - - - - - -8<-
      <?php
      session_start();

      echo "<br>erstmal den Inhlat von X_POST...";var_dump($_POST);
      echo "<br>erstmal den Inhlat von X_SESSION...";var_dump($_SESSION);
      echo "<br>erstmal den Inhlat von X_POST['Element']...".$_POST['Element'];
      echo "<br>";

      $testvar2=unserialize($_POST['Element']);

      echo "<br>dann den von Xtestvar2...=$testvar2=<br>und noch nen dump von testvar2...";var_dump($testvar2);
      echo "<br>";

      ?>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <title>Seite</title>
      <link rel="stylesheet" type="text/css" href="style.css">
      </head>
      <body>
      <br><br>
      ----------------------------------------------------<br>
      <?php

      $testvar=array('r2' => '6','r1' => '3','r3' => '2');

      echo "<br>der Inhalt von Xtestvar...";var_dump($testvar);

      $sertest=serialize($testvar);

      echo "<br>und von sertest...=$sertest=<br>";

      ?>
      <form method="post" action="formtest.php">
      <input type="hidden" name="Element" value="<?echo serialize($testvar)?>">
      <input type="submit"value=" Absenden ">
      </form><br>

      </body>
      </html>
      - - - - - - - - 8<- - - - - - - - - - - - - - - - - - - - -8<-

      leider übernimmt er das nicht so richtig.... wenn ich auf den submit-button drücke bekomme ich folgendes:

      - - - - - - - - 8<- - - - - - - - - - - - - - - - - - - - -8<-
      erstmal den Inhlat von X_POST...array(1) { ["Element"]=> string(9) "a:3s:2:" }
      erstmal den Inhlat von X_POST['Element']...a:3s:2:

      dann den von Xtestvar2...==
      und noch nen dump von testvar2...bool(false)


      ----------------------------------------------------

      der Inhalt von Xtestvar...array(3) { ["r2"]=> string(1) "6" ["r1"]=> string(1) "3" ["r3"]=> string(1) "2" }
      und von sertest...=a:3s:2:"r2";s:1:"6";s:2:"r1";s:1:"3";s:2:"r3";s:1:"2";}=

      ABSCHICKEN
      - - - - - - - - 8<- - - - - - - - - - - - - - - - - - - - -8<-


      irgendwie wird das teil auf ein paar zeichen verstümmelt... irgendeine idee?

      gruß
      alex

      Kommentar


      • #4
        das ding wird nicht verstümmelt sondern serialisiert
        PHP-Code:
        $testvar=array('r2' => '6','r1' => '3','r3' => '2');
        $a=serialize($testvar);
        $b=unserialize($a);
        echo 
        '<pre>';
        echo 
        '$testvar hat den Typ: '.gettype($testvar).'<br />';
        echo 
        'Inhalt: ';
        print_r($testvar);
        echo 
        '<p />';
        echo 
        '$a hat den Typ: '.gettype($a).'<br />';
        echo 
        'Inhalt: '.$a;
        echo 
        '<p />';
        echo 
        '$b hat den Typ: '.gettype($b).'<br />';
        echo 
        'Inhalt: ';
        print_r($b);
        echo 
        '</pre>'
        probier das mal aus, das sollte dir weiterhelfen
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          ok... soweit funktioniert das bei mir auch...
          (vielleicht hätte ich den output etwas kommentieren sollen....)

          - - - - - - - - 8<- - - - - - - - - - - - - - - - - - - - -8<-
          [COLOR=crimson]das hier ist nachdem die variable sertest per submit übergeben wurde und dann aus $_POST wieder ausgelesen wurde:[/COLOR]

          erstmal den Inhlat von X_POST...array(1) { ["Element"]=> string(9) "a:3s:2:" }
          erstmal den Inhlat von X_POST['Element']...a:3s:2:

          dann den von Xtestvar2...==
          und noch nen dump von testvar2...bool(false)


          ----------------------------------------------------

          [COLOR=crimson]das hier ist kurz nachdem die variable sertest erzeugt wurde:[/COLOR]

          der Inhalt von Xtestvar...array(3) { ["r2"]=> string(1) "6" ["r1"]=> string(1) "3" ["r3"]=> string(1) "2" }
          und von sertest...=a:3s:2:"r2";s:1:"6";s:2:"r1";s:1:"3";s:2:"r3";s:1:"2";}=

          ABSCHICKEN
          - - - - - - - - 8<- - - - - - - - - - - - - - - - - - - - -8<-

          wie man sieht (es ist halt dummerweise in der falschen reihenfolge, da alles in einem script ist und er sich selber wieder aufruft... deshalb der output NACH dem übertragen zuerst und dann nochmal die initialisierung der variable... unten sieht man, dass das serialisieren gut geklappt hat (hier funktioniert auch dein beispiel... (danke) ich hab sertest mal unserialized und es kommt wieder da array raus!)

          wenn er dann per submit durch den $_POST gegangen ist bleibt leider nur noch
          array(1) { ["Element"]=> string(9) "a:3s:2:" }
          übrig... und das kann er natürlich nicht zurückwandeln...

          alex
          Zuletzt geändert von large; 28.07.2003, 22:36.

          Kommentar


          • #6
            Original geschrieben von large
            ok... soweit funktioniert das bei mir auch...
            (vielleicht hätte ich den output etwas kommentieren sollen....)
            gute idee
            ... [unverständlich] ...
            wolltest du nicht kommentieren?

            wo genau is denn dein problem?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              sorry... war zu schnell auf dem abschickbutton ;-)

              Kommentar

              Lädt...
              X