Stránka: 1 z 1
| [ Príspevkov: 14 ] | |
Autor | Správa |
---|
Registrovaný: 17.08.07 Prihlásený: 30.07.14 Príspevky: 51 Témy: 10 | 10 |
Zdravím vás. Potreboval by som pomoc so stránkovaním. V PHP som nový, takže sa stále len učím. Posielam sem celý php kód s výpisom z DB. Je tam začaté stránkovanie, no prišiel som k bodu, kedy neviem, prečo mi to blbne. Kód: $con=mysqli_connect("localhost","****","****","****"); if (mysqli_connect_errno()) { echo "Pripojenie do MySQL zlyhalo: " . mysqli_connect_error(); }
$result = mysqli_query($con,"SELECT * FROM Spravy");
while($row = mysqli_fetch_array($result)) { echo "<center><b><font style=\"color: #898989; font-size: 20px;\">" . $row['nazov'] . "</font></b></center><br>"; echo "" . $row['popis'] . "<br>"; echo "<span title=\"Celý článok\" class=\"expand\" onClick=\"return ExpandToggle('topic".$row['id']."')\"><b>Celý článok</b></span><div id=\"topic".$row['id']."\" class=\"expandedblock\" style=\"display:none\">" . $row['clanok'] . "</div>"; echo "<br><br>"; }
//Začiatok stránkovania $max_clankov = 5; $stranka = $_GET["aktualna_stranka"]; if(!is_numeric($stranka)) { $stranka = 1; } $pocet = mysql_result(mysql_query("SELECT COUNT (*) FROM Spravy WHERE zmazane='0';"),0); $pocet_stranok = $pocet/$max_clankov; $pocet_stranok = ceil($pocet_stranok); echo $pocet_stranok; mysqli_close($con); ?>
Keď pre kontrolu vypíšem $pocet_stranok, tak mi tam stále vypisuje nulu. Malo by mi to tam vyhodiť 5ku, pretože v DB mám 5 článkov. Prosím vás teda o pomoc.
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | 39 |
2xxx píše: Keď pre kontrolu vypíšem $pocet_stranok, tak mi tam stále vypisuje nulu. Malo by mi to tam vyhodiť 5ku, pretože v DB mám 5 článkov. Tak sa pozri, čo s tou premennou robíš na predchádzajúcich dvoch riadkoch, pred tým výpisom. Ten select nemôže fungovať, pretože medzi COUNT a (*) máš medzeru = vracia null a nula deleno čokoľvek jeeeeee...päť? Je síce chválihodné, že vymýšľaš koleso (aj keď neviem prečo tam kombinuješ mysql_* a mysqli_*), ale pre tvoje dobro - skús sa radšej inšpirovať fungujúcim kódom, pretože to ako to máš teraz navrhnuté nemôže správne fungovať. Najprv vypisuješ všetky záznamy a až potom riešiš stránkovanie - v skutočnosti to má byť presne naopak, pretože pri výpise musíš SELECT obmedziť podľa stránky na ktorej sa nachádzaš - pochopíš, keď si pozrieš nejaký funkčný príklad: uzitocne-a-casto-pouzivane-skripty-vt45403.html#p460968https://www.google.sk/?gws_rd=ssl#q=php ... e&safe=off...
_________________ always is always wrong |
|
Registrovaný: 17.08.07 Prihlásený: 30.07.14 Príspevky: 51 Témy: 10 | 10 |
Hej, to máš pravdu. Tým som si nebol istý, tak som tam skúsil dať medzeru, ale či tam dám medzeru alebo nie, vždy my vráti výsledok 0. Určite sa pozriem na to, čo si mi poslal, ďakujem. Ale chcel by som sa pokúsiť tak či tak odstrániť chybu.
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | 39 |
Skús si ten SELECT spustiť priamo v databáze, či ti vráti to, čo potrebuješ. Ak to bude fungovať normálne, skús ten riadok rozdeliť na dva: Kód: $sql = mysql_query("SELECT COUNT(*) FROM Spravy WHERE zmazane = '0'"); $pocet = mysql_result($sql, 0); echo ($pocet == 5) ? 'OK' : 'Chyba: ' . $pocet; // debug
_________________ always is always wrong |
|
Registrovaný: 17.08.07 Prihlásený: 30.07.14 Príspevky: 51 Témy: 10 | 10 |
Priamo v DB mi to vyhodí pekne 5. Skúsil som to dať aj na dva riadky s tým, čo si mi teraz nadiktoval. To mi vypíše akurát tak Chyba0
|
|
Registrovaný: 01.05.05 Príspevky: 13416 Témy: 1494 | 1494 Bydlisko: Bratislava |
Ake strankovanie tam chces mat? lebo ty najprv vyplujes vsetky clanky a potom sa snazis vypisat nejaky pocet stranok, ale k comu ti to je, ked hned na zaciatku scriptu ti to vypluje vsetko co mas v Spravy? Skus mrknut https://www.google.sk/search?q=pagination+php+example a prezri si niektore z prikladov ako asi funguje strankovanie a podla toho sa skus inspirovat ak to chces robit vlastnym sposobom, ale pochopis trochu ako to strankovanie funguje. Lebo v tom prvom selecte kde ti vypluje vsetky clanky, ja by som to spravil nejak takto: Kód: //toto by si riesil cez nejake podmienky a cislo strany by sa tahalo z parametru v url adrese $start = '0'; // prva strana $start = '5'; // druha strana
$limit = '5'; //tych tvojich 5 clankov na stranu
SELECT * FROM Spravy ORDER BY id DESC LIMIT $start, $limit atd..., aspon ja by som na to tak isiel, resp. takym nejakym sposobom som si strankovanie spravil ja, dalej by si si osetril posuvanie sa po jednotlivych strankach ktore by si zistil pomocou count ze kolko ich tam vobec mas a podla toho by som teda vypisoval clanky.... // Spojený príspevok Uto 29.07.14 13:22Popripade mrkni na kod od stenleyho uzitocne-a-casto-pouzivane-skripty-vt45403.html#p460968
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 11 Enterprise | APC Back-UPS BE-850 VA | Lenovo ThinkPad X250 & Microsoft Windows 11 Professional | iPhone 15 Pro 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu 24.04.1 LTS |
|
Registrovaný: 17.08.07 Prihlásený: 30.07.14 Príspevky: 51 Témy: 10 | 10 |
Hej v prvom selecte viem, že nemám ešte limit. To si tam dám ľahko kedykoľvek. Môj postup bol následovný: Vytvorím si kde sa mi budú zobrazovať jednotlivé články, teda stránky pomocou get. Potom tam mám podmienku na to, keby tam dakto zadával manuálne nejaký string, aby ho to proste šmarilo na prvú stránku. Potom pomocou SELECT chcem zistiť, koľko je všetkých článkov v databáze. Pomocou toho si vyrátam, koľko stránok bude. Potom by som si dal obmedzenie v prvom SELECT a nakoniec by som spravil odkazy na konkrétne stránky. Lenže ten druhý SELECT mi tu v kóde nevráti 5 a priamo v db áno, tak ja neviem čo s tým je.
|
|
Registrovaný: 01.05.05 Príspevky: 13416 Témy: 1494 | 1494 Bydlisko: Bratislava |
Skus to takto: Kód: $query = "SELECT COUNT (*) as num FROM Spravy WHERE zmazane='0'"; $result = mysql_fetch_array(mysql_query($query)); $pocet = $result[num];
$pocet_stranok = $pocet/$max_clankov; $pocet_stranok = ceil($pocet_stranok); echo $pocet_stranok;
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 11 Enterprise | APC Back-UPS BE-850 VA | Lenovo ThinkPad X250 & Microsoft Windows 11 Professional | iPhone 15 Pro 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu 24.04.1 LTS |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
Skor bude problem v tom, ze miesas mysqli a mysql funkcie
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 17.08.07 Prihlásený: 30.07.14 Príspevky: 51 Témy: 10 | 10 |
Skúsil som to aj podľa JanoF, no robilo to presne to isté. Namiesto SELECT som skúsil použiť funkciu mysql_num_rows(); no tiež mi to vrátilo nulu.
|
|
Registrovaný: 01.05.05 Príspevky: 13416 Témy: 1494 | 1494 Bydlisko: Bratislava |
No skus to tak ako pise stenley, to som si nevsimol, ale ty tam miesas mysqli a mysql funkcie, cize si vyber jedno, vhodnejsie bude asi mysqli kedze mysql uz bude v novsich verziach zrusena aspon sa mi nieco take mari a skus to tak, cize to najprv prerob a bude ti to asi urcite fungovat. Takto nejako: Kód: $result = mysqli_query($con,"SELECT COUNT(*) FROM Spravy WHERE zmazane = '0'"); $pocet = mysqli_fetch_array($result,MYSQLI_NUM); $pocet_stranok = $pocet[0]/$max_clankov;
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 11 Enterprise | APC Back-UPS BE-850 VA | Lenovo ThinkPad X250 & Microsoft Windows 11 Professional | iPhone 15 Pro 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu 24.04.1 LTS |
|
Registrovaný: 17.08.07 Prihlásený: 30.07.14 Príspevky: 51 Témy: 10 | 10 |
Presne takto som to skúšal už aj pred tým, než som sem písal. Tá hodnota je stále rovnaká bohužiaľ.
|
|
Registrovaný: 01.05.05 Príspevky: 13416 Témy: 1494 | 1494 Bydlisko: Bratislava |
mne to pri 6 clankoch pricom jeden mam oznaceny ako zmazany, cize v riadku toho clanku nemam 0 ale dal som tam 1 mi ten script vypluje 1, ziadna 0 // Spojený príspevok Uto 29.07.14 18:40Kód: <?php $con=mysqli_connect("localhost","root","","test"); if (mysqli_connect_errno()) { echo "Pripojenie do MySQL zlyhalo: " . mysqli_connect_error(); }
$result = mysqli_query($con,"SELECT * FROM Spravy");
while($row = mysqli_fetch_array($result)) { echo "<center><b><font style=\"color: #898989; font-size: 20px;\">" . $row['nazov'] . "</font></b></center><br>"; echo "" . $row['popis'] . "<br>"; echo "<span title=\"Celý článok\" class=\"expand\" onClick=\"return ExpandToggle('topic".$row['id']."')\"><b>Celý článok</b></span><div id=\"topic".$row['id']."\" class=\"expandedblock\" style=\"display:none\">" . $row['clanok'] . "</div>"; echo "<br><br>"; }
//Začiatok stránkovania $max_clankov = 5; $stranka = $_GET["aktualna_stranka"]; if(!is_numeric($stranka)) { $stranka = 1; } $result = mysqli_query($con,"SELECT COUNT(*) FROM Spravy WHERE zmazane = '0'"); $pocet = mysqli_fetch_array($result,MYSQLI_NUM); $pocet_stranok = $pocet[0]/$max_clankov; $pocet_stranok = ceil($pocet_stranok); echo $pocet_stranok; mysqli_close($con); ?> takto mi to funguje, aj ked vypise chybu skrz $stranka kedze nemam v odkaze parameter aktualna_stranka=0 ale s tym sa nezobrazi ziadne chybove hlasenie, ale $pocet_stranok mi zobrazi 1 pri 5 clankoch, pridal som 6 a zobrazilo 2. Takze nieco robis zle
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 11 Enterprise | APC Back-UPS BE-850 VA | Lenovo ThinkPad X250 & Microsoft Windows 11 Professional | iPhone 15 Pro 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu 24.04.1 LTS |
|
Registrovaný: 17.08.07 Prihlásený: 30.07.14 Príspevky: 51 Témy: 10 | 10 |
Aaaa, ja som tam nedával toto potom. $pocet = mysqli_fetch_array($result,MYSQLI_NUM); Už to fičí. Ďakujem.
|
|
Stránka: 1 z 1
| [ Príspevkov: 14 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v PHP, ASP | 7 | 578 | 24.07.2011 12:44 shaggy | | v PHP, ASP | 12 | 1044 | 01.10.2009 18:08 dessert | | v JavaScript, VBScript, Ajax | 3 | 661 | 09.01.2009 12:47 rooobertek | | v PHP, ASP | 6 | 380 | 30.09.2014 22:20 shaggy | | v PHP, ASP | 7 | 577 | 03.05.2008 11:24 qacer | | [ Choď na stránku: 1, 2 ] v PHP, ASP | 35 | 2320 | 13.01.2008 14:11 ROmario | | v PHP, ASP | 0 | 390 | 12.03.2010 10:35 speedy | | v PHP, ASP | 3 | 487 | 17.02.2009 16:11 Blackshadow | | v PHP, ASP | 2 | 363 | 25.06.2012 14:57 Slavci | | v Databázy | 12 | 888 | 07.11.2007 20:22 tatysp | | v PHP, ASP | 3 | 540 | 20.05.2008 8:56 p360t | | v PHP, ASP | 22 | 1439 | 26.06.2008 23:31 Blackshadow | | v Ostatné programy | 2 | 1756 | 03.03.2009 15:47 slavo285 | | [ Choď na stránku: 1, 2 ] v PHP, ASP | 31 | 3231 | 03.07.2009 13:55 stenley | | v PHP, ASP | 8 | 447 | 22.01.2009 20:41 djsulo | | v PHP, ASP | 9 | 658 | 03.10.2007 20:38 juho |
|