LINUXSOFT.cz
Nazwa użytkownika: Hasło:     
    CZ UK PL

> Komentarze :: článek PHP (39) - Zobrazujeme a stránkujeme data

to Stránkování 27.4.2006 15:57
J3C

Stránkování pěkné, ale hodilo by se připomenout, že se musí doplnit druhá část podmínky a to pro případ, že v DB bude méně než ROWS záznamů, což se hodí zejména u volitelného kroku. Jinak to zobrazí lautr nic, pokud se nemýlím :)
Linuxu zdar

Re: to Stránkování 10.7.2006 01:20
Adelka

ano suhlasim, staci nieco ako:

else{ //ak je zaznamov menej ako ROWS
echo "Brigády: 1-".$celkom;
echo " z celkom $celkom   ";
echo "Začiatok | Predchádzajúce | Nasledujúce | Koniec <BR>";
$sql=mysql_query("SELECT ......");
}

Ale este je tam jedna chyba. Totiz ak si date napr. zobrazit zaznamy co ja viem po 5 na stranku, a budete ich mat v db 20, tak ak kliknete na koniec, bude chciet zobrazit 21 zaznam, ktory nie je. preto sa to da spravit takto:

if($celkom%ROWS==0)$konecny_limit=($celkom-ROWS+1);
else $konecny_limit=($celkom-$celkom%ROWS+1);

a potom do url treba dat len od=$konecny_limit

Re: to Stránkování 10.7.2006 08:02
Aleš Hakl

Pokud to, co tu tvrdite, je pravda, tak u me "databaze" MySQL klesla jeste vice, nez jsem si kdy myslel, ze je mozne.

Pokud chci vysledek dotazu vracejiciho 5 radku, pricemz chci tech radku maximalne 10, je logicke, ze dostanu prave tech 5, ne? Stejne tak je logicke, ze pokud budu chtit zobrazit zaznamy od 6 dale a maximalne deset, tak nedostanu nic (a nikoli chybu, jak se snazite implikovat).

Re: to Stránkování 10.12.2006 23:23
Jee

Jen kdyby někdo chtěl kratší zápis...

<pre>
$konecnylimit=$celkem%ROWS==0?$celkem-ROWS+1:$celkem-$celkem%ROWS+1;
</pre>

Re: to Stránkování 28.7.2007 16:56
Jindřich Kovář

Když jsem si to vyzkoušel, tak jsem zjistil, že MySQL čísluje záznamy v klauzuli LIMIT od 0, nikoliv od 1. Takže je potřeba v SELECT mít LIMIT od $od-1.

Re: to Stránkování 16.8.2006 08:40
petr3141

když tam nenapíšu tu podmínku vůbec tak to taky funguje

method=POST 30.11.2007 11:22
Marek Paľo

Veďel by mi niekto poradiť ako to urobyť cez POST? Nechcem tam mať tlačítka ale odkaz ako je to aj v článku. Teraz to mám takto:

else echo "<form action=\"{$_SERVER[PHP_SELF]}\" method=POST>\n";
echo "<input type=hidden name=celkem value=$celkem>\n";
echo "<input type=hidden name=od value=".($od+ROWS)."\>\n";
echo "<input type=hidden name=akce value=search>\n";
echo "<input type=submit value=\"Následujúce\">\n";
echo "</form>\n";

funguje mi to, ale cez odkazy by to bolo krajšie

ORDER BY 28.5.2008 20:32
Dan Pelíšek

Dobrý den, udělal sem si tabulku a chtěl sem si tam udělat i možnost řazení podle různých sloupců. Řazení sloupců s VARCHAR bylo bez problému, ale při pokusu ředit podle TINYINT mi to napsalo chybu: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ...seznam_knih.php on line 46.
Lze řadit podle TINYINT hodnot? Jestli ano, kde můžu mít chybu, je to nasáno následovně: $radky=mysql_query("SELECT nazev, autor, precteno FROM knihy ORDER BY precteno"." LIMIT ".($od-1).", ".$zobrazit_radku);

Česká diakritika 28.5.2008 23:25
Dan Pelíšek

Ještě jsem se chtěl zeptat jak se dá vyhledávát v databázy slova s českou diakritikou, například písmeno ě. Zkoušel jsem:
SELECT * FROM knihy WHERE nazev LIKE '%ě%' ...
a SELECT * FROM knihy WHERE nazev LIKE CONVERT( _utf8 '%ě%'USING latin1 )COLLATE latin1_general_ci
ale ani jedno nefungovalo (i když jsem změnil kódování z latin1_general_ci na utf8_czech_ci)

Nevíte jak se to jdá udělat?

@while ($zaznam=MySQL_Fetch_Array($vysledek)) echo $zaznam["obec"]." ".$zaznam["psc"]."<BR>\n"; 17.2.2010 15:44
Oldřich Válek

Chci se zeptat, k čemu je tam ten zavináč? Chápu to tak, aby se celý kód opakoval jenomže když ho tam mam, tak to hází chybu: " Parse error: syntax error, unexpected T_WHILE in /home/free/ic.cz/t/test-2/root/www/str_1_b.php on line 50 " když to dám pryč, tak mě nefunguje jen to jak už bylo popsáno výše že se to snaží na konci vypsat př 11 z 10 záznamů... jenom mě ty jejich návrhy nějak nefungovali...

stránkování 9.3.2011 10:15
Tomáš Hofer

Dobrý den.

Chtěl jsem vyzkoušet stránkování, jak je popsáno v tomto díle a použil jsem kopii skriptu. Při zobrazení první stránky výsledků je vše v pořádku, ale po kliknutí na "následující" se mi objeví hláška MySQL, že tam mám chybu v syntaxi:

<code> You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND Obrazy.Model= ORDER BY Obrazy.Model, Obrazy.naz_mod, Mach, Uhel LIMIT 2, 2' at line 10</code>

Vám to všem funguje? Nesetkali jste se někdo s něčím podobným? Můj skript je téměř totožný s uvedeným výše s tím rozdílem, že si příkaz SELECT skládám dynamicky...

<code>
if (!isset($_GET["celkem"])) //pokud nevíme, kolik bude záznamů tak to zjistíme...
{
$vysledek3 = mysql_query($sql,$spojeni) or die("Nelze vykonat definiční dotaz: " . mysql_error());
// $zaznam = mysql_fetch_array($vysledek3);
$celkem = mysql_num_rows($vysledek3);
echo "<h2>Vyhledávání v databázi obrazů proudových polí podle Vámi zadaných kritérií přineslo tyto výsledky:</h2><p>(Celkem: ".$celkem.")</p>";
}
else
{
echo "<h2>Vyhledávání v databázi obrazů proudových polí podle Vámi zadaných kritérií přineslo tyto výsledky:</h2><p>(Celkem: ".$celkem.")</p>";
}
if ($celkem>ROWS)
{
if (!isset($_GET["od"])) {$od=1;} else {$od=$_GET["od"];}
$sql.=" LIMIT ".($od-1).", ".ROWS;
$vysledek3=mysql_query($sql,$spojeni) or die("Nelze vykonat definiční dotaz: " . mysql_error());
echo "Záznamy: ".$od."-";
echo (($od+ROWS-1)<=$celkem)?($od+ROWS-1):$celkem;
echo " z $celkem   ";
//začátek - vytvoř odkaz pouze pokud nejsme na začátku
if ($od==1) echo "Začátek | ";
else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=1\">Začátek</a> | ";
//zpět - vytvoř odkaz pouze pokud nejsme v prvních ROWS
if ($od<ROWS) echo "Předchozí | ";
else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=".($od-ROWS)."\">Předchozí</a> | ";
//další - vytvoř, pouze pokud nejsme v posledních ROWS
if ($od+ROWS>$celkem) echo "Následující | ";
else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=".($od+ROWS)."\">Následující</a> | ";
//poslední - to je posledních (zbytek po dělení ROWS) záznamů
if ($od>$celkem-ROWS) echo "Konec <BR>";
else echo "<a href=\"".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=".($celkem-$celkem%ROWS+1)."\">Konec</a><BR>";
}
</code>

Re: stránkování 10.3.2011 06:29
Tomáš Hofer

Tak už jsem na to přišel. Při znovunačtení stránky se ztratí hodnoty zadané z formulářů uložené v $_POST. Tomu se dá zabránit použitím superglobal:

session_start();
if (empty($_POST)) $_POST = $_SESSION['page_post_data'];
else $_SESSION['page_post_data'] = $_POST;


KOMENTARZE
to Stránkování 27.4.2006 15:57 J3C
|- Re: to Stránkování 10.7.2006 01:20 Adelka
| |- Re: to Stránkování 10.7.2006 08:02 Aleš Hakl
| |- Re: to Stránkování 10.12.2006 23:23 Jee
| L Re: to Stránkování 28.7.2007 16:56 Jindřich Kovář
L Re: to Stránkování 16.8.2006 08:40 petr3141
method=POST 30.11.2007 11:22 Marek Paľo
ORDER BY 28.5.2008 20:32 Dan Pelíšek
Česká diakritika 28.5.2008 23:25 Dan Pelíšek
@while ($zaznam=MySQL_Fetch_Array($vysledek)) echo $zaznam[&quot;obec&quot;].&quot; &quot;.$zaznam[&quot;psc&quot;].&quot;&lt;BR&gt;\n&quot;; 17.2.2010 15:44 Oldřich Válek
stránkování 9.3.2011 10:15 Tomáš Hofer
  L Re: stránkování 10.3.2011 06:29 Tomáš Hofer
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
> Szukanie oprogramowania
1. Pacman linux
Download: 4881x
2. FreeBSD
Download: 9068x
3. PCLinuxOS-2010
Download: 8564x
4. alcolix
Download: 10950x
5. Onebase Linux
Download: 9662x
6. Novell Linux Desktop
Download: 0x
7. KateOS
Download: 6248x

1. xinetd
Download: 2414x
2. RDGS
Download: 937x
3. spkg
Download: 4762x
4. LinPacker
Download: 9969x
5. VFU File Manager
Download: 3199x
6. LeftHand Mała Księgowość
Download: 7204x
7. MISU pyFotoResize
Download: 2813x
8. Lefthand CRM
Download: 3564x
9. MetadataExtractor
Download: 0x
10. RCP100
Download: 3123x
11. Predaj softveru
Download: 0x
12. MSH Free Autoresponder
Download: 0x
©Pavel Kysilka - 2003-2024 | mailatlinuxsoft.cz | Design: www.megadesign.cz