Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] paging

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

  • [Erledigt] paging

    Hallo zusammen, ich dreh jetzt dann gleich am Rad! Versuche schon seit Tagen eine paginierung zu machen.... das heisst ich habe ein ajax, php, mysql script welches Daten aus der Datenbank anzeigt, aber wie mach ich da ein paging?

    Habe schon nacht tutorials gesucht aber ich kriegs einfach nicht hin. Hat jemand ein einfache Tutorial für mich?

    Danke und Gruss, Rilana


  • #2
    Hi.

    Wie sieht dein Code bis dato aus? Hier findest du ein einfaches Beispiel:

    PHP-Einfach.de - Tutorial - Blätterfunktion

    etwas komplizierter:

    PHP-Einfach.de - Erweiterte Blätterfunktion

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Hoi Wolf29

      Vielen Dank für deine Antwort, das Problem ist nur dass ich ein ajax php mysql blättern brauche....

      unten mein Code, hast du da ne Idee?

      Danke

      //mein Javascript:
      Code:
      <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js"></script>
       
      
      <script type="text/javascript">
      $(document).ready(function(){
      	$(".kaufB").click(function(){
      		$(".kauf").slideToggle("fast");
      		$(".tech").hide("fast");
      		$(".dienst").hide("fast");
      		$(this).toggleClass("active");
      		return false;
      	});
      	$(".techB").click(function(){
      		$(".tech").slideToggle("fast");
      		$(".kauf").hide("fast");
      		$(".dienst").hide("fast");
      		$(this).toggleClass("active");
      		return false;
      	});
      	$(".dienstB").click(function(){
      		$(".dienst").slideToggle("fast");
      		$(".kauf").hide("fast");
      		$(".tech").hide("fast");
      		$(this).toggleClass("active");
      		return false;
      	});
      	
      });
      
      var xmlhttp;
      
      function showUser(str,region,anstellung)
      {
      xmlhttp=GetXmlHttpObject();
      if (xmlhttp==null)
        {
        alert ("Browser does not support HTTP Request");
        return;
        }
      var url="stellenResult.php";
      url=url+"?q="+str+"&a="+region+"&b="+anstellung;
      url=url+"&sid="+Math.random();
      xmlhttp.onreadystatechange=stateChanged;
      xmlhttp.open("GET",url,true);
      xmlhttp.send(null);
      }
      
      function stateChanged()
      {
      if (xmlhttp.readyState==4)
      {
      document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
      }
      }
      
      function GetXmlHttpObject()
      {
      if (window.XMLHttpRequest)
        {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        return new XMLHttpRequest();
        }
      if (window.ActiveXObject)
        {
        // code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
        }
      return null;
      }
      
      </script>
      //htmL:
      Code:
       <select name="admin" id="admin">
                  <optgroup label="">
                    <option value="admin">Administration/HR/Consulting/CEO</option>
                    <option value="5" >→ CEO/Geschäftsführung</option>
                    <option value="2" >→ Assistenz/Sekretariat/Empfang/Sachbearbeitung</option>
                    <option value="8" >→ Personalwesen/‐entwicklung</option>
                    </optgroup>
                    
                  <optgroup label="">
                    <option value="kauf">Verkauf/Einkauf/Marketing/Kundendienst/Logistik</option>
                    <option value="4">→ Verkauf Innen‐ & Aussendienst/Akquisition</option>
                    <option value="9" />→ Verkauf Innendienst/Back‐Office</option>
                    <option value="10" />→ Marketing/Produktmanagement</option>
                    <option value="11" />→ Import/Export/Logistik</option> 
                    </optgroup>
                  
                  <optgroup label="">
                    <option value="finanz">Finanzen/Treuhand/Immobilien/Banken/Versicherungen</option>
                    <option value="12" />→ Buchhaltung/Controlling/Treuhand/Immobilien</option> 
                    <option value="13" />→ Banken</option> 
                    <option value="14" />→ Versicherungen </option> 
                  </optgroup>
                </select>
      
      <select name="region" id="region">
      <option value="100">Ganze Schweiz</option>
      <option value="2" />Rechtes Seeufer</option>
      <option value="6" />Graub&uuml;nden</option>
      <option value="5" />Zürich</option>
      <option value="1" />Linkes Seeufer</option>
      <option value="3" />Glarus</option>
      <option value="4" />Zürich Oberland</option>
      <option value="7" />Zentralschweiz</option>
      <option value="8" />Kanton Zug</option>
      <option value="9" />Ostschweiz</option>
      <option value="10" />Deutschschweiz</option>
      <option value="11" />Welschland / Französische Schweiz</option>
      <option value="12" />Südschweiz / Italienische Schweiz</option>
      </select>
      
      <select name="anstellung" id="anstellung">
      <option value="100">Alle Anstellungen</option>
      <option value="temp" />Temporäre Anstellung</option>
      <option value="try" />Try and Hire</option>
      <option value="fest" />Feste Anstellung</option>
      <option value="festTemp" />Fest und Temporäre Anstellung</option>
      
      </select>
      
      <input type='button' value=' GO' onclick="showUser(document.getElementById('admin').value,document.getElementById('region').value,document.getElementById('anstellung').value)">
      </form>
      //und mein PHP

      PHP-Code:
      $q=$_GET["q"];
      // Make a MySQL Connection
      $con mysql_connect("""""") or die(mysql_error());

      if (!
      $con)
        {
        die(
      'Could not connect: ' mysql_error());
        }

      mysql_select_db(""$con);
        
        
      mysql_query("SET NAMES 'UTF8'");  



      // GROUP BY limits the output by 1 per stelleID...:-)
      $sql "SELECT
                  *
              FROM 
                  stelle 
              JOIN 
                  stelle_region
              ON
                  stelle_region.stelleID=stelle.stelleID
              JOIN
                  region
              ON
                  region.regionID=stelle_region.regionID
              JOIN 
                  stelle_beruf
              ON
                  stelle_beruf.stelleID=stelle.stelleID
              JOIN
                  beruf
              ON
                  beruf.berufID=stelle_beruf.berufID

              WHERE stelle_beruf.berufID = '"
      .$q."' and stelle_region.regionID IN ".$a." and (stelleAnstellung IN ".$b.") GROUP BY stelle.stelleID order by stelle.stelleDatumsanzeige = 'fake' DESC, stelle.stelleDatum DESC";

              
      echo 
      $sql;

          

      $result mysql_query($sql);


      $r mysql_fetch_row($result);  
      $numrows $r[0];  
      $numrows mysql_num_rows ($result);



      // makes shoure that the output is not -1
      $resultOutput mysql_query($sql);


      $result mysql_query($sql$con) or trigger_error("SQL"E_USER_ERROR);

      //print table
      echo "<table width='100%' border='0' cellpadding='0'>";
      echo 
      "<tr height='40px'><td>";
      echo 
      "Ihre Suche ergab <span class='zahl'>$numrows</span> Treffer";
      echo 
      "</tr></td><td></td></tr>"

      Kommentar


      • #4
        Hallo Rilana, da ich sehe dass du jQuery benutzt, würde ich vorschlagen, den jQuery Pager plugin zu benutzen

        jQuery plugin: Tablesorter 2.0 - Pager plugin

        du lädst einfach alle daten in eine tabelle und durch diesen plugin, werden bestimmte spalten einfach ausgeblendet, somit musst du keine SQL strings generiere und mit ajax sortieren. sondern alles passiert über JS.
        apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp

        Kommentar


        • #5
          Das geht aber nur bei "kleinen" Tabellen, hast du zig tausend Einträge ist das keine Möglichkeit die noch effektiv arbeitet.

          Kommentar


          • #6
            wieso? muss man doch nur dann beim ersten mal etwas länger warten, dafür gibt es keine wartezeiten beim seitenwechsel.

            zusätzlich kann man ja sagen dass beim laden, erstmal 1000 datensätze geladen werden ,in die tabelle

            jQuery plugin: Tablesorter 2.0 - Appending table data with ajax

            und sobald 1000 > anzahl beiträge pro seite * seite kann man dann die nächsten 1000 daten an die tabelle dranhängen
            apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp

            Kommentar


            • #7
              Ja aber stell dir vor du hast 400 000 Datensätze, die willst du nicht beim ersten mal laden oder?

              Und wenn du sie anhängst kannst du nicht mehr sortieren! Dann kannst du zwar unter den ersten x Einträgen sortieren, aber die die angehängt werden werden in die Sortierung nicht mit aufgenommen. Das Plugin ist also nicht unter allen Umständen einsetzbar. Für wenige Einträge kann man schon alle laden, dann ist das Plugin super, aber bei mehreren ...

              Kommentar


              • #8
                Vielen Dank Leute... so nett dass ihr mir versucht zu helfen! Habs inzwischen mit [url=http://th3silverlining.com/2010/04/15/pajination-a-jquery-pagination-plugin/]Pajinate – A jQuery Pagination Plugin

                Kommentar


                • #9
                  Zitat von Rilana Beitrag anzeigen
                  Vielen Dank Leute... so nett dass ihr mir versucht zu helfen! Habs inzwischen mit Pajinate – A jQuery Pagination Plugin
                  ja aus diesem grund liebe ich jQuery ist gibt für das alles plugins
                  apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp

                  Kommentar


                  • #10
                    sorry, irgendwie ging da nicht der ganze Beitrag mit

                    Kommentar


                    • #11
                      OK nächstes Mal schreib ich meinen Beitrag nicht mehr ins Zitat...

                      jedenfalls habe ich es mit diesem Plugin nicht hingekriegt....

                      Sieht Ihr da den Fehler? Anscheinend bin ich zu doof sogar ein Plugin zu benützen

                      Code:
                      <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js"></script>
                      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
                      
                      		<script type="text/javascript" src="jquery.pajinate.js"></script>
                      
                      
                      
                      
                      <script type="text/javascript">
                      $(document).ready(function(){
                      	$(".kaufB").click(function(){
                      		$(".kauf").slideToggle("fast");
                      		$(".tech").hide("fast");
                      		$(".dienst").hide("fast");
                      		$(this).toggleClass("active");
                      		return false;
                      	});
                      	$(".techB").click(function(){
                      		$(".tech").slideToggle("fast");
                      		$(".kauf").hide("fast");
                      		$(".dienst").hide("fast");
                      		$(this).toggleClass("active");
                      		return false;
                      	});
                      	$(".dienstB").click(function(){
                      		$(".dienst").slideToggle("fast");
                      		$(".kauf").hide("fast");
                      		$(".tech").hide("fast");
                      		$(this).toggleClass("active");
                      		return false;
                      	});
                      		
                      					$('#txtHint').pajinate();
                      	
                      });
                      
                      
                      </script>
                       
                      <script type="text/javascript" src="selectuser.js"></script>
                      
                      <div id="txtHint"></div>
                      
                         <script>
                      			$(document).ready(function(){
                      				$('li:odd, .content > *:odd').css('background-color','#FFD9BF');
                      			});
                      		</script> 
                      
                          <p></p>
                      	</div>
                      PHP-Code:
                      echo "<div class='page_navigation'></div>";
                      echo 
                      "<ul class='content'>";
                      echo 
                      "<li><span class='stellen'>";
                      echo 
                      $row['stellePosition'];
                      echo 
                      "</span><br />";
                      echo 
                      "$datumDef";
                      $text=strip_tags ($row['stelleStellenbeschrieb']);
                      echo 
                      substr($text,0,100);
                      echo 
                      "... ";
                      echo 
                      "<a href=\"stellenDetail.php?stelleID=$row[stelleID]\">|weiter > </a>";
                      echo 
                      " </li> </ul>    </div> <div>"

                      Kommentar


                      • #12
                        Zitat von Rilana Beitrag anzeigen
                        Sieht Ihr da den Fehler? Anscheinend bin ich zu doof sogar ein Plugin zu benützen
                        Zum Verfassen vernünftiger Problembeschreibungen offenbar auch.

                        „Funzt nich“ ist keine.

                        Kommentar


                        • #13
                          OK ich glaub ich weis nun wo das Problem liegt.
                          Wenn ich die Seite im Browser öffne und mir dann den Quelltext anzeigen lasse, dann steht da gar nichts drin von meinen Ausgaben. Wenn ich es also ganz normal im Browser aufrufe, dann sehe ich da ne Auflistung, aber wenn ich dann im HTML nachschaue dann steht da kein einziger Inhalt der Liste? Hat das mit der mysql / php Datenanbindung zu tun?

                          Im <div id="txtHint"></div> sollte was stehen, aber da steht absolut nichts. Desshalb kann die pagination also auch nicht funktionieren, weil diese scripts ja die ul oder li tags checken....

                          Hier nochmal der relevante Code:

                          Formular übergabe an javascript
                          Code:
                          <input type='button' value=' GO' onclick="showUser(document.getElementById('admin').value,document.getElementById('region').value,document.getElementById('anstellung').value)">
                          </form>
                          javascript
                          Code:
                          var xmlhttp;
                          
                          function showUser(str,region,anstellung)
                          {
                          xmlhttp=GetXmlHttpObject();
                          if (xmlhttp==null)
                            {
                            alert ("Browser does not support HTTP Request");
                            return;
                            }
                          var url="stellenResult.php";
                          url=url+"?q="+str+"&a="+region+"&b="+anstellung;
                          url=url+"&sid="+Math.random();
                          xmlhttp.onreadystatechange=stateChanged;
                          xmlhttp.open("GET",url,true);
                          xmlhttp.send(null);
                          }
                          
                          function stateChanged()
                          {
                          if (xmlhttp.readyState==4)
                          {
                          document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                          }
                          }
                          
                          function GetXmlHttpObject()
                          {
                          if (window.XMLHttpRequest)
                            {
                            // code for IE7+, Firefox, Chrome, Opera, Safari
                            return new XMLHttpRequest();
                            }
                          if (window.ActiveXObject)
                            {
                            // code for IE6, IE5
                            return new ActiveXObject("Microsoft.XMLHTTP");
                            }
                          return null;
                          }
                          ich denke mal das php is irrelevant, ist eine mysql Abfrage und gibt dann die records in einer Schlaufe aus.... Wie gesagt es wird ja dann auch dargestellt, nur frag ich mich wie???

                          Wäre wirklich dankar wenn Ihr mir die Augen öffnet! Danke, Rilana

                          Kommentar


                          • #14
                            Javascript-generierte Ausgaben siehst Du nicht im Quelltext.
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              aber dann geht ja kein jQuery pagination plugin mit generiertem code, sehe ich das richtig?

                              Kommentar

                              Lädt...
                              X