[Variablen] assoziatives Array übergeben

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

  • [Variablen] assoziatives Array übergeben

    Hallo Leute!

    Ich wende mich an euch, bevor ich mich hier vom Balkon werfe.
    Etliche Stunden sind jetzt schon wegen diesem Problem verstrichen.

    Also folgendes Problem:
    Auf meiner Seite ist ein Formular mit einigen Eingabefeldern und 3 Buttons

    Button1 = "speichern"
    Button2 = "reset"
    Button3 = "produkt"

    Wird Button1, also speichern gedrückt, wird die action="main.php" method="post" angestoßen
    In main.php überprüfe ich ob ($_REQUEST['Submit']=="speichern") ist und verarbeite mein
    assoziatives Formulararray $produktdata weiter. Klappt alles wunderbar, gibt keine Probleme.

    Wird Button3, also Produkt gedrückt, wird ebenfalls main.php aufgerufen und es soll sich ein neues Fenster öffnen,
    das die bereits eingegeben Daten, also das FormArray $produktdata, erhält.
    In diesem neuen Fenster will ich etwas auswählen und anschließend
    wieder in meine Hauptseite zurückkehren, und dieses Array wieder zurückgeben, evtl modifiziert.

    main.php
    PHP-Code:
    if (strcmp($_REQUEST['Submit'],'produkt')==0){
        
    $produktdata $_REQUEST['produktdata']; // spaßeshalber
        
    echo "<script>window.open('dlg_produktdata.php?formdata=$produktdata')</script>";            
        exit;

    Das neue Fenster öffnet sich auch soweit, nur es wird kein Array übergeben
    Im neuen Fenster steht
    http://.../dlg_produktdata.php?formdata=Array

    Da wurde einfach lapidar anstatt meines assoziativen Arrays, ein String mit dem Inhalt "Array" angehängt.

    Mit implode klappt es soweit, aber das nützt mir nichts, ich muss das Array über die Felder ansprechen können.
    Ich bete, dass ihr eine Lösung habt.

    Mit besten Gruß
    Dieter

  • #2
    serialize() / unserialize() sind deine freunde ...
    Kissolino.com

    Kommentar


    • #3
      90%

      Wow, danke für die schnelle Antwort!!!

      Die Url im neuen Fenster sieht schonmal sehr gut aus.
      Keys und Values des Arrays sind komplett übegeben worden.

      Wenn ich aber jetzt in meinem neuen Fenster, also dlg_produktdata.php,

      PHP-Code:
      $testarray unserialize($_REQUEST['formdata']); 
      durchführe bekomme ich den Fehler:
      unserialize() failed at offset 6 of 431 bytes

      kopiere ich mir aber für Testtwecke den Anhang der URL heraus und füge diesen String manuell
      ins dl_produktdata.php und führe mit diesem String ein unserialize durch, klappt es genau so wie es sein muss, genial!!!

      Was habe ich falsch gemacht?

      Großen Dank schon einmal im Vorraus!

      Kommentar


      • #4
        es könnte helfen, noch mit urlencode()/urldecode() zu arbeiten ... alternative dazu, nimm sessions, speicher das array in einer session-variablen ... dann steht es überall zur verfügung.
        Kissolino.com

        Kommentar


        • #5
          Danke

          Danke wurzel!

          Leider bekomme ich immer noch einen Offset-Fehler bei unserialize().

          Ich werde es mal mit Session-Variablen versuchen.
          Hoffe es klappt jetzt mal.

          Nochmals vielen Dank, Wurzel.
          Würde mich aber trotzdem interessieren, wie ich diesen verfluchten Offset-Fehler beseitigt bekomme.

          Gruß´Dieter

          Kommentar


          • #6
            Re: Danke

            Original geschrieben von dieterm
            Würde mich aber trotzdem interessieren, wie ich diesen verfluchten Offset-Fehler beseitigt bekomme.
            hast du es denn jetzt mit urlencode/-decode versucht?

            und spielt evtl. magic_quotes_gpc da noch mit rein?
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Ich habe urldecode und urlencode jetzt mal eingesetzt.

              Leider immer noch dieser verfluchte Offset-Fehler, überall wo ich Arrays übergeben will. Mir ist aufgefallen, dass es egal ist ob assoziativ oder indiziert.

              magic_quotes_gpc is auf ON.

              Ich bekomme wirklich graue Haare, so eine Sache hält mich echt auf.

              Vielleicht hat noch einer eine Idee

              Anderer Code, gleicher Fehler
              PHP-Code:
              header"location: main.php?action=showpoll&produktid=".$_REQUEST['produktid']."&quest=".urlencode(serialize($_POST['quest']))) 
              Schönen Sonntag!

              Kommentar


              • #8
                PHP-Code:
                $_REQUEST['quest'// ist das Array 

                // vielleicht ist hier der Fehler
                $test  urldecode($_REQUEST['quest']);
                //$test sieht gut aus, alle Werte des ehemaligen Array sind drin
                $array unserialize($test);  // Hier kommt IMMER ein Offset Fehler 

                Kommentar


                • #9
                  teste mal:
                  PHP-Code:
                  <?php
                  $arr 
                  = array(1223, array(14,84,94));
                  $a0 serialize($arr);
                  $a1 urlencode($a0);
                  if(!isset(
                  $t))
                  {
                      
                  header("LOCATION: ".$_SERVER['PHP_SELF']."?t=".$a1."");
                  }
                  else
                  {
                      echo 
                  '<pre>
                      alt:'
                  ;
                      
                  print_r($arr);
                      echo 
                  'neu: ';
                      
                  print_r(unserialize(urldecode($_REQUEST['t']))).chr(13);

                      echo 
                  chr(13).'alt1: '.$a0.chr(13);
                      echo 
                  'neu2: '.urldecode($_REQUEST['t']).chr(13);
                  }
                  ?>
                  läuft bei mir problemlos unter winxp & linux, magic_quotes = on
                  Kissolino.com

                  Kommentar


                  • #10
                    Original geschrieben von dieterm
                    magic_quotes_gpc is auf ON.
                    dann probier mal, vorher noch stripslashes zu machen.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Danke Wurzel!

                      Ich habe deinen Code bei mir mal getestet und er funktioniert auch super!

                      Leider bei meinem Code immer noch nicht.

                      Die einzige Erklärung die mir noch bleibt ist das Formular was das ganze
                      verhunzt.
                      Also kurz noch mal die Erklärung.

                      User klickt auf Formularabsenden,
                      jetzt überprüfe ich ob alles in Ordnung oder anderer Button gedrückt worden ist, falls nicht mache
                      ich entweder die header(location: ....) (falsche Eingabe) Geschichte oder für ein neues Fenster die window.open() (Auswahldialog) Sache.

                      Bei beiden knallt er mir bei unserialize weg
                      (Code läuft schon weiter, nur der Debugger zeigt mir den Fehler an
                      und die Variable ist leer).
                      Der PHP-CODE von Wurzel hat gezeigt, dass er bei mir ja klappt.
                      (Ich versichere euch ich mache es genauso wie Wurzel!!)

                      Hat einer von euch schon mal Erfahrungen gemacht,
                      mit Abbrechen eines Submit-Vorganges bei einem Formular, vielleicht wird irgendwie
                      ein Byte umgesetzt oder sonst was, aber unserialize kommt mit dieser
                      Sache einfach nicht zurecht, aber da muss es eine Lösung geben.

                      Gruß aus Köln
                      Dieter

                      Kommentar


                      • #12
                        Sorry Wahsaga!!!

                        Das war es, ich fasse ich nicht!

                        Es klappt!!!!!!

                        Es ist zwar jetzt egal, aber trotzdem scheint durch diesen Abbruch des Formularsubmits sich eine Kleinigkeit verändert zu haben,
                        weil Wurzels Code ,ohne Form, auch so funktioniert.

                        Herzlichen Dank an euch beide.

                        Ihr habt mir wirklich sehr weitergeholfen!
                        Ich feue mich hier wie ein kleines Kind,
                        wollte schon wieder "format *" auf alles machen!

                        WAHNSINN

                        Dieter!

                        Kommentar

                        Lädt...
                        X