Autor | Zpráva | ||
---|---|---|---|
noris Profil |
Ahoj,
mám problém se stánkováním, vše funguje jak má až na jednu vyjímku: stránky se vypisují jen po aktuální stránku. Takže když sem třeba na 3 stránce tak se mi vypíší stránka 1,2,3 ale dále to už nevypisuje. Bude asi nějaká blbá chyba v podmínce, ale za boha nemohu přijít kde. Už mi z toho trochu hrabe :D Předem dík za pomoc.. PS: přikládám link stránky kde je tento soubor umístěn...problém kteý vidíte v praxi se lépe chápe LINK (stránkování je umístěnu úplně dole) <?php include "database.php"; /*stránkování*/ $countQ = mysql_query("SELECT COUNT(*) as max FROM images"); if($countQ->num_rows > 0) { $count = $countQ->fetch_object(); $max = $count->max; } define ("ON_PAGE", 5); $on_page = 5; function right_int($arg) { $arg = (int) $arg; if (is_numeric($arg)) { return $arg; } // v případě, že $arg neprojde kontrolou, bude naše $page 1 => začátek return 1; } if(($_GET["page"])) { $page = right_int($_GET["page"]); } else { $page = 1; } $by = ($on_page * ($page - 1)); $articles = mysql_query("SELECT * FROM images ORDER BY id DESC LIMIT ".ON_PAGE." OFFSET " . $by); if(mysql_num_rows($articles) > 0) { while($article = mysql_fetch_object($articles)){ echo $article->clanek . "<br />"; $idauthor = $article->author; $query1 = "select nick from users where id=$idauthor"; $res1 = mysql_query($query1); $row1 = mysql_fetch_array($res1); $author = $row1['nick']; $name =$artile->name; $description = $article->description; $suffix = $article->suffix; $idcategory = $article->category; $query2 = "select name from category where id=$idcategory"; $res2 = mysql_query($query2); $row2 = mysql_fetch_array($res2); $category = $row2['name']; $date = $article->date; $time = $article->time; $id = $article->id; echo " <div class=\"meme\"> <p class=\"info\"> Přidal: $author | V: $time | Dne: $date | Kategorie: <a href=\"category.php?id=$idcategory\">$category</a></p><br /> <div id=\"t2\"><a href=\"article.php?id=$id\"><h4 class=\"headt\">$name</h4></a></div> <div id=\"t1\"><div class=\"fb-like\" data-href=\"http://youdontsay.cz/article.php?id=$id\" data-send=\"true\" data-layout=\"button_count\" data-width=\"100\" data-show-faces=\"false\" data-font=\"arial\"></div></div><br /> <p class=\"description\">$description</p> <a href=\"article.php?id=$id\"><img class=\"memeimg\" src=\"./upload/admin/$id.$suffix\" alt=\"$name\" /></a> </div>"; } } /*stránkování*/ // pouze pokud je co stránkovat if($max > ON_PAGE) // nebo $max > ON_PAGE. Je to naprosto to samé, ale z vlastní zkušenosti vím, že někomu se líbí i ta druhá varianta... Že to s ní prý lépe chápe. // NA ZAČÁTEK // pokud nejsme na začátku, udělat odkaz na začátek... if(isset($page)) { echo "<a href='index1.php?page=1'><<</a>"; // PŘEDCHOZÍ // pokud nejsme na začátku, zobrazit odkaz na předchozí a cyklus na předchozí echo "<a href='index1.php?page=".($page-1)."'><</a>"; // vypíše 3 předchozí stránky for($i = 4; $i > 0; $i--) { if(($page - $i) >= 1){ echo "<a href='index1.php?page=".($page-$i)."'>".($page-$i)."</a>"; } } } if(($page - $i) >= 1) echo $page; if($page < ($max / ON_PAGE)) { for($i = 1; $i < 4; $i++) { if(($page + $i) <= ceil($max / ON_PAGE)) { echo "<a href='index1.php?page=".($page+$i)."'>".($page+$i)."</a>"; } } echo "<a href='index1.php?page=".($page+1)."'>></a>"; } if($page < ceil($max / $on_page)) { echo "<a href='index1.php?page=".ceil($max / $on_page)."'>>></a>"; } //<a class=\"number\"> ?> |
||
peta Profil |
#2 · Zasláno: 22. 8. 2012, 14:12:08
Ja ti to trosku prepisi... Vysli mi trosku jine vysledky.
Na strankovani si udelej funkci. Zbavis se tim zavislosti na konstante, treba. Vysledek funkce nevypisuj pres echo, ale ukladej do promenne. Treba budes pak chtit strankovani nahore i dole. <?php function strankovani($page,$on_page,$max) { $tpl = "<a href='index1.php?page=%s'>%s</a>"; $out = array(); if($max > $on_page) // zobraz jen, kdyz je pocet vsech stranek > pocet stranek na strance // if(isset($page)) { // ! to ani nemuze nastat, viz !!! 1 $out[] = sprintf($tpl,1,'<<'); // prvni $out[] = sprintf($tpl,$page-1,'<'); // predchozi for($i = 4; $i > 0; $i--) { if(($page - $i) >= 1){ $out[] = sprintf($tpl,$page-$i,$page-$i); // zobraz 4 stranky pred } } // } if(($page - $i) >= 1) $out[] = '<b>'.$page.'</b>'; // zobraz aktualni stranku !ale, pokud tam nekdo vnuti 1234 a zaznamu je jen 16, tak zobrazi 1234 if($page < ($max / $on_page)) { // ! a kdyz bude page -1234 ? nemelo tam byt navic ceil? for($i = 1; $i < 4; $i++) { if(($page + $i) <= ceil($max / $on_page)) { // ! nebo tady ceil byt nemelo? $out[] = sprintf($tpl,$page+$i,$page+$i); // zobraz 3 stranky po } } $out[] = sprintf($tpl,$page+1,">"); } if($page < ceil($max / $on_page)) { $out[] = sprintf($tpl,ceil($max / $on_page),">>"); } return '<div>'.implode(' | ',$out).'</div>'; } function right_int($arg) { $arg = (int) $arg; if (is_numeric($arg)) { return $arg; } // v případě, že $arg neprojde kontrolou, bude naše $page 1 => začátek return 1; } // --- stránkování data --- /* define ("ON_PAGE", 5); $on_page = 5; if(($_GET["page"])) { $page = right_int($_GET["page"]); // !!! 1 } else { $page = 1; // !!! 1 } $query = "SELECT COUNT(*) as max FROM images"; $result = mysql_query($query); if($result->num_rows > 0) { $row = $result->fetch_object(); $max = $count->row; } */ echo strankovani(-100,-100,-100); echo strankovani(1,-100,-100); echo strankovani(-100,1,-100); echo strankovani(-100,-100,1); echo strankovani(1,1,-100); echo strankovani(-100,1,1); echo strankovani(1,-100,1); echo strankovani(1,1,1); echo '<hr>'; echo strankovani(-5,5,100).' - chyba'; echo strankovani(1,5,100).' - ok'; echo strankovani(3,5,100).' - ok'; echo strankovani(5,5,100).' - ok'; echo strankovani(8,5,100).' - ok'; echo strankovani(10,5,100).' - ok'; echo strankovani(13,5,100).' - ok'; echo strankovani(15,5,100).' - ok'; echo strankovani(18,5,100).' - ok'; echo strankovani(20,5,100).' - ok'; echo strankovani(23,5,100).' - chyba'; echo strankovani(25,5,100).' - chyba'; |
||
Keeehi Profil |
#3 · Zasláno: 22. 8. 2012, 15:14:32
// předpokládá, že v $pocetClanku je celkový počet článků define("POCET_STRANEK_KOLEM", 3); define("CLANKU_NA_STRANCE", 5); $horniMez = ceil($pocetClanku / CLANKU_NA_STRANCE); $stranka = isset($_GET["page"]) && $_GET["page"] > 1 && $_GET["page"] <= $horniMez ? (int)$_GET["page"] : 1; $cislaStranek = array(1, $stranka, $horniMez); for ( $i = 1; $i <= POCET_STRANEK_KOLEM; $i++ ) { if ( $stranka - $i > 1 ) { $cislaStranek[] = $stranka - $i; } if ( $page + $i < $horniMez ) { $cislaStranek[] = $stranka + $i; } } sort($cislaStranek); $cislaStranek = array_unique($cislaStranek); $predchozi = 0; foreach ( $cislaStranek as $cisloStranky ) { if ( $cisloStranky - $predchozi != 1 ) { echo "…"; } if ( $cisloStranky != $stranka ) { echo "<a href="?page=$cisloStranky">$cisloStranky</a>"; } else { echo $cisloStranky; } $predchozi = $cisloStranky; } |
||
Časová prodleva: 12 let
|
0