Autor | Zpráva | ||
---|---|---|---|
Adam501 Profil |
#1 · Zasláno: 21. 8. 2011, 22:14:44
Ahoj. Potřebuji na svých stránkách udělat stránkování z mysql pomocí php, tak jsem prohledal toto fórum a našel jsem kód, který jsem i poměrně chápal.
Jenže u tohoto řádku: if ( $_GET['strana'] > 1 ) {echo "<a href=\"vypis.php?strana=".$_GET['strana']-1."\"><</a>";} Vypisuje chybu: Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in /3w/wz.cz/v/vkmadeta/NEW/jnovinky.php on line 55 Nejdříve jsem to letmo přeložil, že mám někde neescapovanou uvozovku, ale je tam poněkud jiné slovo. V tématu z kterého jsem to kopíroval tazatel píše, že kód mu funguje. Nevíte kam se vloudila chybička? Díky |
||
Joker Profil |
#2 · Zasláno: 21. 8. 2011, 22:18:54
Adam501:
Nejspíš chybí středník o řádek výš. |
||
Adam501 Profil |
#3 · Zasláno: 21. 8. 2011, 22:20:18
Joker:
To právě nikde nechybí. $pocet = $pocet / $clanku_na_stranku; if ( $_GET['strana'] > 1 ) {echo "<a href=\"vypis.php?strana=".$_GET['strana']-1."\"><</a>";} |
||
Str4wberry Profil |
#4 · Zasláno: 21. 8. 2011, 22:21:11 · Upravil/a: Str4wberry
Neměla by spíš ta matematická operace
$_GET['strana']-1 být třeba v závorkách?
|
||
peta Profil |
#5 · Zasláno: 22. 8. 2011, 11:13:20 · Upravil/a: peta
Str4wberry: Taky si myslim :)
Adam501 php kod muzes rozdelit na vic radku. Ta chyba rika, ze je problem v neukoncemen retezci. Na kterem radku ti to skonci po uprave? Mozna ti to prijde jako hloupy zpusob, ale uz jsem par chyb takto odhalil. if ( $_GET['strana'] > 1 ) { echo "<a href=\"vypis.php?strana=" . // s tou teckou si ted nejdem uplne jisty, zda muze byt na radku samostatne $_GET['strana'] - // podobne znamenko 1 . "\"><</a>"; } "V tématu z kterého jsem to kopíroval tazatel píše, že kód mu funguje. " Dej odkaz na tema? Je mozne, ze jsi to upravoval nebo je problem na jinem radku. |
||
Adam501 Profil |
#6 · Zasláno: 22. 8. 2011, 13:45:46 · Upravil/a: Adam501
Str4wberry, peta:
Ano. Problém byl v závorkách u výpočtu. Použil jsem rady z této stránky: stránky konkrétně [#7] Louka a [#8] Louka. A teď se mi ale vykytl další problém. Mám v tabulce dva záznamy a protože jsem chtěl to stránkování otestovat, dal jsem do proměnné clanku_na_stranku hodnotu 1. Sice se zobrazí pouze 1 clanek na stránku, ale místo dvou odkazů na stránky 1 a 2 se zobrazí 8 odkazů(1,2,3....). Stará se o toto funkce for for ($i = 1; $i <= $pocets; $i++ ) { echo '<a href="jnovinky.php?strana='.$i.'">'.$i.'</a>'; } Nevíte jak to upravit, aby se vypisovalo tolik stránek, kolik je třeba? |
||
Str4wberry Profil |
#7 · Zasláno: 22. 8. 2011, 14:03:58
Zřejmě hodnota proměnné
$pocets neodpovídá podílu všech článků a článků na stránku.
|
||
Adam501 Profil |
#8 · Zasláno: 22. 8. 2011, 14:06:25
Str4wberry:
Měly by odpovídat. Je to zase kopírované -> $pocet = mysql_query("select count(*) from clanky WHERE `kategorie` = 'jky'"); $pocets = $pocet / $clanku_na_stranku; |
||
Tori Profil |
#9 · Zasláno: 22. 8. 2011, 15:35:15 · Upravil/a: Tori
Adam501:
Chybí mysql_result nebo obdobná funkce. (Když si vypíšete var_dump($pocet); ↓ edit: Zvýrazněna odpověď. |
||
Adam501 Profil |
#10 · Zasláno: 22. 8. 2011, 15:46:42
Tori:
No a jak to opravit, aby se vypisovalo tolik, kolik má? |
||
Adam501 Profil |
#11 · Zasláno: 22. 8. 2011, 18:10:07 · Upravil/a: Adam501
No, nevím co to má přesně dělat. Ale teď to vypisuje:
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 1 on MySQL result index 6 in /3w/wz.cz/v/vkmadeta/NEW/jnovinky.php on line 40 Ano. Vypisuje to "resource(8) of type (mysql result)". A zapsnáno mám: if (!$vysledek) { die('Could not query:' . mysql_error()); } echo mysql_result($vysledek, 1); |
||
Tori Profil |
#12 · Zasláno: 22. 8. 2011, 18:14:09
Adam501:
Řádky jsou číslované od nuly. $result = mysql_query("select count(*) from clanky WHERE `kategorie` = 'jky'"); $pocet = mysql_result($result, 0); |
||
Adam501 Profil |
#13 · Zasláno: 22. 8. 2011, 18:21:52 · Upravil/a: Adam501
Áha. Takže to vypíše počet řádků? Dalo by se tedy použít i mysql_num_rows?
EDIT: Vyzkoušeno. Jde to. |
||
Joker Profil |
#14 · Zasláno: 22. 8. 2011, 21:02:12
Adam501:
„Dalo by se tedy použít i mysql_num_rows?“ Dalo, ale když jde jen o počet řádků, je efektivnější nechat databázi spočítat řádky a vrátit číslo, než nechat databázi vybrat a vrátit všechny řádky a pak počítat kolik jich je. Funkce mysql_num_rows je užitečná v případě, kdy jsou potřeba i data z těch řádků, ale kromě toho ještě i informace kolik jich je. |
||
peta Profil |
#15 · Zasláno: 24. 8. 2011, 12:06:52 · Upravil/a: peta
mysql_num_rows pouzivam pri listovani, kdyz vypisuji treba 30 radku a chci vedet, zda existuje jeste dalsi stranka. Tak pozadam sql o 31 radku, posledni radek pak smazu, ulozim si do promenne, ze dalsi stranka existuje a zobrazim 30 radku do tabulky.
|
||
Joker Profil |
#16 · Zasláno: 24. 8. 2011, 12:10:25
peta:
Na to ani není potřeba mysql_num_rows, na to stačí prostě jen zkontrolovat, zda ten 31. řádek existuje. |
||
Tori Profil |
#17 · Zasláno: 24. 8. 2011, 12:23:38
peta:
Viz Joker, anebo používat SELECT SQL_CALC_FOUND_ROWS. |
||
peta Profil |
#18 · Zasláno: 25. 8. 2011, 10:39:07
Joker:
Ano, to je ale dalsi sql dotaz. dotaz1 = SELECT ... 0,30 dotaz2 = SELECT ... 31 Kdezto elegantne vytahnu jednim dotazem data i informaci o 31 radku. Pak pres mysql_num_rows zjistim pocet a az pak z toho while+fetch skladam tabulku. |
||
Joker Profil |
#19 · Zasláno: 25. 8. 2011, 11:27:41
peta:
Není, je to jeden dotaz. Algoritmus: SELECT data FROM tabulky WHERE podmínky LIMIT (velikost stránky + 1) Cyklus- dokud existuje další záznam a není plná stránka, vypiš záznam. Za cyklem, pokud existuje další záznam, je další stránka. |
||
Časová prodleva: 13 let
|
0