Autor Zpráva
piiiiiiiip
Profil
Dobrý den,napsal jsem si kod na vypisování článků z db ale mám jich moc a potřebuju je stránkovat.Zkoušel sem co sem našel na google ale nic nefungovalo.
$komentare=mysql_result(mysql_query("SELECT COUNT(`id`) FROM `kom` "),0);
 $Vyber=mysql_query("SELECT `id`,`nazev`,`clanek`,`podpis`,`datum` FROM `clanky` ORDER BY id desc");

 while($Vypis=mysql_fetch_array($Vyber)){
            if($Vypis['nazev']){ 
                echo " <div class='obr'></div><table class='xnovinky'><tr><td><h1><div style='text-align:right;'>{$Vypis['nazev']}</div></h1><hr /><div><p>{$Vypis['clanek']}<br /><br /><table width='100%' border='0'><tr><td><div class='jmeno'>".$Vypis['podpis']."</div></td><td align='right'><div class='datum'>".$Vypis['datum']."</div></td></tr></table><div class='koment'><p><a href='komik.php?id=".$Vypis['id']."&amp;n'><h4>Komentare</h4></a></p></div></div></td></tr></table>";
  mysql_query("UPDATE `minirs_clanky`");
      }else{
        echo "Je nam lito ale clanek zdrejme neexistuje.";
      }
 
 }
Alphard
Profil
Použil bych třeba http://doc.nette.org/cs/pagination, ušetří to trochu práce. Dodáte aktuální stránku, celkový počet, počet na stránku a třídá vám vrátí limit, offset a vše potřebné pro tvorbu odkazů.
Lze ji použít samostatně bez Nette, jen zrušte dědění od Object.

Pokud to chcete sestavit sám, návod od Jakuba Vrány bude určitě funkční.
piiiiiiiip
Profil
Mám takový kod
require "db.php";
$max = "4";


$pocet=MySQL_Query("SELECT count(id) FROM clanky ORDER BY id DESC");

    
$ukaz_pocet=mysql_fetch_array($pocet); 
$str=Ceil($ukaz_pocet[0]/$max); 
$strana2 = $_GET['strana'];
$strana = $strana2*$max;
echo "<div class='textik'>Strana: ";
for($i=0;$i<$str;$i++)
		{ 
		if($i == $strana2)
		{
		echo "<strong>".($i+1)."</strong> ";
		}
		else 
		{
		echo " <a href='index.php?strana=".($i)."#str '>".($i+1)."</a> ";
		}
		}
		echo "</div>";

 
$pocet=mysql_query("SELECT  `id`,`nazev`,`clanek`,`podpis`,`datum` FROM `clanky` ORDER BY id desc LIMIT $strana, $max",
$spojeni);

   while($Vypis=mysql_fetch_array($pocet)){
            if($Vypis['nazev']){ 
                echo" <div class='obr'></div><table class='xnovinky'><tr><td><h1><div style='text-align:right;'>{$Vypis['nazev']}</div></h1><hr /><div><p>{$Vypis['clanek']}<br /><br /><table width='100%' border='0'><tr><td><div class='jmeno'>".$Vypis['podpis']."</div></td><td align='right'><div class='datum'>".$Vypis['datum']."</div></td></tr></table><div class='koment'><p><a href='komik.php?id=".$Vypis['id']."&amp;n'><h4>Komentare</h4></a></p></div></div></td></tr></table>";

mysql_query("UPDATE `minirs_clanky`");
      }else{
        echo "Je nam lito ale clanek ktery hledate zdrejme neexistuje.";
      }
 }

echo "<div class='textik'>Strana: ";
for($i=0;$i<$str;$i++)
		{ 
		if($i == $strana2)
		{
		echo "<strong>".($i+1)."</strong> ";
		}
		else 
		{
		echo " <a href='index.php?strana=".($i)."#str '>".($i+1)."</a> ";
		}
		}
		echo "</div>";


funguje to až nato že když jsem na indexu vypíše mi to
Notice: Undefined index: strana in /home/users/kini/estargate.4fan.cz/web/index.php on line 31 
.
piiiiiiiip
Profil
Myslim že je to kvůli tomu že se nepočítá s tím že v adrese bude index.php místo index.php?strana=0#str ale nevim jak to opravit.
Jozin
Profil
piiiiiiiip:
Jak napsal piiiiiiiip je to tím, že $_GET['strana'] ještě neexistuje. Odchycení je jednoduché:
<?php
...
$strana2 = isset($_GET['strana']) ? ((int) $_GET['strana']) : 0;
...

tuším, že to s 0 fungovat bude... když ne, tak místo 0 dát 1, ale myslím spíš 0. Navíc NOTICE je jen upozornění. Mělo by se na to dávat pozor, ale v produkčním režimu (na stránkách) je výpis notice vypnutý a tak tam toto nepůjde vidět. Ale já jsem zvyklí odchytávat i notice.

EDIT: Ještě jsem dodělal přetypování na int.
piiiiiiiip
Profil
Dík.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0