Autor Zpráva
manulka.cz
Profil *
Ahoj! Mám problémek s nefungujícím řazením u stránkování. Zkusila už jsem snad tisíc způsobů ale ani jeden nefungoval. Při stránkování se me na uvodní stránce řadí dle data od nejnovějšího po nejstarší. když dám další řadí se stále správně dle data od nejnov. po nejstarší. Když ale dám řadit od nejstařší po nejnovější a pak dám další stránku, tak se me to opet seřadí od nejnovější po nejstarší. Už me fakt došly nápady. Přikládám kod stránkování. Děkuji předem za pomoc!

<?php
  define ("ROWS", 3);
  
  if (!isset($_GET["celkem"])) //pokud nevíme, kolik bude záznamů tak to zjistíme... 
  {
    $vysledek = mysql_query("select count(*) as pocet from clanky where id_sekce_podsekce =". intval($_REQUEST["id_sp"]));
    $zaznam = mysql_fetch_array($vysledek);
    $celkem = intval($zaznam["pocet"]);
  }
  else
  {
    $celkem = intval($_GET["celkem"]);
  }
  
  if ($celkem > ROWS) 
  {
    if (!isset($_GET["od"])) $od=1; 
    else $od = intval($_GET["od"]); 
    
    $vysledek = mysql_query("select id_clanku, nazev, datum, substr(clanek, 1, 400) as clanek from clanky where id_sekce_podsekce =". intval($_REQUEST["id_sp"])." order by datum desc"." 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"]."?clanek=info&amp;id_sp=".intval($_REQUEST["id_sp"])."&amp;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"]."?clanek=info&amp;id_sp=".intval($_REQUEST["id_sp"])."&amp;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"]."?clanek=info&amp;id_sp=".intval($_REQUEST["id_sp"])."&amp;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"]."?clanek=info&amp;id_sp=".intval($_REQUEST["id_sp"])."&amp;celkem=$celkem&amp;od=".($celkem-$celkem%ROWS+1)."\">Konec</a><br />";
    
    
    // TLAČÍTKA PRO ŘAZENÍ ČLÁNKŮ
    if (!empty($_POST["odesli"])) // pokud stisklo se jedno z tlačítek
    {
      if ($_POST["odesli"] == "Od nejnovějšího po nejstarší")
        $vysledek = mysql_query ("select id_clanku, nazev, datum, substr(clanek, 1, 400) as clanek from clanky where id_sekce_podsekce =". intval($_REQUEST["id_sp"])." order by datum desc"." limit ".($od-1).", ".ROWS);
      elseif ($_POST["odesli"] == "Od nejstaršího po nejnovější")
        $vysledek = mysql_query ("select id_clanku, nazev, datum, substr(clanek, 1, 400) as clanek from clanky where id_sekce_podsekce =". intval($_REQUEST["id_sp"])." order by datum asc"." limit ".($od-1).", ".ROWS);
    }
  }
  
  else 
  {
    $vysledek = mysql_query("select id_clanku, nazev, datum, substr(clanek, 1, 400) as clanek from clanky where id_sekce_podsekce =". intval($_REQUEST["id_sp"])." order by datum desc");
    
    // TLAČÍTKA PRO ŘAZENÍ ČLÁNKŮ
    if (!empty($_POST["odesli"])) // pokud stisklo se jedno z tlačítek
    {
      if ($_POST["odesli"] == "Od nejnovějšího po nejstarší")
        $vysledek = mysql_query ("select id_clanku, nazev, datum, substr(clanek, 1, 400) as clanek from clanky where id_sekce_podsekce =". intval($_REQUEST["id_sp"])." order by datum desc");
      elseif ($_POST["odesli"] == "Od nejstaršího po nejnovější")
        $vysledek = mysql_query ("select id_clanku, nazev, datum, substr(clanek, 1, 400) as clanek from clanky where id_sekce_podsekce =". intval($_REQUEST["id_sp"])." order by datum asc");
    }
  }
?>
Lopata
Profil
A na http://www.linuxsoft.cz/article.php?id_article=345 to nepíšou...? :-P
Akacko
Profil
manulka.cz:
V tom kódu se těžko vyzná, musel bych jej analyzovat déle, ale nejspíš bude chyba v tom, že o pořadí ve kterém budou výsledky seřazeny rozhoduješ podle $_POST, které po znovunačtení stránky mění své hodnoty. Použij spíše session.

Taky je zbytečné mít 2x stejný kód pro seřazovací tlačítka. Ty první by měly podle mě pokryt všechny případy.
AM_
Profil
manulka.cz:
buďto jak říká Akacko přes session (jednodušší na napsání), nebo si informaci o řazení udržuj v URL (GET) - je s tím trocha práce (musí se to předat ve všech odkazech, nesmí to nikde vypadnout), ale je to řekl bych čistější.
manulka.cz
Profil *
ulozeni do SESSION v tomto pripade moc nechapu, co by se presne do session melo ulozit. podminky razeni nebo priblizne jak??

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: