Autor Zpráva
Vader
Profil
Chcem sa spýtať:
Ak mám v tabuľke 25600 riadkov, a uživateľ si smie vybrať určitý počet na stránku cez option,
tak ako automaticky na to aby php vytvorilo z počtu riadkov 10 optionov ktoré budú mať stanovené limity ? (Počty riadkov sa samozrejme stále menia)
Napr. aby vypísalo:
<select>
<option>1000</option>
<option>5000</option>
<option>8000</option>
<option>10000</option>
....
</select>
Tori
Profil
Podle jaké logiky jdou za sebou hodnoty v tom selectu? A v jakém asi rozsahu se mění počet řádků (0 - 25000, nebo jen 20k - 25k)? Můžete použít různé způsoby:
* Procentuelně - dáte si např. hodnoty 5%, 10%, 21%, 35%, 50%, 75%, z celkového počtu záznamů
* Řada - napevno určíte hodnoty, např. 100, 250, 500, 1000, 5000,.. a do selectu dáte všechny, které jsou menší než celkový počet záznamů
o_O
Profil
Například nějak takto:
function vypisSelecty($lim,$ret=null){
  switch($lim){
    case ($lim>100000):
      $per=round($lim/9,-4);
    break;
    case ($lim>10000):
      $per=round($lim/9,-2);
    break;
    default:
      $per=round($lim/9,-1);
  }
  for($i=1;$i<=9;$i++)
    $ret.="<option>".($i*$per)."</option>\n";
    $ret.="<option>".$lim."</option>\n";
  return $ret;
}
Joker
Profil
Vader:
Jedna poznámka, má smysl stránkovat po tak obrovském množství záznamů?
To budou ty stránky nejspíš podobně nepřehledné jako kdyby se vypsaly všechny najednou.

Jinak by šlo přes SELECT COUNT spočítat kolik celkem bude vybraných položek a nezobrazovat velikosti stránky větší než celkový počet položek.
Na druhou stranu, ono ale jejich zobrazování ani ničemu nevadí. Když budou v databázi 20 záznamů a nastavím stránkování po 1000, prostě budou všechny na první stránce.
Jestli to je kvůli tomu, že tam těch položek je moc, snížil bych jejich počet celkově. Myslím, že stačí hodnoty s významem „málo“, „středně“, „hodně“ a „všechny“, o moc víc bych jich nedával.

o_O:
Akorát to bude generovat trochu zvláštní výčty, třeba pro 13000 položek: 1400, 2900, 4300, 5800, 7200, 8700, 10100, 11600, 13000 a pro málo položek to bude fungovat špatně nebo vůbec.
Krom toho položky ve stránkování bych nestupňoval lineárně, místo třeba 100, 200, 300, 400, 500 mi přijde užitečnější něco jako: 10, 50, 100, 500, všechny

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