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'>&lt;&lt;</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)."'>&lt;</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)."'>&gt;</a>";
}
if($page < ceil($max / $on_page)) {
  echo "<a href='index1.php?page=".ceil($max / $on_page)."'>&gt;&gt;</a>";
}

    
  //<a class=\"number\">
  ?>
peta
Profil
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,'&lt;&lt;');        // prvni
    $out[] = sprintf($tpl,$page-1,'&lt;');    // 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,"&gt;");
}
if($page < ceil($max / $on_page)) {
  $out[] = sprintf($tpl,ceil($max / $on_page),"&gt;&gt;");
}
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
// 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 "&hellip;";
    }
    if ( $cisloStranky != $stranka ) {
        echo "<a href="?page=$cisloStranky">$cisloStranky</a>";
    }
    else {
        echo $cisloStranky;
    }

    $predchozi = $cisloStranky;
}

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: