Autor Zpráva
mirio
Profil
Ahoj, potřeboval bych poradit s, pro někoho, asi maličkostí, ale mně nic nenapadá - mám MySQL databázi, z které vypisuji takto data (schválně budu zkracovat, abych nezabíral místo)...

<?php 
$soupiska_vypis = mysql_query("SELECT dres, hrac, post, hul, vyska, vaha, narozen, poznamka FROM soupiska WHERE aktivni=1", $connection);
if (!$soupiska_vypis) {
	die("Dotaz do databáze selhal: " . mysql_error () );
}
echo("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"soupiska\" summary=\"Sezóna 2010/2011\">");
echo("<caption><a name=\"S2010_2011\" id=\"S2010_2011\"></a>Sezóna 2010/2011:</caption>");
echo("  <colgroup>");
echo("  <col id=\"soupiskaDres\" />");
echo("  <col id=\"soupiskaHráč\" />");
...
...
echo("  </colgroup>");
echo("<thead>");
echo("<tr>");
echo("    <th scope=\"col\">Dres</th>");
echo("    <th scope=\"col\">Hráč</th>");
...
...
echo("</tr>");
echo("</thead>");
echo("<tbody>");
while ($soupiska = mysql_fetch_array($soupiska_vypis) ) {
	echo ("<tr>");
	echo ("<td>".$soupiska["dres"]."</td>");
	echo ("<td>".$soupiska["hrac"]."</td>");
        ...
        ...
	echo ("</tr>");
	echo ("<tr class=\"coloredRow\">");
	echo ("<td>".$soupiska["dres"]."</td>");
	echo ("<td>".$soupiska["hrac"]."</td>");
        ...
        ...
	echo ("</tr>");
}
echo("</tbody>");
echo ("</table>");
?>


...kde vím, že tenhle zápis je špatně, protože mi to vypíše dvakrát stejný řádek, akorát jednou s jinou CSS třídou ("coloredRow"). Já bych ale chtěl, aby se mi v podmínce střídaly <tr> tagy tak, aby jednou byl bez a jednou s, čili tak, jak to je v mém kódu, ale s tím rozdílem, že nechci, aby se mi dublovaly výpisy z tabulky.

Snad jsem to napsal aspoň trošku srozumitelně. Kdyžtak se ptejte.

Moc děkuju za pomoc.
nightfish_
Profil *
řádky 23 až 36 změň na:
$counter = 0;
while ($soupiska = mysql_fetch_array($soupiska_vypis)) {
  echo "<tr";
  if ($counter++ % 2) echo " class='coloredRow'";
  echo "><td>".$soupiska['dres']."</td>";
  echo "<td>".$soupiska['hrac']."</td>";
  echo "</tr>";
}


vysvětlivka řádku 4: pokud hodnota zbytek proměnné $counter po dělení 2 je TRUE (tzn. ne 0), vypiš pro tento řádek tabulky třídu, jinak nevypisuj nic (s tím, že po provedení výpočtu se obsah proměnné $counter zvýší o jedničku)
blaaablaaa
Profil
mirio:
Bud na tohle pouzij (ne vsude podporovany) css selektor tr:nth-child(2n+1), resp. tr:nth-child(odd) nebo si pred while pridej $i=0;, ktere pak v kazdem opakovani navysis o 1 a pri vypise radku overujes, zda je sude/liche.
Ugo
Profil *
while ($soupiska = mysql_fetch_array($soupiska_vypis) ) {
    $i++;
    if(fmod($i,2)==0) {
    echo ("<tr>");
      echo ("<td>".$soupiska["dres"]."</td>");
      echo ("<td>".$soupiska["hrac"]."</td>");
        ...
        ...
      echo ("</tr>");
    } else {   
      echo ("<tr class=\"coloredRow\">");
      echo ("<td>".$soupiska["dres"]."</td>");
      echo ("<td>".$soupiska["hrac"]."</td>");
        ...
        ...
      echo ("</tr>");
    }
}


... jestli si teda spravne pamatuju fmod :) ... pripadne to muzes vypsat bez trid a jednoduse to nastylovat pomoci pseudoelementu nth-child (stary IE at si trhnou)

btw. palec nahoru za syntaxi echo, kez bych se to taky takhle naucil
mirio
Profil
Perfektní! Děkuju moc všem za ultrarychlé odpovědi, už mám odzkoušeno a je to krásně funkční. Ještě jednou dík moc.

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