Autor Zpráva
jirka
Profil *
zdravim vas muze me nekdo poradit jestli funguje neco (funkce) co pri vypsani z databaze rozporna sude a liche radky (potrebuji to k rozliseni pozadi 1. radek svetla 2. radek tmava 3. svetla atd...) diky moc za radu
Kaifman
Profil
tak na to nepotřebuješ funckci databaze, ne ?
pokud je něco sudýho tak je to delitělný dvěma takže pokud bude zbytek po celočíselném dělení dvěma 0 pak je to sudý
např if ($cislo_radku % 2 == 0) echo "tady bude jina barva řádku";

% operátor vrací zbytek po celočíselném dělení
DoubleThink
Profil *
Sudé číslo se od lichého liší v tom, že lze dělit 2 beze zbytku:
if($var % 2 == 1){

// liche
} else if ($var % 2 == 0){
// sudé
}
Kaifman
Profil
:o) heh byl jsem první
DoubleThink
Profil *
too late...
Kaifman
Profil
:o)
thingwath
Profil
Málem jsem tu s tím visel třetí ;-)
Fred
Profil
Přestože je tohle php dotaz, řešil bych konkrétně tohle, v případě, že by se jednalo o nějakou dlouhou tabulku, javascriptem. Protože je to v js jen několik řádků, na rozdíl od datové velikosti nevím kolika zápisů class="suda" Tady je odkaz http://www.pxl8.com/alternate_rows.html
Martin Majliš
Profil
Já používám modulo %, výsledkem je zbytek po celočíselném dělení - 5%2 = 1, 10%3 = 1, takže snadno odlišíš 2 řádky.


$vysledek = mysql_query('SELECT jmeno, prijmeni FROM lidi ORDER BY prijmeni ASC');
$i = 0;
if ( mysql_num_rows($vysledek) ){
echo '<table>';
echo '<thead>';
echo '<tr><td>Prijmeni</td><td>Jmeno</td></tr>';
echo '</thead>';
echo '<tbody>';
while($radek = mysql_fetch_array($vysledek, MYSQL_ASSOC)){
echo '<tr class="radek'.($i%2).'">';
echo '<td>'.$radek['prijmeni'].'</td>';
echo '<td>'.$radek['jmeno'].'</td>';
echo '</tr>';
$i++;
}
echo '</tbody>';
echo '</table>';
}


a do stylu:

/* barvy nasledujicich radku */
.radek1{
background-color:red;
}

.radek2{
background-color:blue;
}
Martin Majliš
Profil
Tak 3. :( Ale s příkladem použití. :o)
Kaifman
Profil
to FRED tys tam toho teda usetril jak svina.....pripada mi to ze to je jeste delsi :o)
Fred
Profil
Hmm, no nevim to jsi asi trochu nepochopil, co jsem tím chtěl říct. Zkus vygenerovat tabulku tak 500x<td> tzn. 250xclass="radek1" a tipni si kolik má 250xclass="radek1" kb na rozdíl od toho js kde ten class nevypisuješ.
Kaifman
Profil
:o) Heh, no jo sorry sem koukal jen na zdrojak a nečet sem nic dál. Sem dilina. Trochu mě snad omlouvá, že bylo 00:48

Ale stejně když generuju něco delšího tak to rozdělím na víc stran takže už to potom je jen pár bajtů. Ale jinak fajn nápad.
23k
Profil *
Frede Diky Ti. Jsem nevedel jak to jde udelat na staticke strance :), tohle si nekam zapisu :)
jirka
Profil *
diky moc ja vedel ze jsou tady super zdroje :))))) diky moc
jirka
Profil *
jeste malinky dotazek :) k cemu presne slouzi MYSQL_ASSOC proc ne MYSQL_NUM ??????? diky moc :)
Martin Majliš
Profil
jirka: Já preferuji asociativní pole, protože je na 1. pohled patrné, co se bude ukrývat na daném indexu:
srovnání

echo '<td>'.$radek['prijmeni'].'</td>';
echo '<td>'.$radek['jmeno'].'</td>';



echo '<td>'.$radek[1].'</td>';
echo '<td>'.$radek[0].'</td>';


1. zápis mi připadá mnohem přehlednější.
jirka
Profil *
ahaaaa uz to chapu to je vpodstate jen "system" jak se to zapise :) jo mas pravdu 1. zapis je prehlednejsi :)))
Martin Majliš
Profil
Jirka:
Ještě je vhodné, než mysql_fetch_array() použiješ, otestovat pomocí mysql_num_rows, jinak budeš mezi:Warmin: mysql_fetch_array()
jirka
Profil *
mysql_num_rows uz pouzivam takze by nemel byt problem :-D
23k
Profil
trošku OT, ale stejně přijdou s troškou do mlýna

$i=0;
while ($i<15)

{
$barva = ($barva=="red") ? "green" : "red";
echo "<span style='color: $barva'>$i. text</span><br/>";

$i++;
}
Lemur
Profil *
No, já osobně na zjištovábní sudá/lichá používám výraz
 ($cislo & 1)
- dneska to asi už nemá takový smyls, natož u interpertovanýho jazyka jako PHP, ale pamatuju časy, kdy dělení zabralo tak 40 taktů procesoru, zatímco AND / TEST dva nebo tři. A při psaní nejvnitřnejšich smyček je to sakra znát.
A na rozlišení řádků si nadefinuju dva styly - jeden končí nulou, druhý jedničkou. V kódu použiju něco jako tohle:
 <div class="stylradku<?=($pocitadlo++ & 1)?>"> .... 
a nemusím dělat žádné podmiínky. Zase - u interpretovanýho jazyka je to buřt, ale každý dopředu neodhadnutý skok znamená vysypat fronu předvybraných instrukcí, takže čím mín skoků, tím líp. Hold assembler člověka poznamená ...
llook
Profil
Pokud jde o přepínání pouze dvou stavů (sudá/lichá) a nemám k dispozici pořadí, používám dvoustavový datový typ - boolean. Pro výpis databáze s odlišením sudých a lichých řádků třeba takhle:

for ($lichy=true; $row = mysql_fetch_assoc($result); $lichy = !$lichy) {
$class = $lichy ? 'odd' : 'even';
echo('<tr class="'.$class.'"><td>'.$row['pole'].'</td></tr>');
}

Pokud se vám for zdá moc složitý, můžete si to rozepsat do while, ale to zas připadá nepřehledný mě:

$lichy=true;
while ($row = mysql_fetch_assoc($result)) {
$class = $lichy ? 'odd' : 'even';
echo('<tr class="'.$class.'"><td>'.$row['pole'].'</td></tr>');
$lichy = !$lichy;
}
Toto téma je uzamčeno. Odpověď nelze zaslat.

0