Problem ze zrobieniem zebry tabeli

0

Witam potrzebuję zrobić na stronie 2 kolorową tabelę żeby dane zawarte w niej tak się nie zlewały. Kolumny w poziomie raz w kolorze np białym a pod tym np zielone i tak na zmianę.

Kod u mnie wygląda tak:


      echo "<tr$highlight>";
	  if ($i==0) {
	  echo "<td rowspan=$licz><b><a href=\"details.php?id=".$arr['id']."&hit=1\" alt=\"".htmlspecialchars($arr['name'])."\" title=\"".htmlspecialchars($arr['name'])."\">".htmlspecialchars(CutName($torrname,80))."<b></td>
<td rowspan=$licz><center><b>$wstawil</b></center></td>
<td rowspan=$licz><center><b><a href=viewsnatches.php?id=".$arr['id'].">$count</a></b> razy</center></td>
<td rowspan=$licz align=center><font color=\"#A52A2A\">".$arr['seeders']."</a></td>
<td rowspan=$licz align=center>".number_format($arr['leechers'])."</td>
<td bgcolor=#A52A2A rowspan=$licz><font color=white><b><center>$seed</center></b></font></td>";
	  }
	  echo "</tr>";

A więc ja to zrobiłem tak:


      echo "<tr$highlight>";
	 $uc++;
    if($uc%2 == 0)
    $utc = "a08f74";
    else
    $utc = "bbaf9b";
{
	  echo "<tr bgcolor=\"#$utc\"><td rowspan=$licz><b><a href=\"details.php?id=".$arr['id']."&hit=1\" alt=\"".htmlspecialchars($arr['name'])."\" title=\"".htmlspecialchars($arr['name'])."\">".htmlspecialchars(CutName($torrname,80))."<b></td>
<td rowspan=$licz><center><b>$wstawil</b></center></td>
<td rowspan=$licz><center><b><a href=viewsnatches.php?id=".$arr['id'].">$count</a></b> razy</center></td>
<td rowspan=$licz align=center><font color=\"#A52A2A\">".$arr['seeders']."</a></td><td rowspan=$licz align=center>".number_format($arr['leechers'])."</td>
<td bgcolor=#A52A2A rowspan=$licz><font color=white><b><center>$seed</center></b></font></td>";
	  }

	  echo "</tr>";

No i niestety efekt wychodzi połowiczny, kolorki co prawda są na zmianę ale kolumny tabel się zdublowały i porozjeżdżały.
ktoś pomoże ?

4

Człowieku, miej litość, weź to sformatuj...

Nie używaj takich skamieniałości jak bgcolor... To może 20 lat temu było ok. Poczytaj sobie o css i selektorach even i odd.

0

Nie chce tego robić w css chce jedną tylko poprawić tabelkę w kodzie. Jak zrobię w css to praktycznie wszystkie tabele mi się pozmieniają.

1
Seysso napisał(a):

Nie chce tego robić w css chce jedną tylko poprawić tabelkę w kodzie. Jak zrobię w css to praktycznie wszystkie tabele mi się pozmieniają.

To nakładasz osobną klasę na tę jedną tabelkę i zmieniasz style tylko dla tej jednej klasy.

0

Niby tak, ale tutaj wszystko rozchodzi się (tak mi się wydaje) o jedną linię kodu, kiedy podmieniam:

if ($i==0) {

Na

$uc++;
    if($uc%2 == 0)
    $utc = "a08f74";
    else
    $utc = "bbaf9b";
{

Kolorki się zmieniają jak należy ale dublują się kolumny i rozjeżdżają.

0

A co tam na dole robi ta klamra? Zgubiła się?

0
 echo "<tr$highlight>";
     $uc++;
    if($uc%2 == 0)
    $utc = "a08f74";
    else
    $utc = "bbaf9b";
	  echo "<tr bgcolor=\"#$utc\"><td rowspan=$licz><b><a href=\"details.php?id=".$arr['id']."&hit=1\" alt=\"".htmlspecialchars($arr['name'])."\" title=\"".htmlspecialchars($arr['name'])."\">".htmlspecialchars(CutName($torrname,80))."<b></td>
<td rowspan=$licz><center><b>$wstawil</b></center></td><td rowspan=$licz><center><b><a href=viewsnatches.php?id=".$arr['id'].">$count</a></b> razy</center></td>
<td rowspan=$licz align=center><font color=\"#A52A2A\">".$arr['seeders']."</a></td>
<td rowspan=$licz align=center>".number_format($arr['leechers'])."</td>
<td bgcolor=#A52A2A rowspan=$licz><font color=white><b><center>$seed</center></b></font></td>";
	  	  echo "</tr>";

Bez klamer niestety efekt ten sam.

Jak bym podesłał link do pliku, zerknął byś ?

1

Zrób to po bożemu w CSS od tego on jest.
Dodaj nową klasę np. strippedTable i w niej określ to co już @serek sugerował.
Potem dodaj tą klasę tylko do wybranej tabeli.

0

Z tego co widzę, to w ogóle robisz tr, a potem wewnątrz znowu masz tr. Tu jest tyle błędów, że ciężko coś poradzić. Wrzuć więcej kodu. I weź zrób to w css, zaoszczędzisz wszystkim (i sobie też) nerwów.

0
 if (mysql_num_rows($res) > 0) {
?><center><?
    print("<table width=850 class=tabletitle border=1 cellspacing=0 cellpadding=5>\n");

    echo "<tr>";
	echo "<td class=\"colhead\">Nazwa</center></td>";
	echo "<td class=\"colhead\"><center>Wstawił</center></td>";
	echo "<td class=\"colhead\"><center>Pobrany</center></td>";
	echo "<td class=\"colhead\"><center>Se.</center></a></td>";
	echo "<td class=\"colhead\"><center>Le.</center></td>";
	echo "<td class=\"colhead\"><center>Reseed</center></td>";
	echo "</tr>\n";

    while ($arr = mysql_fetch_assoc($res)) {
	
$user = mysql_query("SELECT username, anonymous FROM users WHERE id = " . $arr['owner']) or sqlerr(__FILE__, __LINE__);
$arruser = mysql_fetch_assoc($user);
$timesnatch = mysql_query("SELECT COUNT(snatched.userid) FROM snatched WHERE finished = 'yes' AND torrentid = " . $arr['id']) or sqlerr(__FILE__, __LINE__);
$arrtimesnatch = mysql_fetch_array($timesnatch);
$count = $arrtimesnatch[0];

if (get_user_class() >= UC_MODERATOR or $CURUSER['id'] == $arr['owner'] or $arruser['anonymous'] == 'no')
$wstawil = "<a href=\"userdetails.php?id=$arr[owner]\">".htmlspecialchars($arruser[username])."</a>";
else
$wstawil = "<i>Anonimowy</i>";

if ($arr[seeders] == 0) {
if ($arr['reseedtime'] < get_date_time(gmtime())) {
$seed = "Poproś o seeda <a href=takereseed.php?reseedid=".$arr['id']."><b>tutaj</b></a>";
}
else if ($arr['reseedtime'] > get_date_time(gmtime())) {
$reseedtime = $arr['reseedtime'];
$seed = "Prośba została wysłana.<br>Następna za: " . mkprettytime(strtotime($reseedtime) - gmtime()) . ".";
}
}

      $torrname = htmlspecialchars($arr['name']);

      $ttl = (28*24) - floor((gmtime() - sql_timestamp_to_unix_timestamp($arr["added"])) / 3600);

$licz = number_format($arr['leechers']);
$pnsr = mysql_query("SELECT userid, to_go FROM peers WHERE torrent =" . $arr['id'] . " ORDER BY to_go") or sqlerr(__FILE__, __LINE__);

for ($i=0;$i<$licz;$i++) {


$highlight = $CURUSER["id"] == $arr['owner'] ? " bgcolor=#BCCAD6" : "";

      echo "<tr$highlight>";
	  if ($i==0) {
	  echo "<td rowspan=$licz><b><a href=\"details.php?id=".$arr['id']."&hit=1\" alt=\"".htmlspecialchars($arr['name'])."\" title=\"".htmlspecialchars($arr['name'])."\">".htmlspecialchars(CutName($torrname,80))."<b></td>
<td rowspan=$licz><center><b>$wstawil</b></center></td>
<td rowspan=$licz><center><b><a href=viewsnatches.php?id=".$arr['id'].">$count</a></b> razy</center></td>
<td rowspan=$licz align=center><font color=\"#A52A2A\">".$arr['seeders']."</a></td>
<td rowspan=$licz align=center>".number_format($arr['leechers'])."</td><td bgcolor=#A52A2A rowspan=$licz><font color=white><b><center>$seed</center></b></font></td>";
	  }
	  echo "</tr>";
	}
    }
    print("</table>\n");
  } else

Ok to żeby przyspieszyć zmieniłem nazwę klasy w kodzie na
.strippedTables
do css dodałem

.strippedTables {
  background-color: yellow;
}

kolor zmieniło na yellow, tylko nie bardzo wiem jak dodać w css żeby te kolorki były na przemian co trzeba jeszcze dopisać ?

0

Ten htlm jest straszny. Miałam ci podlinkować dokładnie to samo, co @jurek1980, no ale on już to zrobił.
Od takich bajerów jest css, html/php mają się zajmować semantyką, a nie generować głupoty.

0

Ale co mi z odsyłacza "jak to się robi" ja potrafię używać wyszukiwarki google. Gdybym potrafił to co znajdę przełożyć na kod to bym tu nie pisał. Gdybym był programistą to takie forum było by mi zbędne. Nie potrafię przełożyć na kod to co znalazłem lub to co wysyłacie. Potrzebuję gotowe rozwiązanie ew przykład. To chyba logiczne?

2

No ale miałeś przykład. W CSS dajesz:

table.tableStripped   tr:nth-child(even) {
    background: #CCC}
table.tableStripped   tr:nth-child(odd) {
    background: #FFF}

P.S.
Forum nie jest od tego żeby ktoś wszystko napisał za Ciebie.

0

Dziękuję udało się. Ale nadaj jest problem, coś jest skopane w kodzie (ponieważ przy innych tabelkach jest kolor naprzemiennie) a przy tej coś takiego wychodzi:
https://naforum.zapodaj.net/8ed52357146e.png.html

Jak widać pierwsze parę linijek idzie w jednym kolorze, później idą poprawnie na przemian, następnie ponownie w jednym kolorze eh.

Wysyłam jeszcze raz kod:

<center><?
print("<table width=850 class=tabletitle border=1 cellspacing=0 cellpadding=5>\n");

	echo "<tr>";
	echo "<td class=\"colhead\">Nazwa</center></td>";
	echo "<td class=\"colhead\"><center>Wstawił</center></td>";
	echo "<td class=\"colhead\"><center>Pobrany</center></td>";
	echo "<td class=\"colhead\"><center>Se.</center></a></td>";
	echo "<td class=\"colhead\"><center>Le.</center></td>";
	echo "<td class=\"colhead\"><center>Reseed</center></td>";
	echo "</tr>\n";

    while ($arr = mysql_fetch_assoc($res)) {
	
$user = mysql_query("SELECT username, anonymous FROM users WHERE id = " . $arr['owner']) or sqlerr(__FILE__, __LINE__);
$arruser = mysql_fetch_assoc($user);
$timesnatch = mysql_query("SELECT COUNT(snatched.userid) FROM snatched WHERE finished = 'yes' AND torrentid = " . $arr['id']) or sqlerr(__FILE__, __LINE__);
$arrtimesnatch = mysql_fetch_array($timesnatch);
$count = $arrtimesnatch[0];

if (get_user_class() >= UC_MODERATOR or $CURUSER['id'] == $arr['owner'] or $arruser['anonymous'] == 'no')
$wstawil = "<a href=\"userdetails.php?id=$arr[owner]\">".htmlspecialchars($arruser[username])."</a>";
else
$wstawil = "<i>Anonimowy</i>";

if ($arr[seeders] == 0) {
if ($arr['reseedtime'] < get_date_time(gmtime())) {
$seed = "Poproś o seeda <a href=takereseed.php?reseedid=".$arr['id']."><b>tutaj</b></a>";
}
else if ($arr['reseedtime'] > get_date_time(gmtime())) {
$reseedtime = $arr['reseedtime'];
$seed = "Prośba została wysłana.<br>Następna za: " . mkprettytime(strtotime($reseedtime) - gmtime()) . ".";
}
}

      $torrname = htmlspecialchars($arr['name']);

      $ttl = (28*24) - floor((gmtime() - sql_timestamp_to_unix_timestamp($arr["added"])) / 3600);

$licz = number_format($arr['leechers']);
$pnsr = mysql_query("SELECT userid, to_go FROM peers WHERE torrent =" . $arr['id'] . " ORDER BY to_go") or sqlerr(__FILE__, __LINE__);

for ($i=0;$i<$licz;$i++) {


$highlight = $CURUSER["id"] == $arr['owner'] ? " bgcolor=#BCCAD6" : "";

echo "<tr$highlight>";
if ($i==0) {
echo "<td rowspan=$licz><b><a href=\"details.php?id=".$arr['id']."&hit=1\" alt=\"".htmlspecialchars($arr['name'])."\" title=\"".htmlspecialchars($arr['name'])."\">".htmlspecialchars(CutName($torrname,80))."<b></td>
<td rowspan=$licz><center><b>$wstawil</b></center></td>
<td rowspan=$licz><center><b><a href=viewsnatches.php?id=".$arr['id'].">$count</a></b> razy</center></td>
<td rowspan=$licz align=center><font color=\"#A52A2A\">".$arr['seeders']."</a></td>
<td rowspan=$licz align=center>".number_format($arr['leechers'])."</td>
<td bgcolor=#cf2f2f rowspan=$licz><font color=white><b><center>$seed</center></b></font></td>";
}
echo "</tr>";
}
}

print("</table>\n");
} else
0

Po co wrzucasz do PHP sam kod HTML?...

<center><?
print("<table width=850 class=tabletitle border=1 cellspacing=0 cellpadding=5>\n");

    echo "<tr>";
    echo "<td class=\"colhead\">Nazwa</center></td>";
    echo "<td class=\"colhead\"><center>Wstawił</center></td>";
    echo "<td class=\"colhead\"><center>Pobrany</center></td>";
    echo "<td class=\"colhead\"><center>Se.</center></a></td>";
    echo "<td class=\"colhead\"><center>Le.</center></td>";
    echo "<td class=\"colhead\"><center>Reseed</center></td>";
    echo "</tr>\n";

I nie używaj shorttagów <?, tylko pełne <?php.

I nigdzie nie widzę tego cssa, a nadal używasz jakiegoś $highlight w tr.

0

To co przedstawiasz to wycinek tabeli. Efekt jednak powoduje raczej CSS, chociaż ktoś wcześniej dopatrzył się nie domkniętych znaczników.
Może przestań używać takich znaczników jak <center>.
Może w ogóle poczytaj o bootstrap https://getbootstrap.com/ może w ten sposób będzie Ci łatwiej to ostylować.
Najlepiej poświęć tydzień lub dwa. Zrób sobie jakiś prosty kurs z CSS i HTML w miarę aktualny i zobaczysz, że będzie Ci łatwiej.

0

Jeśli chcesz sobie utrudniać życie, to twoja sprawa.
Mi się osobiście niespecjalnie chce udzielać w wątkach typu: jak wykopać studnię łyżeczką od herbaty.

0

Panowie a jak przerobić ten kod:

table.tableStripped   tr:nth-child(even) {
    background: #CCC}
table.tableStripped   tr:nth-child(odd) {
    background: #FFF}

Żeby co trzy kolumny zmieniał się kolor na przemian a nie co jedną?

0

Cytat ze strony, którą Ci wysłałem:

Tak naprawdę CSS pozwala kolorować nie tylko parzyste i nieparzyste elementy - okres może być dowolny. Słowa kluczowe even (parzyste) i odd (nieparzyste) są tylko >wygodnym skrótem. Dla długiej listy możesz na przykład zastosować coś takiego:

li:nth-child(5n+3) {font-weight: bold}
Powyższa reguła mówi o tym, że co 5. element, zaczynając od trzeciego, jest pogrubiony. Inaczej mówiąc, pogrubione będą numery 3, 8, 13, 18, 23, itd.

PARZYSTE I NIEPARZYSTE KOLUMNY

Czyli jeśli nie kolorujesz wiersza parzystego i nieparzystego na przemiennie, zostawiasz sobie jeden wpis kolorujący wiersze i zamiast podania odd lub even podajesz odpowiednie wyrażenie matematyczne.

P.S.
Na forum są również Panie, więc nie generalizuj. Jedna nawet udziela się w tym wątku.

0

Nie do końca o to mi chodziło albo ja nie ogarniam tego:

table.tabletitles tr:nth-child(3n+4) {
    background: #BCCDE0}
table.tabletitles tr:nth-child {
    background: #9FB6CD
}
}

Chciałbym by 3 wiersze leciały na kolor BCCDE0 następne trzy na kolor 9FB6CD i tam na zmianę.

1
table.tableStripped  tr {
  background: #eeeeee
}
table.tableStripped tr:nth-child(6n+4),
table.tableStripped tr:nth-child(6n+5),
table.tableStripped tr:nth-child(6n+6) {
  background: #9FB6CD
}

Zmieniłam jeden kolor, na bardziej kontrastowy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1