vorblättern und zurück bei suchergebnis

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

  • vorblättern und zurück bei suchergebnis

    Hallo Leute,


    ich habe einen Kontaktanzeigenmarkt geschrieben und möchte, dass nur 4 Ergebnisse pro Seite aufgelistet werden, nach einer Suche.
    Die anderen Anzeigen kann man sich durch vorblättern oder so angucken.

    Hier die Abfrage der Datenbank meiner Suche:
    PHP-Code:
    $sql="SELECT * FROM $tabellenname WHERE Spitzname LIKE '$sspitzname%' AND Rubrik LIKE '$srubrik' AND Land LIKE '%$sland%'
    AND Raucher LIKE '%
    $sraucher%' AND PLZ >= '$splzvon' AND PLZ <= '$splzbis' AND Age >= '$saltervon' AND Age <= '$salterbis'
    ORDER BY Spitzname DESC"

    Habe dann schon einiges probiert, doch bei der Ausgabe der Links weiter und zurück um zu blättern, weiß ich nicht, wie ich die
    ganzen Variablen der Suche übergeben soll, für die Datenbankabfrage ???
    Hier mal verkürzt, wie ich es bisher gemacht habe, mit Hilfe von einem Buch.
    PHP-Code:
    <?php

    $anzeigen
    =4;

    if(
    $vor){$start=$limit+$anzeigen};
    if(
    $back){$start=$limit-$anzeigen};
    if($!
    start){$start=0};

    //Auslesen der Einträge
    $sql="SELECT * FROM $tabellenname WHERE Spitzname LIKE '$sspitzname%' AND Rubrik LIKE '$srubrik' AND Land LIKE '%$sland%'
    AND Raucher LIKE '%
    $sraucher%' AND PLZ >= '$splzvon' AND PLZ <= '$splzbis' AND Age >= '$saltervon' AND Age <= '$salterbis'
    ORDER BY Spitzname DESC"
    ;
    $link=mysql_connect($host$benutzer$passwort);
    mysql_select_db($datenbank$link);
    $result=mysql_query($sql$link);

    for(
    $i=0;$i<mysql_num_rows($result);$i++)
     {
      
    $ergebnis[$i]=mysql_fetch_array($result);
     }

    //Ermitteln wie viel Einträge vorliegen
    $sql1="SELECT Id FROM $tabellenname;
    $result1=mysql_query($sql1,$link);
    $max=mysql_num_rows($result1);

    ?>


    //Ausgabe der Einträge
    <td width="
    15%" bgcolor="#EAEAEA" height="1">
    <p align="left"><b><font size="1" face="Arial">

    <?
    php

    //Nur Ort und Postleizahl
    echo $ergebnis[$i][Ort];
    echo 
    "<br>";
    echo 
    "(";
    echo 
    $ergebnis[$i][PLZ];
    echo 
    ")";

    ?>

    </font></b></td>


    //Ausgeben der Links vor und zurück
    <?php

    if($start>=$anzeigen)
     {
      echo 
    "<br><br> <a href=suchergebnisse.php?limit=".$start."&back=1>Zurück</a>";
     }

    if(
    $start+$anzeigen<$max)
    {
     echo 
    "<br><br> <a href=suchergebnisse.php?limit=".$start."&vor=1>Weiter</a>";
    }

    ?>
    Ziemlich viel, ich hoffe einer Blickt durch und kann mir weiterhelfen !!!

    Danke schon einmal im Voraus.


    Gruß
    Sven.

  • #2
    Sorry, hab nicht ganz so viel Zeit deinen Code durchzulesen, aber:

    in der anfangsseite ist das ja noch egal. Da ist LIMIT 0,4 dann machst du $start = $start+4; und setzt dann einen link start=$start und das isset. Für zurück kommt dann einfach ein -4

    Kommentar


    • #3
      aha nicht wirklich

      das war leider nicht wirklich eine antwort auf meine frage, da es mir auch noch mehr um den link geht, vor und zurück, wie ich die ganzen variablen der suchergebnisses übergebe usw.

      trotzdem thanks.

      gruß
      sven.

      Kommentar


      • #4
        setzt $sql doch einfach in die URL rein!

        Oder machs per Formular und Hidden field!

        Kommentar


        • #5
          danke stimmt

          wie einfach, ich probiere es mal, kann etwas dauern.
          danke schon mal, vielleicht klappt das ja.

          bis dann, ich lass nochmal was von mir hören...

          gruß
          sven.

          Kommentar


          • #6
            vielleicht interessiert dich dieser Beitrag , der schon vor einiger zeit auf www.php-center.de erschienen ist.

            also damit habe ich auch eine aehnliche blaetterfunktion hinbekommen.

            http://www.php-center.de/artikel/blaettern.php3

            viel spass damit.

            mfg
            kapitaenIGLO

            Kommentar


            • #7
              @kapitaenIGLO:
              Da wird das SQL-Statement aber nicht mit übergeben. Da bleibt die Abfrage immer gleich. Das war ja auch mein erster Vorschlag, der leider nicht akzeptiert wurde

              Du kannst natürlich auch nur die einzelnen Werte übergeben. Ist die Frage was schöner ist. Und bei Änderungen musst du etwas mehr anpassen.

              Kommentar


              • #8
                PS: Auch bei Google werden alle Fehler einzeln in der URL übergeben:
                http://www.google.de/search?hl=de&ie...a=lr%3Dlang_de

                Kommentar


                • #9
                  Ich nutze das Script "Datebase Browser mit prev-und next-Button" von PHP-Resource in leicht modifizierter Version:
                  Datei 1
                  PHP-Code:
                  <?
                  /*
                  Datei-Name : yourscript.php => (ExampleFilename) gibt die Ergebnisse aus 
                  VON:         Guido Nultsch [email]g.nultsch@schmitzz.de[/email]
                  ([url]http://www.schmitzz.de[/url]):

                  1. Die Seite, die die Datei aufruft, muss folgenden modifizierten Code enthalten
                  */

                      $m = "10";                                     // Maximalwert
                      
                      $getsql = "FROM yourtable ORDER BY 'ID' DESC"; // SQL-Abfrage fuer beide Scripte
                      
                      include ($path_to."/vorzur.php");              // Vor-Zurueck SQL-Aufruf
                      
                      echo $Button;                                  // Ausgabe der Navigation aus vorzur.php
                      
                      // Jetzt kommt die Abfrage der Ergebnisse mit der Limitierung
                      
                      $sql = mysql_query("SELECT * $getsql LIMIT $RL, $m") or die($abfragefehler);
                      $Results = mysql_num_rows($sql) or die ("Datenbankabfrage war nicht m&ouml;glich oder Tabelle leer!");
                      
                      
                      if ($Results != '0') {
                          
                          while ($row = mysql_fetch_array($sql))
                          {
                              $id = $row["id"];
                              $password = $row["password"];
                              $name = $row["name"];
                              
                              include ("list_template.php");
                          }
                      }
                  ?>
                  Datei 2
                  PHP-Code:
                  <?
                  /* 
                  Die includierte Datei zum erzeugen der LIMIT-WERTE und der Navigation

                  Datei-Name :    vorzur.php => erzeugt die Navigation
                  Original :      demoBrowsDB.php3
                  VON:            [url]http://www.php-resource.de/sourcecode.php?Filename=demoBrowsDB.php3[/url]
                  MODIFIKATIONEN: Guido Nultsch [email]g.nultsch@schmitzz.de[/email]
                                  ([url]http://www.schmitzz.de[/url])

                  This little Script build the  prev- , Pages- and next- Button

                  see it in action at [url]http://www.it-development.de[/url]
                  if you have an questions : Bernhard Bauder
                                              [email]bbauder@it-development.de[/email]
                  Have fun.
                  Berni
                  2.01.2001

                  change the Link Filename :  news.php to match your Filename
                  Link 44,52,59

                  After you are finished, just print the  $Button vaiable
                  Have fun


                  Your Selectstatement
                  */
                  $Select="SELECT count(*) $getsql";

                  $MaxRow=$m;
                  if (!isset($CR))
                   {
                              //$resultnav = mysql_query($Select);
                              $resultnav = mysql_query($Select) or die ("Datenbankfehler! versuchen Sie es erneut");
                              $row=mysql_fetch_row($resultnav);
                              $CR=$row[0];
                              $RL=0;
                   }

                  $AnzahlSeiten=intval($CR/$MaxRow);
                  if ($AnzahlSeiten < ($CR/$MaxRow))
                   {
                              $AnzahlSeiten++;
                   }

                  // check for Prevbutton
                  if   ($RL > 0)
                   {
                              $y=$RL-$MaxRow;
                              $Button .= "<a href=\"$PHP_SELF?CR=$CR&RL=$y\">-</a> ";
                   }


                  for ($i = 1; $i <= $AnzahlSeiten; $i++)
                    {   $y=($i*$MaxRow)-$MaxRow;
                       if ($y==$RL){
                          $Button .= "[<i>$i</i>] ";
                       } else {
                           $Button .= "[<a href=\"$PHP_SELF?CR=$CR&RL=$y\">$i</a>] ";
                       }
                    }

                   // check for Nextbutton
                  if   ($RL < ($CR-$MaxRow)) {
                  $y=$RL+$MaxRow;
                  $Button .=  "<a href=\"$PHP_SELF?CR=$CR&RL=$y\">+</a> ";
                  }

                  ?>
                  Ich hoffe, der Tehlerfeufel hat mir jetzt kein Schnäppchen geschlagen

                  Kommentar


                  • #10
                    hallo, ich habe schon das Forum durchsucht, aber keine Lösung gefunden. ich benutze dieses script und bin auch zufrieden,
                    aber wie passt man dieses demoBrowsDB.php3 script an, sodass die Navigation sich automatisch anpasst?
                    z.B: Ich befinde mich auf der ersten Seite:
                    Anzeige soll sein: [1][2][3][4]...[50]

                    Ich befinde mich auf der 33. Seite:
                    Anzeige soll sein: [1]...[32][33][34]...[50]

                    Ich befinde mich auf der letzten Seite:
                    Anzeige soll sein: [1]...[47][48][49][50]

                    es ist ja genau so wie hier in diesem Forum bei den Beiträgen, sowas sollte doch machbar sein...
                    für eure hilfe bin ich sehr dankbar...

                    gruss max
                    Zuletzt geändert von max muller; 29.08.2002, 11:48.

                    Kommentar


                    • #11
                      Ich kenne den Inhalt der DB...php3 nicht. Deshalb auch nur etwas generelles.

                      Die Anzahl der Seiten erhältst du, indem du die Anzahl der Ergebnisse durch die Ergebnisse pro Seite teilst. Dürfte klar sein.

                      Auf welcher Seite du dich befindest, steht in der URL. Davon ziehst du einen ab und fügst einen hinzu. (Wenn du den Starteintrag hast, also nicht page=5 sonderm eintrag=25 dann musst du halt entsprechend mehr hinzufügen und abziehen.)

                      Und seite1 und letzte seite, werden halt immer angezeigt.

                      PS: In deinem Beispiel hast du mal 6 seitenzahlen und mal 5 benutzt. Ich denke das war ein versehen.

                      PPS: Wenn du das wieder alles wusstest, und speziell für die ...php3 Datei einen Code haben wolltest, tuts mir leid. Aber ich denke, da kann man sich was zusammendichten.

                      Kommentar


                      • #12
                        hier ist nochmal der inhalt des demoBrowsDB.php3 scripts,..
                        ich verstehe deine generellen Antworten, nur leider fehlt mir wohl
                        das nötige quentchen programmierkunst.
                        ps. das mit der mal 5, mal 6 ist natürlich ein versehen, (habs korrigiert) cool wäre es natürlich auch wenn man die Anzahl der
                        buttons mit einer variable bestimmen kann..

                        die momentane ausgabe des scriptes ist bei angenommenen 38 einträgen:
                        - [1] [2] [3] fortlaufend bis [38] +

                        die gewünscht ausgabe lautet:
                        [1] ... - 6 7 [8] 9 10 + ... [38]

                        vielleicht hat jemand sowas schon mal bei diesem script getan,
                        ist ja glaub ich das skript welches dieses forum bei den beitragen benutzt.

                        danke



                        PHP-Code:
                        <?
                        /* 
                        Die includierte Datei zum erzeugen der LIMIT-WERTE und der Navigation

                        Datei-Name :    vorzur.php => erzeugt die Navigation
                        Original :      demoBrowsDB.php3
                        VON:            <a href="http://www.php-resource.de/sourcecode.php?Filename=demoBrowsDB.php3" target="_blank">[url]http://www.php-resource.de/sourceco...emoBrowsDB.php3[/url]</a>
                        MODIFIKATIONEN: Guido Nultsch [email]g.nultsch@schmitzz.de[/email]
                                        (<a href="http://www.schmitzz.de" target="_blank">[url]http://www.schmitzz.de[/url]</a>)

                        This little Script build the  prev- , Pages- and next- Button

                        see it in action at <a href="http://www.it-development.de" target="_blank">[url]http://www.it-development.de[/url]</a>
                        if you have an questions : Bernhard Bauder
                                                    [email]bbauder@it-development.de[/email]
                        Have fun.
                        Berni
                        2.01.2001

                        change the Link Filename :  news.php to match your Filename
                        Link 44,52,59

                        After you are finished, just print the  $Button vaiable
                        Have fun


                        Your Selectstatement
                        */
                        $Select="SELECT count(*) $getsql";

                        $MaxRow=$m;
                        if (!isset($CR))
                         {
                                    //$resultnav = mysql_query($Select);
                                    $resultnav = mysql_query($Select) or die ("Datenbankfehler! versuchen Sie es erneut");
                                    $row=mysql_fetch_row($resultnav);
                                    $CR=$row[0];
                                    $RL=0;
                         }

                        $AnzahlSeiten=intval($CR/$MaxRow);
                        if ($AnzahlSeiten < ($CR/$MaxRow))
                         {
                                    $AnzahlSeiten++;
                         }

                        // check for Prevbutton
                        if   ($RL > 0)
                         {
                                    $y=$RL-$MaxRow;
                                    $Button .= "<a href=\"$PHP_SELF?CR=$CR&RL=$y\">-</a> ";
                         }


                        for ($i = 1; $i <= $AnzahlSeiten; $i++)
                          {   $y=($i*$MaxRow)-$MaxRow;
                             if ($y==$RL){
                                $Button .= "[<i>$i</i>] ";
                             } else {
                                 $Button .= "[<a href=\"$PHP_SELF?CR=$CR&RL=$y\">$i</a>] ";
                             }
                          }

                         // check for Nextbutton
                        if   ($RL < ($CR-$MaxRow)) {
                        $y=$RL+$MaxRow;
                        $Button .=  "<a href=\"$PHP_SELF?CR=$CR&RL=$y\">+</a> ";
                        }

                        ?>
                        Zuletzt geändert von max muller; 29.08.2002, 13:27.

                        Kommentar


                        • #13
                          wie funktioniert das mit dem seitenanzeigen hier in diesem forum?

                          Kommentar


                          • #14
                            kann mir denn keiner helfen?
                            vielleicht ein tip wo ich dieses prinzip mal als code-beispiel mir ansehen kann?

                            ´...es ist ja genau so wie hier in diesem forum, glaube sogar dasselbe script....

                            ich würde die Vorschläge von TobiaZ ja anwenden, bin aber totaler newbie!

                            vielen dank schonmal,
                            gruss max

                            Kommentar


                            • #15
                              gleiche Problem

                              @max muller
                              ich habe genau das gleich problem wie Du.
                              Hast Du schon eine Lösung gefunden ?

                              Kommentar

                              Lädt...
                              X