ďťż

Ładny brzuch

Witam, cały czas staram sobie poradzić wprowadzić stronnicowanie (dzielenie na strony) w moim projekcie bazo-danowym opartym na bazie "PostgreSQL" ale nie daję sobie rady, próbowałem na tablicach ale coś nie wychodzi, poniżej podaję kod. Może ktoś pomóc z wprowadzeniem tego do mojego projektu? Najpierw pobieram dane z bazy zapytaniem 'SELECT * FROM ludzie' i dostaje wynik np 30 osob i jak zrobić podział np na 10 osób przypadające na jedną strone.

//Zapytanie do bazy danych, { $res = pg_query($conn, 'SELECT id, nazwisko, imie, id_stanowiska, nr_ewid FROM osoby_data WHERE time_del is NULL ORDER BY nazwisko, imie, id_stanowiska'); } // Tabela { $count=pg_num_rows($res); print '<BR>'; print '<center>'; print '<TABLE BGCOLOR="#90C0F0" border="4" cellpadding="15" cellspacing="1">'; print '<TR><TH colspan="5" scope="colgroup">Lista Osób</TH></TR>'; print '<TH scope="col">Pełne Dane</TH>'; print '<TH scope="col">Nazwisko</TH>'; print '<TH scope="col">Imie</TH>'; print '<TH scope="col">Stanowisko</TH>'; print '<TH scope="col">Nr. Ewidencyjny</TH>'; for ($x=0;$x<$count;$x++) { // Tabela wraz z pobranymi danymi print '<TR><td><A href="osoba.php?id='.pg_fetch_result($res,$x,'id').'">Szczegóły< /A></td>'; print '<td>'.pg_fetch_result($res,$x,'nazwisko').'</td> '; print '<td>'.pg_fetch_result($res,$x,'imie').'</td>' ; print '<td>'.pg_fetch_result($res,$x,'id_stanowiska').'</ td>'; print '<td>'.pg_fetch_result($res,$x,'nr_ewid').'</td> '; print '</tr>'; } print '</table>';       print '</center>'; }



daj LIMIT i będzie po problemie :) W MySQL ma on dwa parametry - od którego do którego :)


daj LIMIT i będzie po problemie :) W MySQL ma on dwa parametry - od którego do którego :)

<?php echo "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\" /></head><body background=gfx/bg.png>"; include("cxhost.php"); $sortedby=$_GET['sortedby']; $showstats = $_GET['showstats']; $od_t = $_GET['od']; $od = 0;    if (empty($od_t)==false)    $od = $od + $od_t; $connect = mysql_connect($cxhost,$cxlogin,$cxpassword); mysql_select_db($cxdbname); $do = 100;    if ($sortedby=="")    $zapytanie = "SELECT * FROM cxlicznik LIMIT $od,$do";    if ($sortedby=="data")    $zapytanie = "SELECT * FROM cxlicznik ORDER BY data DESC";    if ($sortedby=="browser")    $zapytanie = "SELECT * FROM cxlicznik ORDER BY info1";    if ($sortedby=="frompage")    $zapytanie = "SELECT * FROM cxlicznik ORDER BY info3";    if ($sortedby=="visitedpage")    $zapytanie = "SELECT * FROM cxlicznik ORDER BY info4"; $kk = "SELECT * FROM cxlicznik"; $kkk = mysql_query($kk); $r = mysql_query($zapytanie); $ile = mysql_num_rows($r); $ile_t = mysql_num_rows($kkk);    for ($i=0;$i<5;$i++)    {    $strony[$i]=0;    $przeg[$i]=0;    }     $npage[0]="cryptx.php"; $npage[1]="download.php"; $npage[2]="wtyczki.php"; $npage[3]="kontakt.php"; $npage[4]="linki.php"; $nbrowser[0]="ie"; $nbrowser[1]="opera"; $nbrowser[2]="firefox"; $nbrowser[3]="Inne"; $opis_browser[0]="Microsoft Internet Explorer"; $opis_browser[1]="Opera Browser"; $opis_browser[2]="Mozilla Firefox"; $opis_browser[3]="Inne przegl±darki"; $h=0; $acprzeg[0]="";    while ($c = mysql_fetch_array($kkk))    {        $h++;        $o=0;        for ($i=0;$i<5;$i++)        {            if ($npage[$i]==strtolower($c['info4']))            {            $strony[$i]++;            break;            }        }        $o=0;        for ($i=2;$i>=0;$i--)        {            if (strpos(strtolower($c['info1']),$nbrowser[$i]) !=0)            {            $przeg[$i]++;            $o=1;            $acprzeg[$h]=$opis_browser[$i];            break;            }        }        if ($o==0) {$acprzeg[$h]="Inna"; $przeg[3]++; }    } $szer=600; echo("<table width=950 border=1 bordercolor=#c1d7e9 cellspacing=0 cellpadding=3>"); echo"<tr><td bgcolor=#acc7e0 height=10></td></tr>"; echo"<tr><td valign=middle bgcolor=#ffffff>"; echo"<font size = 1 face=Verdana color=#666666>"; if (($showstats=="") || ($showstats=="tak")) { echo"<b>Najczę¶ciej używane przegl±darki: </b><br>";    for ($i=1;$i<5;$i++)    {        if ($przeg[$i-1]==0) continue;    echo"<img src=gfx/k".$i.".png width=".(round($szer*$przeg[$i-1]/$ile_t))." height=16>";    }    echo"<br><br>";    for ($i=1;$i<5;$i++)    {        if ($przeg[$i-1]==0) continue;    echo"<img src=gfx/k".$i.".png width=32 height=16 align=middle> - ".$opis_browser[$i-1]." (".$przeg[$i-1].")<br>";    }    echo"<br><br>";    echo"<b>Najczę¶ciej odwiedzane strony: </b><br>";    for ($i=1;$i<6;$i++)    {        if ($strony[$i-1]==0) continue;    echo"<img src=gfx/k".$i.".png width=".(round($szer*$strony[$i-1]/$ile_t))." height=16>";    }    echo"<br><br>";    for ($i=1;$i<6;$i++)    {        if ($strony[$i-1]==0) continue;    echo"<img src=gfx/k".$i.".png width=32 align=middle height=16> - ".$npage[$i-1]." (".$strony[$i-1].")<br>";    }    echo"<br>";}    if ($showstats=="")    echo"<font size=1 face=Verdana color=#777777><a href=\"showvisits.php?sortedby=$sortedby&showstats=nie\">Ukryj statystyki &lt;-</a></font>";    if ($showstats=="nie")    echo"<font size=1 face=Verdana color=#777777><a href=\"showvisits.php?sortedby=$sortedby&showstats=tak\">Pokaż statystyki -&gt;</a></font>";    if ($showstats=="tak")    echo"<font size=1 face=Verdana color=#777777><a href=\"showvisits.php?sortedby=$sortedby&showstats=nie\">Ukryj statystyki &lt;-</a></font>"; echo"</td></tr>"; echo"<tr><td bgcolor=#acc7e0 height=10></td></tr>"; echo"</table>"; $r = mysql_query($zapytanie); $ile = mysql_num_rows($r); echo "<div align=left>"; $t=(int)($ile_t/100); echo "<br><font face=Verdana size=2 color=#0000ff>"; for ($i=0;$i<$t+1;$i++) {    $o = (int)($i*100);    $n=(int)$i+1; echo "<a href=showvisits.php?od=$o&sortedby=$sortedby&showstats=$showstats>$n< /a>&nbsp;&nbsp;"; } echo"</font><br><br>"; //echo "<font size=2 color=#333333 face=Verdana>Liczba wizyt: ".$ile."<br><br></font>"; echo("<table width=950 border=1 bordercolor=#c1d7e9 cellspacing=0 cellpadding=3>"); echo("<tr height=20>"); echo "<td bgcolor = #acc7e0 height=20><font color=#ffffff size=1 face=Verdana><b>Lp.</b></font></td>"; echo "<td bgcolor = #acc7e0 height=20 width=100><font color=#ffffff size=1 face=Verdana><b><a href=\"showvisits.php?sortedby=data&showstats=$showstats\">Data:< /a></b></font></td>"; echo "<td bgcolor = #acc7e0><font color=#ffffff size=1 face=Verdana ><b><a href=\"showvisits.php?sortedby=browser&showstats=$showstats\">Przegl± darka:</a></b></font></td>"; echo "<td bgcolor = #acc7e0><font color=#ffffff size=1 face=Verdana><b><a href=\"showvisits.php?sortedby=frompage&showstats=$showstats\">Ze strony:</a></b></font></td>"; echo "<td bgcolor = #acc7e0><font color=#ffffff size=1 face=Verdana><b><a href=\"showvisits.php?sortedby=visitedpage&showstats=$showstats\">Odwiedzona strona:</a></b></font></td>"; echo("</tr>"); $i=0;    while ($c=mysql_fetch_array($r))    {    $z=(int)$od;    $i++;    $id = $i+$z;    echo "<td bgcolor=#ffffff><font color=#666666 size=1 face=Verdana><b>".$id.".</b></font></td>";    $t = $c['data']; if ($t=='') $t = "- brak -";    echo "<td width=180 bgcolor=#ffffff><font color=#666666 size=1 face=Verdana>".$t."</font></td>";    $t = $acprzeg[$i]; if ($t=='') $t = "- brak -";    echo "<td width=280 bgcolor=#ffffff><font color=#888888 size=1 face=Verdana>".$t."</font></td>";    $t = $c['info3']; if ($t=='') $t = "- brak -";    echo "<td bgcolor=#ffffff><font color=#888888 size=1 face=Verdana>".$t."</font></td>";    $t = $c['info4']; if ($t=='') $t = "- brak -";    echo "<td bgcolor=#ffffff><font color=#666666 size=1 face=Verdana><a href=".$t.">".$t."</a></font></td>";    echo "</tr>";    } echo("</table>"); echo"</div>"; echo"<br><div align=center><font size=1 color=#888888 face=Verdana>Copyright (c) 2006 - Rafał Krajewski [<a href=mailto:krajew4@wp.pl>krajew4@wp.pl</a>]</font></div>"; echo"</html>"; mysql_close($connect); ?>
http://krajew4.ovh.org/showvisits.php - statsy odwiedzin mojej strony, mają podzielone na strony tak jak chcesz, popatrz, mam nadzieję, że ci się przyda ;)



AL możesz dac zdaje sie LIMIT 5,7 i wyświetli od 5 do 7

No niestety wszystkie próby kończą się fiaskiem, poniżej złożyłem kod który powinień mi stronnicować ale wogóle nie wyświetla rekordów.

error_reporting(0); $conn = pg_connect("host=127.0.0.1 port=5432 dbname=osoby user=test password=test"); if (!$conn) {echo "Nie udalo sie polaczyc z baza danych. \n";              exit;}              {               $ON_PAGE = 5;    //liczba wyświetleń na stronie               $res = pg_query ($conn, 'SELECT COUNT(id) FROM ludzie');               $all_records = pg_fetch_row ($res, 0);  //wszystkie rekordy               $num_all_pages = $all_records/$ON_PAGE;  //liczba stron               $start = $_GET['page'] * $ON_PAGE;   //poniżej jest nawigacja i zmienna $_GET['page']               }          //Zapytanie do bazy danych,          {          $res = pg_query($conn, 'SELECT nazwisko, imie FROM ludzie LIMIT ' . $start . ',' . $ON_PAGE);            }            //Pasek nawigacji              for($i=0; $i<$num_all_pages; $i++)                                           {                echo '<a href="index.php3?page='.$i.'">'.$i.'</a> | ';                                                }                             // Tabela { $count=pg_num_rows($res); print '<BR>'; print '<center>'; print '<TABLE BGCOLOR="#90C0F0" border="4" cellpadding="15" cellspacing="1">'; print '<TR><TH colspan="5" scope="colgroup">Lista Osób</TH></TR>'; print '<TH scope="col">Nazwisko</TH>'; print '<TH scope="col">Imie</TH>'; for ($x=0;$x<$count;$x++) { // Tabela wraz z pobranymi danymi print '<TR><td>'.pg_fetch_result($res,$x,'nazwisko').' </td>'; print '<td>'.pg_fetch_result($res,$x,'imie').'</td>' ; print '</tr>'; } print '</table>';       print '</center>'; }

Ja to zrobiłem u sibie tak (nie komentwoałem kodu, dawno pisany - teraz sam już nie wiem o co chodzi i jak to działa ^_^ ):

//zmienna odbierana przez GET dla poczatku przykladowo: //www.strona.pl/plik.php?start=1 $start = $_GET['start']; {funkcja oblicza ile ma byc stron -> po 20 na strone} function stron($count) {  if ($count <= 20) { //jesli ilosc < 20 to jest jedna strona    return 1;  }  else {    if($count%20==0) { //jesli ilosc jest idealnie podzilena przez 20 to wynikiem ilosci stron jest ilosc/20      return ($count/20);    }    else {      return (ceil($count/20)); //ujesli jest reszta to zaokraglamy    }  } } $rekord = mysql_query('select * from ludzie;'); //zapytanko $result = mysql_fetch_array($rekord); $ilosc = mysql_num_rows($rekord); //petelka wyswietli wyniki na jednej stronie for ( $i = $start; $i <= $ilosc; $i = $i + 2) {  $x = $i+1; //nie pamietam po co tego uzywalem    if($x > $start+20) { //pamietamy - 20 na strone      continue;    } echo $result['nazwa_pola']; //pokazujemy    if($x > $ilosc) {      continue;    } } {na dole dodajmy spis stron $strony = stron($ilosc); //ile stron? $start = 1; //liczymy od poczatku $tekst = ''; //bedzie zawierac tekst z linkami for ($i = 0; $i < $strony; $i++) {  $tekst .= '<a herf="plik.php?start='.$start.'">'.($i+1).'</a> ';  $start = $start + 20; //po 20 na strone } echo 'Idz do strony: '.$tekst;

Dziś moje rozwiązanie wydaje się mi sie wynajdywaniem koła od nowa, ale działało :)
Użytkownik p1101 edytował ten post 12 lipiec 2006, 11:39
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •