Session-Prob (Limit)

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

  • Session-Prob (Limit)

    Hi,

    ich habe da ein Problem:

    Es soll auf einer Seite aus Dropdown-Feldern ein SQL-String gebaut
    werden. Man bekommt ohne Auswahl die kpl DB zurück, je mehr Auswahl
    desto weniger Ergebnisse (das klappt auch).
    Wenn der User z.B. 9 Einträge zurückbekommt wird diese mit einer LIMIT
    Anweisung auf 2 Seiten ausgegeben. Der Wert "5" ist in einer Variable drin
    und kann geändert werden. Erst 5 dann 4, der Rest also. Das ganze soll
    LOGO auch für alle anderen Werte funzen!
    Jetzt das Prob:
    Wenn ich auf Ergebnisseite 1 (LIMIT 0, 5) bin, soll man über "weiter" an
    die Ergebnisseite 2 (LIMIT 5, 5) kommen. Dazu wird einfach eine Variable
    hochgezählt, welche die LIMIT Anweisung bedient und mitgeschickt.
    Auf den Ergebnisseiten gibt es für jeden Datensatz eine Detailseite.
    Klickt der User auf diesen Link, geht die Detailseite auf und wenn er wieder
    zurück geht, ist der SQL-String resetet, also die LIMIT Sache ist hin.
    Jetzt dachte ich mir, man könnte das ganze in eine Session packen und
    darüber Sicherstellen, das die Auswahl nicht verloren geht.
    Jetzt ist die Auswahl nicht weg, aber er kommt nicht mehr auf
    Ergebnisseite 2.

    Wer mir bis hierhin folgen konnte sollte sich mal mein Testscript ansehen.
    Script A:
    PHP-Code:
    <?
    ////////////////////////////////////////////////////////////////////////////////////
    ini_set("session.use_cookies", 0);
    session_name("s");
    @session_start(s);
    session_register("sql");
    ////////////////////////////////////////////////////////////////////////////////////
    if (isset($sql)) // wenn sql in sess gesetzt, lösche sql
    {
    $sql='';
    $change='sql-var gelöscht'; //sag mir wenn du was löschst
    }
            
    if (! isset($time1)) // wenn uhrzeit noch nicht da
    {
    $hour1=date(H);
    $min1=date(i);
    $sec1=date(s);
    $time1=$hour1.":".$min1.":".$sec1;
    } else $change.='+ lastdate1 hat existiert.'; // wenn uhrzeit da melde es
    $hour2=date(H);
    $min2=date(i);
    $sec2=date(s);
    $time2=$hour2.":".$min2.":".$sec2; // bilde kontrollzeit
    $sql = "update table set time='$time1'"; // irgendein string, haupsache änderung wird sichtbar
    ?>
    <html>
    <head>
    <title>phantasmedia.de</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <? echo $sql;
    echo "<br><br><br>".$time2; 
    if (isset($change)) echo "<br><br><br>".$change."<br><br><br>"; ?>
    <a href="test_sess_b.php">weiter</a> 
    </body>
    </html>
    Script B:
    PHP-Code:
    <?
    ////////////////////////////////////////////////////////////////////////////////////
    ini_set("session.use_cookies", 0);
    session_name("s");
    @session_start(s);
    // session_register("sql");
    ////////////////////////////////////////////////////////////////////////////////////
            
    if (! isset($time1)) // wenn uhrzeit noch nicht da
    {
    $hour1=date(H);
    $min1=date(i);
    $sec1=date(s);
    $time1=$hour1.":".$min1.":".$sec1;
    } else $change.='+ lastdate1 hat existiert.'; // wenn uhrzeit da melde es
    $hour2=date(H);
    $min2=date(i);
    $sec2=date(s);
    $time2=$hour2.":".$min2.":".$sec2; // bilde kontrollzeit ?>
    <html>
    <head>
    <title>phantasmedia.de</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <? echo $sql; // werfe sql string aus
    echo "<br><br><br>".$time2; // werfe kontrollzeit aus
    if (isset($change)) echo "<br><br><br>".$change."<br><br><br>"; // gab es änderungen? ?>
    <a href="test_sess_a.php">zurück</a> 
    </body>
    </html>
    In Aktion gibt es das Script auf :
    http://www.pferde24.tv
    Pferdesuche; Auswahl "Stute"; weiter => 9 Ergebnisse

    Ich bin für jeden Einfall Dankbar...
    1402: Für einen Wimpernschlag der Zeit herrschte Gerechtigkeit auf Nord- und Ostsee...

  • #2
    nichts einfacher als das. auch wenn ich mir deinen code gar nicht erst angesehen habe.

    ich habe sowas auch bereits gemacht und gebe dir jetzt nur ein paar snippets, die du an deinen code anpassen musst. das ganze geht natürlich OHNE cookies....

    ich hoffe, ich habe nichts vergessen.
    live zu sehen ist das unter http://www.c-k-n.de/gaestebuch/

    PHP-Code:

      
    // gesamteinträge erkennen.
      
    $result mysql_query"SELECT COUNT(*) Anzahl FROM tabelle" );
      
    $zeile=mysql_fetch_array($result);
      
    $Gesamt $zeile["Anzahl"];

      
    // werte, die an das script übergeben werden müssen.
      // wenn nichts gesetzt, dass einfach setzen.
      
    if (!$Offset) { $Offset "0"; }
      if (!
    $Show)   { $Show   "5"; }

      
    // deine query muss nun hierher.
      // das limit muss entsprechend so sein.
      
    $sql "..... LIMIT  $Offset,$Show";
      
      
    // ausgabe deiner werte erfolgt hier.
      
      // nun zu den sachen vor/zurück
      
    if ( ($Offset $Show) >= ) {
        echo    
    "<input type=\"button\" name=\"btnback\" value=\"< zurück\" onClick=\"self.location.href='./?Offset=".($Offset $Show)."&Show=".$Show."'\"> ";
      }
      else {
        echo    
    "<input type=\"button\" name=\"btnback\" value=\"< zurück\" disabled> ";
      }

      if ( (
    $Offset $Show) < $Gesamt ) {
        echo    
    "<input type=\"button\" name=\"btnforw\" value=\"weiter >\" onClick=\"self.location.href='./?Offset=".($Offset $Show)."&Show=".$Show."'\"> ";
      }
      else {
        echo    
    "<input type=\"button\" name=\"btnforw\" value=\"weiter >\" disabled> ";
      } 
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Mein Script läuft im Prinzip so ab.
      Ausser das es mit $PHP_SELF; statt mit javasript.
      Das funzt auch. Wenn ich mir den sql-string ausgebe, wird das LIMIT
      auch korrekt übergeben. Nur das mit der Detailseite und zurück
      klappt nicht. Da wird entweder der String resetet oder gelöscht.
      Ich will aber den SQL-String als Variable an die Detailseite übergeben.
      Dann kann ich auf dem Rückweg die Existenz dieser Variable checken
      und wenn vorhanden benutzen, um die Ausgabe so zu machen, wie vor
      dem Sprung zu Detail.
      Nur wenn ich auf weiter klicke soll der String mit neuem Limit gebildet
      werden.
      1402: Für einen Wimpernschlag der Zeit herrschte Gerechtigkeit auf Nord- und Ostsee...

      Kommentar


      • #4
        gib nie einen sql-string als paramter weiter
        das macht deine DB angreifbar.....

        wenn du auf die detailseite gehst, gibt $offset und $show mit. wenn du wieder zurück willst, gib die zwei vars wieder mit zurück.

        damit sollte es aber funktionieren.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Danke!!!

          Habe den SQL jetzt in der session, aber ohne Limit.
          das LIMIT wird auf jeder gebildet (aus offset und show).

          1402: Für einen Wimpernschlag der Zeit herrschte Gerechtigkeit auf Nord- und Ostsee...

          Kommentar


          • #6
            supi.
            aber offset und show kannst du ja auch als separate VARs in der session speichern, wenn du magst...
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              nee! besser nicht!
              sonst kann ich sie wieder nicht löschen wenn sie
              upgedatet werden sollen und ich bin wieder am
              Anfang...
              1402: Für einen Wimpernschlag der Zeit herrschte Gerechtigkeit auf Nord- und Ostsee...

              Kommentar


              • #8
                die vars updaten sich selber, wenn du sie veränderst.
                du musst aber auf jeder seite das session_start() am anfang haben, sonst geht dir die session verloren.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar

                Lädt...
                X