array transport

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

  • array transport

    hallo,

    habe ein dickes prob und weiss nicht weiter hoffe das mir hier jemand helfen kann. nutze php 4.0.6. ich verwende ein array das wie folgt aufgebaut ist:

    array() = array(var1 => var2)

    dieses array möchte ich in einer session verwenden, kann es aber nicht von seite zu seite transportieren
    wenn ich das array auf der seite ausgebe, auf der ich es initialisiert habe, funzt es, aber eben nicht auf anderen seiten.
    die session ist auch ok, da ich einfache variablen wie zb. strings "hallo" oder so auf anderen seiten ausgeben kann.
    wenn ich jetzt auf das array zb. mit reset() zugreifen möchte bekomme ich folgenden fehler:

    Warning: Variable passed to reset() is not an array or object in ...

    wenn ich das array an session_is_registered() übergebe, bekomme ich true zurück.

    ich weiss echt nicht weiter

    hier noch ein bisschen code:

    seite 1...
    PHP-Code:
    session_name("s"); 
    session_start(); 
    session_register("meine_var"); 
    ...
      if(
    mysql_num_rows($result)) {
          
    $counter 0
          while(
    $row mysql_fetch_array($result)) {
              
    $meine_var[$counter] = array($row["id"] => "0");
              
    flush();
              
    $counter++;
          }
      }
    //ich fülle das array erstmal mit 0'en
    ... 
    seite 2...
    PHP-Code:
    session_name("s"); 
    session_start(); 
    session_register("meine_var"); 

        if(
    session_is_registered("meine_var"))
            echo
    "1";
        else
            echo
    "0";
        
        function 
    print_meinevar() {
            
    reset($meine_var); 
      
          while(
    $res each($meine_var)) {
              while(
    $inner_res each($res[1]))
                  echo 
    "index = $res[0] : $inner_res[0] => $inner_res[1]<br>\n";
          }
      } 
    ich hoffe das ist einigermaßen überschaubar
    hab schon so einiges probiert, zb. session_register() an's ende gesetzt, mit $_SESSION u. $HTTP_SESSION_VARS gearbeitet (geht ja bei 4.0.6 eh nicht), usw.

  • #2
    Soweit ich weiss kann man Arrays nicht so ohne weiteres uebergeben.
    Dafuer muss man serialize() verwenden.

    http://www.php.net/manual/de/function.serialize.php

    Kommentar


    • #3
      hm bekomm ich irgendwie auch nicht hin. aber ich probier morgen mal weiter... =) danke erstmal.

      Kommentar


      • #4
        session_register("meine_var");

        brauchst Du nur zu verwenden wenn Du die Variable einrichtest.

        In Versionen < 4.1.0 solltest Du $HTTP_SESSION_VARS verwenden.

        Natürlich kann man auch Arrays in Sessions speichern ... ich mache das seitdem ich Sessions verwende ... ohne Probleme!

        Allerdings solltest Du in der Funktion function print_meinevar() die Variable $meine_var als GLOBAL deklarieren!
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          jup, mach das session_register auf der 2ten seite weg..
          meine Projekte bestaunen: http://www.kleiza.de

          Kommentar


          • #6
            @Campus: Wichtiger ist, denke ich, das GLOBAL innerhalb der Funktion ... sonst wird er da die Variable nie sehen ...
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              sehr schön

              danke, so funzt das. mit global hatte ich es auch schon versucht. allerdings habe ich gedacht das es reichen würde die variable auf der ersten seite als global zu deklarieren und nicht erst in der funktion wo sie eigentlich nicht mehr global ist

              Kommentar


              • #8
                achso noch ein frage

                reicht es wenn ich session_name() im ersten script aufrufe oder muss ich session_name() auch auf allen folgenden seiten (innerhalb der session) aufrufen???

                Kommentar


                • #9
                  session_name() muß immer vor session_start() aufgerufen werden.
                  Es sei denn Du willst den Standard-Sessionnamen verwenden.

                  Die Variable ist GLOBAL weil Sie im Globalen Scope deklariert wurde.
                  Wenn Du innerhalb einer Funktion auf eine Variable zugreifst wird diese immer im lokalen Scope angelegt ... es sei denn Du hast sie über GLOBAL in diesem Scope zugänglich gemacht. Dann wird die Globale Variable verwendet.
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Kommentar


                  • #10
                    dank dir für die rasche antwort.

                    Kommentar

                    Lädt...
                    X