Autor Zpráva
Ariska
Profil
Dobrý den, potřebovala bych od vás pomoci. Jde o to, že z databáze vypisuji data, a vypisují se na stránku tak, že jsou na řádku vždy dva záznamy, a mám to nastylované tak, že druhý záznam má trochu jiný styl. No a já potřebuji, aby se tyto dva styly ve výpisu střídaly, a nějak nevím jak na to... o:)

Takhle vypadá kód:

if ($vysledek=mysql_query("$sql")){  
echo "<ul>";
          while ($radek=mysql_fetch_array($vysledek)){ 
          echo "<li><img src='images/demo/420x190.gif' alt='' /><h2>" . $radek["nazev"] . "</h2><p>" . $radek["text"] . "</p><p class='readmore'><a href='#'>Vědět více &raquo;</a></p></li>";
          }
echo "</ul>";
}else{
echo mysql_error();
}

A tento kód se má s tím předešlým střídat.

    
     echo "<li class='last'><img src='images/demo/420x190.gif' alt='' /><h2>" . $radek["nazev"] . "</h2><p>" . $radek["text"] . "</p><p class='readmore'><a href='#'>Vědět více &raquo;</a></p></li>";

Zkusila jsem udělat druhý while cyklus, ale to nebylo správně. Cykly jsou právě to, co mi moc nejde, takže bych ocenila radu zkušenějších, myslí, že je to jednoduché řešení, akorát nevím jaké... o:) Děkuji vám moc za vaší ochotu mi poradit.
preca1
Profil
Zdravim,
co koukam, tak jedinej rozdíl je v tom, že v druhym případě máš navíc class='last'. Můžeš si udělat lokální proměnnou $counter = 0;, kterou v každý iteraci zvedneš o jedno a pak pomocí podmínky (asi $counter % 2 == 0) buď přidáš tento text, nebo ne.

Poznámka vedle, třída last značí, že je něco poslední, což podle tvého kódu neni. Možná by stálo za to onu třídu přejmenovat.
martin1312
Profil
preca1:
ono možno to vychádza tak, že na riadku budú iba 2 tieto bloky a potom by pomenovanie last mohlo byť v zmysle "na konci riadka" :)
peta
Profil
Nebo by se to dalo resit v css pres nth-child, even, odd.
Ariska
Profil
Ano, jak řiká martin1312, je to myšleno přesně jak píše. Ale moc nerozumím jak to myslíš... chápu myšlenku, ale nevím jak to zakomponovat do toho while cyklu, který tam už mám.


peta:
jo to vypadá zajímavě, zkusím to prozkoumat :)


peta Skvělí, moc ti děkuji, funguje to bezvadně. A je to snadné a pro mě nové. Díky za nové poznatky, vždy jsem nadšená za novinky o:)
martin1312
Profil
Ja len dodám, že preca1 to myslel takto:

$i = 1;
while(...)
{
    $class = ($i % 2 == 0) ? 'last' : '';
    ...
    ...
    $i++;
}
pcmanik
Profil
Ariska:
Nth-child() má podporu až od IE9, takže ak je potrebná podpora starších verzií riešenie od preca1 je lepšie, nakoľko bude fungovať všade.
Ariska
Profil
martin1312:
Jo táák, teda dalo mi to chvíli to pochopit, neboť nejsem tak moc pokročilá, jak si vypsal kód o:). Ale dneska už jsem jednou viděla podobnou podmínku, a pak normální zápis, tak jsem z toho tak nějak pochopila, co to je za zvláštní, pokročilý a pro mě neznámý zápis :D no ale už mi to také funguje a lépe, neboť u toho css jsem ho musela trochu upravit. A právě že jsem se také dočetla, že není tak kompatibilní... tak moc děkuji, za nové poznatky :)
peta
Profil
pcmanik: Pak bych pouzil javascript, ktery muzu podle class aplikovat na jakoukoliv tabulku. Vubec bych neztracel cas placat se se vzhledem v php.
Jeste je tu moznost first-child / last-child, jedno z toho funguje i ve starsim IE.
martin1312:
$class = ($i % 2 == 0) ? 'last' : '';
$class = ($i % 2 == 0) ? ' class="last"' : ''; // ja bych to resil tatko, za predpokladu, ze tam neni dalsi class
martin1312
Profil
peta:
to je fuk, bolo to iba nástrelové riešenie a osobne to aj tak riešim mojím spôsobom, presne kôli tomu, čo píšeš - môže tam byť viac tried.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0