| | |
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Autor | Správa |
---|
Registrovaný: 21.09.08 Prihlásený: 14.11.17 Príspevky: 225 Témy: 74 Bydlisko: Michalovce |
Nazdarek. Nasiel som si taky to kod na zobrazenie obrazkov v galerii.
Kód: $numRows = mysql_num_rows($result);
if ($result) {
echo " <table width=\"300px\" border=\"1\"> <tr> <td width=\"100px\" valign=\"top\"><b>Náhlad<b></td> <td align=\"left\"><b>Názov</b></td> </tr> ";
$riadok = 0;
while ($row = mysql_fetch_assoc($result)) { $obrazok = ($row['subor']); $id= ($row['id]); if ($riadok == 0) echo "<tr>\n"; echo " <td> <img src=\"./obrazky/$obrazok\" align=\"left\" width=\"100\"> </td> <td valign=\"top\">{$row['info']}</td>\n"; if ($riadok == ($numRows - 1)) echo "</tr>\n"; else if ($riadok != 0 && $riadok % 2) echo "</tr>\n<tr>\n";
$riadok++;
} echo "</table>"; Lenze tento kod vlastne vypisuje obrazky do 2 stlpcov. Nemohol by mi niekto poradit ako ho upravit aby mi to vypisovalo do 3 alebo viac stlpcov?? A este jedna vec. Co presne znamena, alebo robi tento prikaz?? : Kód: if ($riadok == ($numRows - 1)) echo "</tr>\n"; else if ($riadok != 0 && $riadok % 2) echo "</tr>\n
Zvlast ma zaujima ($numRows - 1) a && $riadok % 2. Co znamena ten znak % 2 ??
Dik za odpovede..
|
|
Registrovaný: 26.07.06 Prihlásený: 20.03.16 Príspevky: 1378 Témy: 90 Bydlisko: Slovakia-Ko... | Napísal kmsa: 12.10.2008 15:58 | |
|
niesom velmi zbezny "uz" v tychto kodoch
if ($riadok == ($numRows - 1)) echo "</tr>\n";
ked premenna riadok sa rovna ciselny vytazok z datababazy(zrejma nevidim co to je ale iba podla sposobu) minus jednej, tak potom vypise </tr> a novy riadok
else if ($riadok != 0 && $riadok % 2) echo "</tr>\n";
alebo ak premenna riadok sa nerovna nule a zaroven premenna riadok je cislo delitelne 2(myslim ze percento 2 znamena cislo delitelne 2 tj bez zvysku), tak potom vipise </tr> a novy riadok
mozno je to chybne alebo z uplne inej strany opisane
_________________ CPU: Intel E7200 momentalne default + freezer 7 pro | MB: Gigabyte GA-P35-DS3 rev. 2.0 F14 | RAM: A-DATA 4x1GB EE Vitesta | VGA: ATI Radeon HD4850 Sapphire Dual Slot | Monitor: BenQ E2200HD+17CTX | HDD: WD 3200AAKS + Maxtor 6Y080M0 80GB SATAII + 120GB ATA Barracuda | PSU: Corsair VX450W | Windows 7 Ultimate Sk | REPRO: Logitech X-210
+
IPhone 3GS JB 3.1.3 (new BR)
múdry sa postara o seba ale ešte múdrejši sa postara aj o druhých |
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 12.10.2008 19:38 | |
|
Tak si to rozoberme: Kód: $riadok != 0 && $riadok % 2 Dá sa to rozdeliť na dva podvýrazy: Kód: ($riadok != 0) && ($riadok % 2) Prvý výraz vráti true, ak sa hodnota v premennej $riadok nerovná nule (resp. inej hodnote ekvivalentnej s nulou, viac tu), inak vráti false a vyhodnocovanie celého výrazu sa tak ukončí (ak sa výraz skladá z viacerých výrazov spojených spojkou && [ and, " a zároveň"] a prvý podvýraz má hodnotu false, tak bez ohľadu na hodnoty ostatných podvýrazov má celý výraz hodnotu false a preto sa ďalšie výrazy nevyhodnocujú - analogicky, ak sú podvýrazy pospájané spojkou || [ or, " logické alebo"] a prvý má hodnotu true, ďalšie sa ignorujú; inak sa výrazy vyhodnocujú zľava doprava). Náš druhý výraz je trochu zaujímavejší, je v ňom totiž skrytá troška programátorskej mágie (a ja osobne ho považujem za veľmi prasácky, pretože nie je na prvý letmý plytký pohľad jasné, čo vlastne znamená). Zopakujme si ho ešte raz: Kód: $riadok % 2 . Operátor % znamená zvyšok po delení - v tomto prípade dvomi; čiže nám povie, či je číslo buď párne, alebo nepárne. To znamená, že ak je v premennej $riadok párne číslo, hodnota výrazu bude nula, pretože párne čísla sú deliteľné dvomi bezo zvyšku. Naopak, aj je v premennej $riadok nepárne číslo, výraz vráti celočíselnú hodnotu jeden. V čom spočíva tá skrytá mágia, o ktorej som hovoril na začiatku? Práve v tom, že náš výraz vracia CELOČÍSELNÉ (integer) hodnoty a spolieha sa na magickú vlastnosť jazyka PHP podľa potreby "meniť" typ premennej. V PHP platí, že za logickú hodnotu FALSE možno považovať aj číslo 0, aj prázdny reťazec, aj hodnotu NULL , aj neinicializovanú premennú. Existuje ešte špeciálny operátor porovnávania, "trojité rovná sa" === ktorý striktne kontroluje aj typ premennej. Viac v spomenutom odkaze. Vráťme sa teraz k nášmu výrazu - čo teda v skutočnosti znamená? Ak je číslo v premennej $riadok párne, výraz vráti logickú hodnotu FALSE (v skutočnosti je to celočíselná 0), ak je číslo nepárne, výraz vráti logickú hodnotu TRUE. OK, vráťme sa teraz k celému výrazu. Keď sa zamyslíme, zistíme, že prvý podvýraz je tam úplne zbytočne! Prečo? Pretože vráti TRUE na každé číslo okrem nuly a FALSE len ak je to nula. Nula sa však považuje za párne číslo (zvyšok po delení nuly dvomi je nula) a preto nám v tom prípade aj druhý podvýraz vráti FALSE. Prvý podvýraz teda len zneprehľadňuje kód (druhý na tom však nie je o nič lepšie). Nuž a ako to zapísať poriadne? Takto: Kód: (($riadok % 2) == 1) Z tohto zápisu je na prvý pohľad jasné, o čo nám ide (vrátiť true na nepárne čísla).
O tom, že ide o zlý zápis sme sa mohli presvedčiť aj pri prečítaní kmsa-ovho príspevku, ktorý sa mylne domnieval, že ($riadok % 2) vráti true pre párne čísla.
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 02.09.08 Prihlásený: 23.01.13 Príspevky: 81 Témy: 17 | Napísal Roko: 12.10.2008 19:46 | |
|
Kód: $riadok = 0; $riadok je pred cyklom while nastavena na nulovu hodnotu Kód: $riadok++; a kazdym priechodom cyklu sa zvysi o jedna Kód: $numRows = mysql_num_rows($result); $numRows je pocet vratenych hodnot z dotazu na databazu, ktory je ulozeny v $result Kód: else if ($riadok != 0 && $riadok % 2) echo "</tr>\n<tr>\n"; takze v ludskej reci, tento riadok znamena to to: za kazdym druhym priechodom cyklu vloz znak koniec riadka a zaciatok noveho riadka. Kód: $riadok != 0 toto znamena, aby sa predchadzajuci kod nevykonal pri prvom priechode cyklom. pretoze iba vtedy sa $riadok rovna nule. takze ak chces, aby ti to hadzalo tri obrazky na jeden riadok, tak musis zmenit 2 na trojku Kód: else if ($riadok != 0 && $riadok % 3) echo "</tr>\n<tr>\n"; mozno ti to bude fungovat hned a mozno ti to bude robit nejake chyby, ktore este bude treba osetrit. no ja si myslim, ze ti to hned pojde... p.s. to percento sa vola modulo a vracia zvysok po deleni. Kód: echo 10 % 3;
ti vrati hodnotu 1, pretoze 10/3 = 3 a zvysok je 1
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 12.10.2008 19:53 | |
|
Roko píše: takze ak chces, aby ti to hadzalo tri obrazky na jeden riadok, tak musis zmenit 2 na trojku Kód: else if ($riadok != 0 && $riadok % 3) echo "</tr>\n<tr>\n"; Chyba! Len si to skús: Kód: var_dump((boolean)(1 % 3)); // TRUE var_dump((boolean)(2 % 3)); // TRUE var_dump((boolean)(3 % 3)); // FALSE var_dump((boolean)(4 % 3)); // TRUE var_dump((boolean)(5 % 3)); // TRUE var_dump((boolean)(6 % 3)); // FALSE
Ako vidíš, správa sa to presne naopak! Vysvetlenie viď môj predchádzajúci príspevok
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 02.09.08 Prihlásený: 23.01.13 Príspevky: 81 Témy: 17 | Napísal Roko: 12.10.2008 19:58 | |
|
aha, jasne, tiez ma to splietlo.
|
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 12.10.2008 20:07 | |
|
Takže aby sme definitívne vyriešili otázku výpisu viacerých fotiek na riadok, skúsime napísať a vysvetliť tento kód:
Kód: define('POCET_FOTIEK_NA_RIADOK', 3); $fotky = array(); while($row = mysql_fetch_assoc($result)) { $fotky[] = $row; } $fotky = array_chunk($fotky, POCET_FOTIEK_NA_RIADOK); if (count($fotky) > 0) { echo "<table>"; foreach ($fotky as $riadok) { echo "<tr>"; if (count($riadok) > 0) { foreach ($riadok as $fotka) { echo "<td><img src=\"./obrazky/".$fotka['subor']."\"></td>"; } } echo "</tr>"; } echo "</table>"; }
V prvom riadku kódu si definujeme počet fotiek, ktoré chceme mať v jednom riadku (je dobré si takéto údaje dávať do konštánt, ale aj o tom som tu už niekedy písal). Potom cyklom while získame všetky záznamy do poľa fotky. Následne využijeme vstavanú funkciu array_chunk, ktorá nám naše veľké pole rozdelí do viacerých menších polí danej veľkosti (viac o tej funkcii v manuáli). No a už nám stačí len dvomi vnorenými cyklami foreach vypísať obsah do krásnej tabuľky (pre istotu sa pred každým cyklom foreach kontroluje, či je pole, cez ktoré sa chystáme prechádzať neprázdne, pretože inak foreach vyhlási chybu).
Výsledkom je kratší, prehľadnejší a flexibilnejší kód. Ak niekedy budeš mať chuť upraviť počet fotiek v riadku na iné číslo, napr. 5, stačí zmeniť hodnotu konštanty POCET_FOTIEK_NA_RIADOK...
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 26.07.06 Prihlásený: 20.03.16 Príspevky: 1378 Témy: 90 Bydlisko: Slovakia-Ko... | Napísal kmsa: 12.10.2008 22:49 | |
|
nj p360t presne opacne som doteraz vnimal % ale aspon v tom mame viacery jasno
_________________ CPU: Intel E7200 momentalne default + freezer 7 pro | MB: Gigabyte GA-P35-DS3 rev. 2.0 F14 | RAM: A-DATA 4x1GB EE Vitesta | VGA: ATI Radeon HD4850 Sapphire Dual Slot | Monitor: BenQ E2200HD+17CTX | HDD: WD 3200AAKS + Maxtor 6Y080M0 80GB SATAII + 120GB ATA Barracuda | PSU: Corsair VX450W | Windows 7 Ultimate Sk | REPRO: Logitech X-210
+
IPhone 3GS JB 3.1.3 (new BR)
múdry sa postara o seba ale ešte múdrejši sa postara aj o druhých |
|
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Vysvetlenie PHP kodu v PHP, ASP | 2 | 445 | 18.10.2017 16:36 IPP | | ako vytvorit galeriu v PHP, ASP | 16 | 2306 | 21.01.2008 17:50 emer | | Ako spravit galeriu obrazkov v JavaScript, VBScript, Ajax | 0 | 492 | 27.02.2010 15:47 Pades | | poznate galeriu na audi.sk? v Grafické programy | 3 | 936 | 07.09.2008 16:18 JanoF | | Vysvetlenie v Modifikácie, návody a projekty | 19 | 4014 | 14.01.2011 8:31 mack0 | | Vysvetlenie v PHP, ASP | 3 | 443 | 13.08.2010 11:32 qacer | | Vysvetlenie v Správy pre vedenie fóra | 5 | 1093 | 25.05.2010 11:28 Daron | | Vysvetlenie v PHP, ASP | 9 | 639 | 22.04.2009 19:39 Ďuri | | Vysvetlenie v HTML, XHTML, XML, CSS | 11 | 798 | 24.09.2008 12:19 zaciatocnik | | Coinminer ? Vysvetlenie v Antivíry a antispywary | 5 | 446 | 14.07.2014 0:56 stopa27 | | vysvetlenie pojmov v Siete | 1 | 874 | 19.08.2006 15:10 Harlequin | | Vysvetlenie importu v Ostatné | 2 | 266 | 30.01.2013 15:37 zaciatocnik | | Vysvetlenie bublesort v Assembler, C, C++, Pascal, Java | 2 | 367 | 10.12.2014 22:37 Misosvk | | Vysvetlenie programu v Assembler, C, C++, Pascal, Java | 11 | 804 | 23.11.2008 20:41 shiro | | vysvetlenie scriptu v JavaScript, VBScript, Ajax | 4 | 501 | 13.11.2010 20:57 DeeJay3 | | Java, vysvetlenie prikazu v Assembler, C, C++, Pascal, Java | 3 | 609 | 24.11.2013 17:18 Vikinger |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|