Autor | Zpráva | ||
---|---|---|---|
Manny Profil * |
#1 · Zasláno: 4. 11. 2010, 09:54:58
Banalita, ale mám nějaké zatmění:-)
Následujícím kódem vypisuji z db 5 položek a chtěl jsem je mít na začátku očíslované. While funguje, ale for mi to nechce počítat správně. while($zaznam=mysql_fetch_array($dotaz)) { for ($i=1; $i<=5; $i++) $znamka=$zaznam["znamka"]; if ($znamka >= 1 && $znamka <1.5 ) {$hodnoceni = "1star";} elseif ($znamka >= 1.5 && $znamka < 2 ){$hodnoceni = "15star";} elseif ($znamka >= 2 && $znamka <2.5 ){$hodnoceni = "2star";} elseif ($znamka >= 2.5 && $znamka < 3 ){$hodnoceni = "25star";} elseif ($znamka >= 3 && $znamka <3.5 ){$hodnoceni = "3star";} elseif ($znamka >= 3.5 && $znamka < 4 ){$hodnoceni = "35star";} elseif ($znamka >= 4 && $znamka <4.5 ){$hodnoceni = "4star";} elseif ($znamka >= 4.5 && $znamka < 5 ){$hodnoceni = "45star";} elseif ($znamka >= 5) {$hodnoceni = "5star";} else $hodnoceni = "00star"; echo '<h3>'.$i.'<a href="komiksy/galerie.php?cislo='.$zaznam["poradi"].'" target="_blank" title="Autor: '.$zaznam["autor"].', Překlad: '.$zaznam["preklad"].'">'.$zaznam["nazev"].'</a></h3> <img src="design/znamky/'.$hodnoceni.'.png" alt="'.$znamka.' hvězdy"><br> hvězdiček: '.$znamka.', hlasů: '.$zaznam["pocethlasovani"].'.<br>'; } |
||
radas Profil * |
#2 · Zasláno: 4. 11. 2010, 10:08:14
to for by mělo uzavírat všechny podmínky a ne jen ten řádek č.5 ?
mohl by jste uvést i dotaz na db? |
||
Cup Profil |
#3 · Zasláno: 4. 11. 2010, 10:08:17
nějak moc to nezkoumám, ale nechybí ti u for chlupatý závorky? {}
|
||
fandaa Profil |
#4 · Zasláno: 4. 11. 2010, 10:15:51
Manny:
vyzkoušej... $i = 1; while($zaznam=mysql_fetch_array($dotaz)) { $znamka=$zaznam["znamka"]; if ($znamka >= 1 && $znamka <1.5 ) {$hodnoceni = "1star";} elseif ($znamka >= 1.5 && $znamka < 2 ){$hodnoceni = "15star";} elseif ($znamka >= 2 && $znamka <2.5 ){$hodnoceni = "2star";} elseif ($znamka >= 2.5 && $znamka < 3 ){$hodnoceni = "25star";} elseif ($znamka >= 3 && $znamka <3.5 ){$hodnoceni = "3star";} elseif ($znamka >= 3.5 && $znamka < 4 ){$hodnoceni = "35star";} elseif ($znamka >= 4 && $znamka <4.5 ){$hodnoceni = "4star";} elseif ($znamka >= 4.5 && $znamka < 5 ){$hodnoceni = "45star";} elseif ($znamka >= 5) {$hodnoceni = "5star";} else $hodnoceni = "00star"; echo '<h3>'.$i.'<a href="komiksy/galerie.php?cislo='.$zaznam["poradi"].'" target="_blank" title="Autor: '.$zaznam["autor"].', Překlad: '.$zaznam["preklad"].'">'.$zaznam["nazev"].'</a></h3> <img src="design/znamky/'.$hodnoceni.'.png" alt="'.$znamka.' hvězdy"><br> hvězdiček: '.$znamka.', hlasů: '.$zaznam["pocethlasovani"].'.<br>'; $i++; } |
||
Manny Profil * |
#5 · Zasláno: 4. 11. 2010, 10:32:02
fandaa:
No jo, fuguje. Jak jednoduché. Nějak jsem se upnul k tomu for a tohle je super. |
||
tiso Profil |
#6 · Zasláno: 4. 11. 2010, 10:55:03 · Upravil/a: tiso
Manny: miesto tej if/elseif brutality môžeš spraviť niečo takéto:
$hodnoceni=(($znamka < 1) ? '00' : str_replace('.', '', min(10, floor($znamka * 2)) / 2)).'star'; |
||
imploder Profil |
#7 · Zasláno: 4. 11. 2010, 14:16:46 · Upravil/a: imploder
Manny:
for je v podstatě takový mocnější while, tady se dá dobře použít na celý cyklus: for($i=1; $zaznam=mysql_fetch_array($dotaz); $i++) { $znamka=$zaznam["znamka"]; if ($znamka >= 1 && $znamka <1.5 ) {$hodnoceni = "1star";} elseif ($znamka >= 1.5 && $znamka < 2 ){$hodnoceni = "15star";} elseif ($znamka >= 2 && $znamka <2.5 ){$hodnoceni = "2star";} elseif ($znamka >= 2.5 && $znamka < 3 ){$hodnoceni = "25star";} elseif ($znamka >= 3 && $znamka <3.5 ){$hodnoceni = "3star";} elseif ($znamka >= 3.5 && $znamka < 4 ){$hodnoceni = "35star";} elseif ($znamka >= 4 && $znamka <4.5 ){$hodnoceni = "4star";} elseif ($znamka >= 4.5 && $znamka < 5 ){$hodnoceni = "45star";} elseif ($znamka >= 5) {$hodnoceni = "5star";} else $hodnoceni = "00star"; echo '<h3>'.$i.'<a href="komiksy/galerie.php?cislo='.$zaznam["poradi"].'" target="_blank" title="Autor: '.$zaznam["autor"].', Překlad: '.$zaznam["preklad"].'">'.$zaznam["nazev"].'</a></h3> <img src="design/znamky/'.$hodnoceni.'.png" alt="'.$znamka.' hvězdy"><br> hvězdiček: '.$znamka.', hlasů: '.$zaznam["pocethlasovani"].'.<br>'; } Dělá to to samé jako fandoova verze, jenom je $i=1 a $i++ dané do hlavičky for a ne jen tak do while. Je to takové čistější. Jinak se dá samozřejmě použít i while, vlastně for na programování vůbec nepotřebuješ, stačí while. For ale kód zpřehledňuje. |
||
Joker Profil |
#8 · Zasláno: 4. 11. 2010, 14:47:50
imploder:
„Je to takové čistější.“ No, mně to přijde méně intuitivní. |
||
imploder Profil |
#9 · Zasláno: 4. 11. 2010, 16:45:39
Joker:
„No, mně to přijde méně intuitivní.“ No, tak je to pokročilejší konstrukce jazyka. Pro začátečníka je nejintuitivnější while, protože je nejjednodušší. For je přehlednější v tom, že logika cyklu (inicializace, podmínka, krok) je na jednom místě, ne roztahaná na 3 různých místech. |
||
Časová prodleva: 14 let
|
0