Announcement

Collapse
No announcement yet.

Session-Variable hat nicht den Wert den ich möchte

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Session-Variable hat nicht den Wert den ich möchte

    hi,<BR>
    ich habe in einer Datenbank 20 Datensätze. Für jeden Datensatz baue ich in einer Tabelle einen Link, der auf eine 2. Seite linkt, in dem die Daten dann angezeigt werden.<BR>
    Ohne Session also ... href='seite2.php?nummer=$nr'...<BR>
    Nun versuche ich dieses mittels session_register() zu lösen.<BR>
    //Schnipsel<BR>
    &lt;?php<BR>
    @session_start();<BR>
    session_register("s_nr");<BR>
    ?&gt;<BR>
    .<BR>
    .<BR>
    .<BR>
    <I> Folgende #Schleife wird in einer Tabelle aufgebaut</I><BR>
    for ($a=0;$a<20;$a++)<BR>
    {<BR>
    $s_nr = $feldnr[$a]<BR>
    &lt;a href='seite2.php'&gt;<BR>
    }
    <BR>
    .<BR>
    .<BR>
    Ich möchte nun, wenn auf den Link geklickt wird, daß sich die 2. Seite öffnet mit dem dementsprechenden Datensatz.<BR>
    Angezeigt wird mir auch einer, jedoch nur der letzte mit der Nummer 20. Ich habe bereits gelesen, daß immer der letzte Wert der Variablen ($s_nr)übergeben wird, <BR>aber wie erreiche ich, daß beim Anklicken der z. B. 3. Spalte mit der Nummer 3 auch der 3. Datensatz auf der nächsten Seite angezeigt wird?<BR>
    Ich hoffe, ich habe das einigermaßen verständlich geschrieben.<BR>
    <BR>
    Danke, Sven

  • #2
    Ich fürchte, was du möchtest lässt sich so nicht realisieren. Irgendwie muss die Wahl des Nutzers zum Server gelangen, und dazu gibt es über HTTP gerade zwei Möglichkeiten, HTTP GET und HTTP POST. Deine bisherige Lösung, also die Übergabe von Parametern (?var1=val1&var2=val2 etc) ist ein HTTP GET.
    Alternativ kannst du noch eine Form erstellen die per POST übertragen wird, und diese Form mittels HTML so verschleiern, dass der Benutzer sie nicht also solche erkennt (via CSS, button tag etc). Dann sind keine Paramter hinter der URL zu erkennen, wirklich schön ist so ein Murks aber nicht.

    Eine dritte Möglichkeit fällt mir grad ein, ist allerdings relativ kompliziert, und im Link den der Nutzer anklickt, bleiben die Parameter. Du könntest eine Zwischenseite erstellen, die den GET Parameter ausliest und in eine Sessionvariable zwischenspeichert, und dann per header("Location:$deineUrl"); unmittelbar zur richtigen Seite umleitet. Diese kann dann mit der Sessionvariable arbeiten.

    Bsp:
    start.php:
    &lt;a href="goto.php?id=$i"&gt;Nach $i gehen!&lt/a&gt;

    goto.php:
    session_start();
    session_register('goto');
    $goto = $i;
    header("Location:auswertung.php");

    auswertung.php:
    session_start();
    session_register('goto');
    tuedies($goto);
    tuedas($goto);
    zeigean($goto);

    Aber, um es nochmal zu sagen, mir fällt keine Möglichkeit ein auf HTTP GET zu verzichten, abgesehen mit Hilfe einer Zweckentfremdung via HTTP POST

    Comment


    • #3
      Das ist doch schon mal was, mit dem ich bestimmt etwas anfangen kann.<BR>
      Danke für die schnelle Antwort.<BR><BR>
      Gruß, Sve

      Comment


      • #4
        Wie Moritz gesagt hat, muessen die Daten ERST einmal zum Server (in Deinem Fall die Auswahl). Sessions sind dazu da, dass Daten, die bereits zum Server gesendet wurden, dort fuer die Dauer der Session gelagert werden und nicht immer wie noch oft zu sehen mit &lt;INPUT TYPE=hidden&gt; "durchgeschleift" werden muessen.<p>
        Natuerlich kannst Du die Uebergabe der Parameter auch mit Java-Script-Funktionen regeln, Hauptsache ist, dass die Auswahl des Benutzers zum Server geht und dort die entsprechende SQL-Anweisung ausloesen kann.<p>
        Gruss, Marc

        Comment


        • #5
          Hi Marco,<BR>
          vielleicht hab ich mich bei meiner Frage ein bißchen komisch ausgedrückt.Die Daten werden ja auch ZUERST an den Server übermittelt.<BR>Mit klick auf den link seite2.php wird $s_nr übergeben, dort anhand dieses Wertes die Daten aus der Tabelle geholt und dann angezeigt.<BR>Auf seite2.php ist natürlich für @session_start() gesorgt.<BR><BR>
          In meiner Schleife baue ich ja 20 Spalten auf - jede mit einem link auf die gleiche Seite, aber jede mit einem anderen Wert.<BR>
          In der var $s_nr steht logischerweise immer der zuletzt zugewiesene Wert, nämlich 20. Folglich wird bei klick dann seite2.php aufgerufen und gibt mir auf der Seite dann den 20.ten Wert der Tabelle aus.<BR>
          Ich möchte aber nun z. B. den 3.ten Wert haben - also auf den 3. link klicken. Ich könnte also eigentlich meine Schleife so aufbauen.<BR><BR>
          @session_start();<BR>
          session_register("s_nr");<BR>
          ?><BR>
          .<BR>
          .<BR>
          .<BR>
          Folgende #Schleife wird in einer Tabelle aufgebaut<BR>
          for ($a=0;$a<20;$a++)<BR>
          {<BR>
          $s_nr[$a] = $feldnr[$a];<BR>
          &lt;a href='seite2.php'&gt;;<BR>
          }<BR>
          .<BR>
          .<BR><BR>
          Nur hab ich hier das Problem mit der session_register("s_nr").<BR>
          Ich müßte eigentlich session_register("s_nr0","s_nr1","s_nr2",...) definieren. Und genau das ist ziemlich blöd

          Comment


          • #6
            Hm, ich versteh noch immer nicht, wie Du mit 20x &lt;a href='seite2.php'&gt;Link</a> dem Server die Auswahl mitteilen willst, die der Nutzer im Browser getroffen hat. Irgendwie kommt mir
            <pre>
            # folgende Schleife wird in einer Tabelle aufgebaut
            for( $a=0; $a<20; $a++) {
            echo "&lt;a href='seite2.php?s_nr=".$feldnr[$a]."'&gt;"
            }
            </pre>
            logischer vor - und auf seite2.php wird dann $HTTP_GET_VARS['s_nr'] in der Session gespeichert.<p>
            Oder hab ich wieder was nicht verstanden?<p>
            Gruss, Marc

            Comment


            • #7
              Deine Idee mit <BR>
              echo "&lt;a href='seite2.php?s_nr=".$feldnr[$a]."'&gt;" <BR>
              ist mir noch nicht gekommen. Ich werd's mal probieren.
              Danke, Sve

              Comment

              Working...
              X