[PHP&Mysql] Stránkování

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod libris 18. 5. 2006 13:28

Ahoj,
vypisuju záznamy z databáze a chci použít stránkování jak pomocí šipek tak pomocí čísel, níže uvedený kód mi funguje jen při stránkování pomocí čísel, ale nejde stránkovat pomocí šipek dopředu a zpět. Může mi někdo prosím poradit kde je problém? Kód jsem trochu ořezal, neboť byl o dost delší. Jde mi hlavně jen o to zprovoznit ještě to stránkování pomocí šipek.

Předem děkuji

Kód: Vybrat vše
<?php
function roundup($roundup_i) {
         $roundup_round = round($roundup_i);
         if($roundup_i > $roundup_round) $roundup_round++;
         return ($roundup_round);
}

if(!isset($stranka)) $stranka = 1;

$sql=mysql_query("SELECT * FROM obory WHERE id='$id_obor'");
while ($row_obor=mysql_fetch_array($sql)):
   echo "<h1>".$row_obor[1]."</h1>";
endwhile;

$q=mysql_query("
SELECT F.*, L.nazev_loga,
IF(COUNT(L.id)=0,'žádné',COUNT(L.id)) AS pocet
FROM firmy F LEFT JOIN loga L
ON (F.id=L.id_firmy) WHERE F.id_oboru='$id_obor'
GROUP BY F.id
ORDER BY priorita") or die("Nepodařilo se vykonat příkaz"); // nejprve vykonáme dotaz.


$row=mysql_num_rows($q);
$kolik = 7;
if($row > $kolik):
  echo "Celkem " . $row . " záznamů. <br/>";

//zde se stránkuje pomocí šípek
  if($stranka != 1) echo "<a href=\"index.php?p=katalog_firem&amp;id_obor=$id_obor&amp;stranka=1\"> &lt;&lt; </a> ";
  if($stranka > 1) echo "<a href=\"index.php?p=katalog_firem&amp;id_obor=$id_obor&amp;stranka=".($stranka - 1)."\"> &lt; </a> ";
  if($stranka <= roundup(count($row) / $kolik)) echo "<a href=\"index.php?p=katalog_firem&amp;id_obor=$id_obor&amp;stranka=" . ($stranka + 1) . "\"> &gt; </a> ";
  if($stranka < roundup(count($row) / $kolik)) echo "<a href=\"index.php?p=katalog_firem&amp;id_obor=$id_obor&amp;stranka=" . roundup(count($row) / $kolik) . "\"> &gt;&gt; </a> ";

//zde se stránkuje podle čísel
  for($i=1;$i <= roundup($row / $kolik); $i++):
    if($stranka != $i) echo "[ <a href=\"index.php?p=katalog_firem&amp;id_obor=$id_obor&amp;stranka=" . $i . "\">" . $i . "</a>] "; else echo "<strong>[" . $i . "]</strong> ";
  endfor;
endif;

$i = 1;
while($r=mysql_fetch_array($q)):
if (($i > ($stranka-1)*$kolik) && ($i <= $stranka*$kolik)):
   echo"<div>Zde bude výpis řádků z databáze.</div>";
endif;
$i++;

endwhile;
?>[/code]



// mbing : Téma přesunuto ● z Programování do Tvorba webových stránek a aplikací.
libris
Junior

Odeslat příspěvekod cartman77 18. 5. 2006 13:39

Já to mám takhle:

Kód: Vybrat vše
//spocitam, kolik je ve zvolené podkategorii polozek, abych podle toho mohl delit vypis   

$result_count = mysql_db_query ("$db","SELECT COUNT(id) AS number FROM goods WHERE kategorie = $cat");
$record_count = mysql_fetch_object($result_count);
$count = $record_count->number;

//zvolim si, kolik bude polozek na jedne strance

$num_item = 5; 

//urceni aktualni stranky     

if (!isset ($_GET['page'])) {
   $page = 1;
}
else {
   $page = $_GET['page'];
}

//promenne pro strankovani 

$num_page = ceil($count/$num_item); //pocet stranek
$start_limit = (($num_item*$page)-1)-($num_item - 1); // pocatecni limit pro vypisovani z databaze

//pokud je vice jak 1 stranka, tak se strankuje

if ( $num_page >= 1){
   echo "               <p align=\"center\">\n";
   if ($page >= 2){
      echo "               <a href=\"catalogue.php?cat=".$cat."&amp;page=1\"><span class=\"thin\">|&lt;</span></a>\n";
   }
   if ($page >= 3){
      echo "                  &nbsp;<a href=\"catalogue.php?cat=".$cat."&amp;page=".($page-1)."\"><span class=\"thin\">&lt;&lt;</span></a>\n";
   }
   echo "                  &nbsp; ".$page."/".$num_page."\n";
   if (($num_page-$page) >= 2){
      echo "                  &nbsp;<a href=\"catalogue.php?cat=".$cat."&amp;page=".($page+1)."\"><span class=\"thin\">&gt;&gt;</span></a>\n";
   }
   if (($num_page-$page) >= 1){
      echo "                  &nbsp;<a href=\"catalogue.php?cat=".$cat."&amp;page=".$num_page."\"><span class=\"thin\">&gt;|</span></a>\n";
   }
   echo "                  </p>\n";[
cartman77
Junior
Uživatelský avatar

Odeslat příspěvekod libris 18. 5. 2006 14:25

Díky za scriptík, ale mám taky jeden zdroják se šipkama, který hodně často používám, ale v této chvíli bych potřeboval obě kombinace (šipek i čísel) do stránky. Byl bych vděčný kdyby se mi někdo mrkl na ten scriptík a poradil mi kde je v kódu chyba.
libris
Junior

Odeslat příspěvekod gashtaan 18. 5. 2006 14:43

odporucal by som vam si nieco pozriet o:

1. SQL_CALC_FOUND_ROWS
2. LIMIT
gashtaan
Junior

Odeslat příspěvekod Vebloud 18. 5. 2006 19:00

gashtaan píše:odporucal by som vam si nieco pozriet o:

1. SQL_CALC_FOUND_ROWS
2. LIMIT


Konečně to tu někdo zopakoval, věděl jsem, že se to tady někde probralo, ale nemohl jsem si vzpomenout na SQL_CALC_FOUND_ROWS a nemohl to najít.
Žít a nechat žít, ty máš svůj názor, já mám svůj názor, já ti nebudu nutit svůj, nemusím souhlasit s tvým, ale udělám vše, abys ho mohl svobodně vyjádřit.
Vebloud
Ex-moderátor
Uživatelský avatar


Odeslat příspěvekod libris 22. 5. 2006 11:57

myslím že bude chyba v tom odstavci s těmi šipkami:

Kód: Vybrat vše
if($stranka != 1) echo "<a href=\"index.php?p=katalog_firem&amp;id_obor=$id_obor&amp;stranka=1\"> &lt;&lt; </a> ";
  if($stranka > 1) echo "<a href=\"index.php?p=katalog_firem&amp;id_obor=$id_obor&amp;stranka=".($stranka - 1)."\"> &lt; </a> ";
  if($stranka <= roundup(count($row) / $kolik)) echo "<a href=\"index.php?p=katalog_firem&amp;id_obor=$id_obor&amp;stranka=" . ($stranka + 1) . "\"> &gt; </a> ";
  if($stranka < roundup(count($row) / $kolik)) echo "<a href=\"index.php?p=katalog_firem&amp;id_obor=$id_obor&amp;stranka=" . roundup(count($row) / $kolik) . "\"> &gt;&gt; </a> ";
libris
Junior


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků