Autor Zpráva
Kutil
Profil *
    function ZobrazeniClanku()
   
{

echo("             <h3>Nejnovější články</h3><br>");

	      $result = mysql_query("SELECT ID,NadpisClanku,AutorClanku,ObrazekClanku,UryvekClanku,TextClanku,DoplnekClanku,IpAdresa,CasZaznamenani,PcHostname,HttpAgent,Viditelnost FROM rs_PridaneClanky WHERE Viditelnost=1 ORDER by ID desc LIMIT 10");
	      while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
  
{
  
  echo("

		  
			<h3><a href='Clanek.php?id=$row[ID]'>[# $row[ID]] $row[NadpisClanku]</a></h3>
			
			
			
			  <strong>Autor: </strong>   $row[AutorClanku] | 
			  <strong>Čas:   </strong>   $row[CasZaznamenani] 
			  
			  
			  
		<table style='text-align:center;'>
		<tr>
		<td style='width:150px'>
		<img src='$row[ObrazekClanku]' style='width:150px;'>
		</td>
		<td>
			<p style='text-align:justify;'> $row[UryvekClanku]... <a href='Clanek.php?id=$row[ID]'>[více]</a> </p>
	    </td>
		</tr>
		</table>
			<br><br>
   
      ");
}


Dobrý den, hledal jsem na google několik řešení stránkování, ale nemůžu za boha přijít na to jak to vložit do tohoto kódu, jak tomuto nastavit, aby se to dávalo na stránky
1,2,3,4,5,6,7,8,9,10... vždy po 10... momentálně mám LIMIT 10, ale to mi bude zachvili k ničemu :(
t4nn3r
Profil
pred vypsanim clanku si vyjedte count, aby se vedelo kolik clanku je v db. Ten vydelte poctem clanku na stranku a zaokrouhlete nahoru.
Na strankovani se nejspis budete odkazovat pomoci GET promenne - page/stranka ...
Vypiste strankovani - nejlepsi bude smycka
 for ($promenna=1; $promenna <= $pocetsran; $promenna++) 
 {
 
 echo "<a href='clanky.php?strana=".$promenna." '>  " . $promenna . "</a>";
 }
 

strankovat od 1 , strana 0 to by vypadalo divne
mame hotove strankovani, takze zachytneme GET parametr
if (isset($_GET['strana']))
{
$page = (int)$_GET['strana'];
}
else
{
$page=1;
}


ted uz jen pripravit limity pro SQL dotaz
$prvnilimit = $page -1 * $pocetclankunastranku;
$druhylimit = $pocetclankunastranku;

no a v tuto chvili uz muzete zobrazovat clanky podle potreby pridanim techto limit do dotazu
$result = mysql_query("SELECT .... FROM rs_PridaneClanky WHERE Viditelnost=1 ORDER by ID desc LIMIT $prvnilimit, $druhylimit");

Tohle je asi nejjednodussi mozne strankovani, nerikam ze je super, ale funguje.
psal jsem to tady z hlavy, mozna tam bude nejaka chybka ..ale ten princip bude stejny.
Kutil
Profil *
Bohužel, asi vím jak to myslíš, ale nevím kam to chceš vše narvat. Stránkování je podle mě jedna z nejotravnějších věcí, hledal jsem i další články, kamarádi mně je také posílali, ale prosimtě, nemohl bys ten kod rovnou vložit do mého skriptu?

PS: jestli potřebuješ počet článků tak stačí vybrat počet záznamů podle ID z tabulky _rsPridaneClanky
aaa
Profil
FUNKCE LISTING:


function listing($out, $divider, $page){



//stránkování

    

    if($_GET['sub']){

    

    $sub = '&sub='.$_GET['sub'];

    

    }

    

    if($_GET['el']){

    

    $sub = '&el='.$_GET['el'];

    

    }

    

    if($_GET['eid']){

    

    $eid = '&eid='.$_GET['eid'];

    

    }

    

    if($_GET['gid']){

    

    $gid = '&gid='.$_GET['gid'];

    

    }

    

    $num_rows = mysql_num_rows($out);

    

    

    if($num_rows > 0){

    $num_rows1 = mysql_num_rows($out);

    

    

    if($num_rows1){

    $numrows2 = ((ceil($num_rows1 / $divider))-1);

    }

    

        //$numrows1 počítá na kolik stránek se podle stránkování má její obsah rozdělit (odčítá se 1 jelikož cyklus for (pro $page) začíná od 0. id stránek je pak o 1 nižší než jejich počet)

        

        //první stránka (aktivní pokud se na první stránce zrovna uživatel nenachází)

        

        if($page > 0){

        echo '<a href="?id='.$_GET['id'].$sub.$el.$eid.$gid.'&page=0">&nbsp;první&nbsp;</a> |';

        }else{

        echo '&nbsp;první&nbsp; |';

        }

        

        //předchozí stránka (aktivní pokud se na uživatel nenachází na první stránce (s id 0 - $page = 0))

        

        if($page > 0){

        echo '<a href="?id='.$_GET['id'].$sub.$el.$eid.$gid.'&page='.($_GET['page']-1).'">&nbsp;&lt;&nbsp;</a>';

        }else{

        echo '&nbsp;&lt;&nbsp;';

        }

        

        //odkazy na jednotlivé stránky

        

        for ($i=0; $i <= $numrows2; $i++){

        if(($i) == $page){

        echo '&nbsp; '.($i+1).' &nbsp;';

        }else{

        echo '&nbsp;<a href="?id='.$_GET['id'].$sub.$el.$eid.$gid.'&page='.($i).'"> '.($i+1).' </a>&nbsp;';

        }

        }

        

        //další stránka (aktivní pokud se na uživatel nenachází na poslední stránce ($page = $numrows1 - 1))

        

        if($page < ($numrows2)){

        echo '<a href="?id='.$_GET['id'].$sub.$el.$eid.$gid.'&page='.($_GET['page']+1).'">&nbsp;&gt;&nbsp;</a>';

        }else{

        echo '&nbsp;&gt;&nbsp;';

        }

        

        //poslední strána (aktivní pokud se na poslední stránce zrovna uživatel nenachází)

        

        if($page < ($numrows2)){

        echo '| <a href="?id='.$_GET['id'].$sub.$el.$eid.$gid.'&page='.($numrows2).'">&nbsp;poslední&nbsp;</a>';

                }else{

        echo '| &nbsp;poslední&nbsp;';

        }

        

	

		}

		



    

    //stránkování konec



}



DOTAZ NA DB:

$OUT = mysql_query("select * from TABULKA limit ".($page*$LIMIT).",".$LIMIT.";");


VYPIS STRANKOVANI:

echo '<div class="CLASS">'; listing($OUT, $LIMIT, $_GET['page']); echo '</div>';


$_GET['page'] = PROMENNA, KTEROU SE BUDE PREDAVAT NA JAKE STRANCE SE ZROVNA NACHAZITE (PONECHAT)

DOUFAM ZE TO TREBA NEJAK POMUZE ;)
vit
Profil *
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Novinky</title>
<link rel="stylesheet" type="text/css" media="all" href="styl.css">
</head>
<body>
<div id="obsah">
<div id="obsah2">
<?php
require "db.php";
$Vyber=mysql_query("SELECT `id`, `datum`,`nazev`,`clanek`,`hit` FROM `clanky` ORDER BY id DESC LIMIT 3") or die(mysql_error());
while ($Vypis = mysql_fetch_array($Vyber)) {
echo "
<h3>".$Vypis['datum']."</h3>
<h2>".$Vypis['nazev']."</h2>
<p>".$Vypis['clanek']."</p>
";
}

function strankovani($strana) {
if(!$strana) { $strana = 1; }
echo "\t<div class=\"stranky\">\n";
$plus = $strana + 1;
$minus = $strana - 1;
if(($strana == 1) || (!$strana) || ($strana == 0)) {
echo "\t\t<a href=\"novinky.php?strana=$plus\">starší &gt;&gt;</a>
</div>\n";
} else {
echo "\t\t<a href=\"novinky.php?strana=$minus\">&lt;&lt; novější</a> | <a href=\"novinky.php?strana=$plus\">star‘í &gt;&gt;</a>
</div>\n";
}
}
strankovani($strana);

define ("ROWS", 50);

if (!isset($_GET["celkem"])) //pokud nevíme, kolik bude záznamů tak to zjistíme...
{
$vysledek=mysql_query("select count(*) as pocet from clanky");
$zaznam=mysql_fetch_array($vysledek);
$celkem=$zaznam["pocet"];
}
else
{
$celkem=$_GET["celkem"];
}
if ($celkem>ROWS)
{
if (!isset($_GET["od"])) $od=1; else $od=$_GET["od"];
$vysledek=mysql_query("select * from psc"." limit ".($od-1).", ".ROWS);
echo "Záznamů: ".$od."-";
echo (($od+ROWS-1)<=$celkem)?($od+ROWS-1):$celkem;
echo " z celkem $celkem&nbsp;&nbsp;&nbsp;";
//začátek - vytvoř odkaz pouze pokud nejsme na začátku
if ($od==1) echo "Začátek&nbsp;|&nbsp;";
else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&amp;od=1\">Začátek</a>&nbsp;|&nbsp;";
//zpět - vytvoř odkaz pouze pokud nejsme v prvních ROWS
if ($od<ROWS) echo "Předchozí&nbsp;|&nbsp;";
else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&amp;od=".($od-ROWS)."\">Předchozí</a>&nbsp;|&nbsp;";
//další - vytvoř, pouze pokud nejsme v posledních ROWS
if ($od+ROWS>$celkem) echo "Následující&nbsp;|&nbsp;";
else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&amp;od=".($od+ROWS)."\">Následující</a>&nbsp;|&nbsp;";
//poslední - to je posledních (zbytek po dělení ROWS) záznamů
if ($od>$celkem-ROWS) echo "Konec&nbsp;<BR>";
else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&amp;od=".($celkem-$celkem%ROWS+1)."\">Konec</a><BR>";
}
@while ($zaznam=MySQL_Fetch_Array($vysledek)) echo $zaznam["obec"]." ".$zaznam["psc"]."<BR>\n";

?>

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: