Autor | Zpráva | ||
---|---|---|---|
Lion76 Profil * |
#1 · Zasláno: 30. 9. 2007, 20:18:43
Zdravim, pokousim se vytvorit tabulku cyklem for, ale nezobrazuje spravny pocet bunek.
$pocetBunek = "3"; $celkemZaznamu = "5"; $pocetRadku = ceil($pocetBunek / $celkemZaznamu); echo "<table>"; for ($radek=0;$radek<=$pocetRadku;$radek++){ echo "<tr>"; for ($bunky=0;$bunky<=$pocetBunek;$bunky++) echo "<td>»</td>"; echo "</tr>"; } echo "</table>"; Vypise: » » » » » » » » Ale spravne je: » » » » » Kde mam prosim chybu? |
||
tiso Profil |
#2 · Zasláno: 30. 9. 2007, 20:27:08
...tak prečo v cykloch začínaš s 0-ou?
A čo sa týka posledného riadku, tak niekedy je vhodné vypísať rovnaký počet buniek... |
||
Lion76 Profil * |
#3 · Zasláno: 30. 9. 2007, 20:32:35
tiso
No tak jsem cyklus zacal jednickou a nic se nezmenilo. Ale ja potrebuji docilit toho, aby byly dva radky a pet bunek. |
||
Lion76 Profil * |
#4 · Zasláno: 30. 9. 2007, 20:39:32
A nebo dva radky a pet bunek, kde bude », v seste bunce na druhem radku by bylo prazdne misto.
|
||
pista87 Profil |
#5 · Zasláno: 30. 9. 2007, 22:26:34
<?php
$pocetBunek = 3; $celkemZaznamu = 5; $pocetRadku = ceil($celkemZaznamu / $pocetBunek); $posledneBunky = $celkemZaznamu % $pocetBunek; echo "<table>"; for ($radek=1;$radek<=$pocetRadku;$radek++){ echo "<tr>"; if($radek == $pocetRadku) for ($bunky=0;$bunky<$posledneBunky;$bunky++) echo "<td>»</td>"; else for ($bunky=0;$bunky<$pocetBunek;$bunky++) echo "<td>»</td>"; echo "</tr>"; } echo "</table>"; ?> |
||
Lion76 Profil * |
#6 · Zasláno: 30. 9. 2007, 23:26:21
pista87
Diky, vsechno je me jasne az na tento zapis $posledneBunky = $celkemZaznamu % $pocetBunek; . Proc je tam % ? |
||
pista87 Profil |
#7 · Zasláno: 30. 9. 2007, 23:40:53 · Upravil/a: pista87
Lion76
Posledny riadok - to je delenie "modulo" (zvysok po deleni) (treba zistit kolko ma posledny riadok zaznamov) napr: 5%3=2 8%10=8 15%1=0 |
||
Lion76 Profil * |
#8 · Zasláno: 30. 9. 2007, 23:47:10
pista87
Aha, dekuji za vysvetleni. Ted jsem si zkousel do toho kodu dat cyklus while, ale asi to nepujde, protoze to vypisuje stejne hodnoty na radku nebo delat neco spatne. Pujde do toho kodu dat i cyklus while. |
||
pista87 Profil |
#9 · Zasláno: 30. 9. 2007, 23:52:34
Lion76
Da sa to len zbytocne by tam pribudlo cca 6 riadkov |
||
Lion76 Profil * |
#10 · Zasláno: 30. 9. 2007, 23:59:11
pista87
Ale ja bych to potreboval, protoze jsou to hodnoty z db dotazu a ja nemuzu na to porad prijit, jak ten cyklus tam mam dat. Pomuzes se mne prosim? |
||
pista87 Profil |
#11 · Zasláno: 1. 10. 2007, 00:07:16
Lion76
<?php $pocetBunek = 3; $celkemZaznamu = 5; $pocetRadku = ceil($celkemZaznamu / $pocetBunek); $posledneBunky = $celkemZaznamu % $pocetBunek; echo "<table>"; $radek=1; while($radek<=$pocetRadku){ echo "<tr>"; $bunky=0; if($radek == $pocetRadku){ while($bunky<$posledneBunky){ echo "<td>»</td>"; $bunky++; } } else{ while($bunky<$pocetBunek){ echo "<td>»</td>"; $bunky++; } } echo "</tr>"; $radek++; } echo "</table>"; ?> |
||
Lion76 Profil * |
#12 · Zasláno: 1. 10. 2007, 00:17:27
pista87
Jsi moc hodny dekuji. |
||
tiso Profil |
#13 · Zasláno: 1. 10. 2007, 00:38:20
Lion76 - Ak chceš do tej tabuľky uložiť záznamy z db, tak treba tú tabuľku konštruovať takto:
Nabudúce skús k tomu ako upraviť nejaký skript napísať aj priamo o čo Ti ide, bolo by to rýchlejšie |
||
Andy Profil * |
#14 · Zasláno: 1. 10. 2007, 10:17:51
Zaujimave, len nechnapem tomuto:
preco je tam 3x rovnasa? : ($column === 1) a co znamena toto: $column=$counter % $pocetBunek; Teda chapem co to robi, ale neviem ako.. Mali popis by sa hodil. |
||
Lion76 Profil * |
#15 · Zasláno: 1. 10. 2007, 20:40:07
tiso
Dekuji, slibuji, ze se polepsim. |
||
tiso Profil |
#16 · Zasláno: 1. 10. 2007, 22:34:25
Andy === je operátor identity, ktorý je pravdivý ak sú oba operandy rovnaké i rovnakého typu...
V PHP totiž funguje automatické pretypovanie operandov, takže ak napríklad porovnávaš reťazec (typ string) s celým číslom (typ int), tak sa najprv automaticky pretypuje jeden z operandov (podľa pravidiel priority sa určuje ktorý) na typ toho druhého a porovnávajú sa už operandy rovnakého typu... Takže potom platí napríklad že (1 == true) ale (1 === true) už nie, pretože sú operandy rozdielneho typu... Prečo sa operátor identity používa - pretože niektoré funkcie môžu vracať návratové hodnoty rôzneho typu - napríklad: (false, 0, 1, 10). No a pri klasickom porovnávaní nezistíš či Ti funkcia vrátila 0 alebo false, preto ak chceš zistiť či Ti vrátila false tak porovnávaš ($hodnota === false) alebo ak chceš zistiť či vrátila 0 tak porovnávaš ($hodnota === 0). V tom skripte som zvolil operátor identity, hoci by myslím stačilo obyčajné porovnanie. |
||
Časová prodleva: 17 let
|
0