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
|
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
|
Szukanie oprogramowania
|