webForumDet fria alternativet

Byta färg på varannan rad!

PHP

17 svar · 910 visningar · startad av harry_boy

Medlem sedan feb. 2003193 inlägg
Frågan#1

Jag vill byta färg på varannan rad samt att det skiftar färg när jag för musen över raden också!

Men jag vet inte hur jag skall implementera det

Här är delar ur koden:

$sql = 'SELECT id, ordernr, tempo, kund, benamning, ritningsnr, antal, levtid, maskin, tim, starttid, maskinspec, anteckningar FROM strom_jobb ORDER BY starttid  ASC  LIMIT 0 , 30 ';
if ( !($result = mysql_query($sql)) ) {
die('Kan inte lista arbete i databasen! ' . mysql_error() . ' : ' . mysql_errno());

}

// Visa länk för att lägga till ett nytt arbete
// echo '<a href="'.$PHP_SELF.'?add=1">Nytt arbete</a><br>';

// Kontrollera antalet rader 
if ( mysql_num_rows($result) < 1) {
die('Kan inte hitta några arbete i databasen!');
}
?>

<!-- Visning av alla jobben på publika sidan -->
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="9"><img src="pics/top_left.gif" width="9" height="30" alt="" border="0"></td>
<td background="pics/top_bg.gif" width="100%"><img src="pics/rubrik_maskinplanering.gif" width="80" height="30" alt="" border="0"></td>
<td background="pics/top_bg.gif" align="right"><a href="#" onClick=javascript:window.print()><img src="pics/button_skrivut.gif" width="70" height="11" alt="" border="0"></a>&nbsp;<a href="planering.php"><img src="pics/button_listaalla.gif" width="70" height="11" alt="" border="0"></a></td>
<td width="9" align="right"><img src="pics/top_right.gif" width="9" height="30" alt="" border="0"></td>
</tr>
</table>
<table width="100%" cellspacing="0" cellpadding="3" style=" border: 1px solid #C2C5CA;">
  <tr bgcolor="#364B60" class="bold"> 
    <td align="right"> Ordernr&nbsp;</td>
    <td> Kund </td>
    <td> Benämning </td>
    <td align="right"> Ritningsnr </td>
    <td align="right"> Antal </td>
    <td align="center"> Lev.tid </td>
    <td> Maskin </td>
    <td align="right"> Tim </td>
    <td align="center"> Starttid </td>
    <td> Maskinspec </td>
    <td> Anteckning </td>
	<td></td>
  </tr>

<?php
// Hämta en rad i taget från databasen, fortsätt tills inga fler rader finns att hämta
while ( $row = mysql_fetch_array($result) ) {
$view_url = $PHP_SELF . '?view=' . $row['id']; // URL för att titta på ett visst arbete
$edit_url = $PHP_SELF . '?edit=' . $row['id']; // URL för att redigera ett visst arbete
$delete_url = $PHP_SELF . '?delete=' . $row['id']; // URL för att ta bort ett visst arbete
?>

<tr>
<td align=right><?php echo $row['ordernr'] ?>-0<?php echo $row['tempo'] ?></td>
<td><?php echo $row['kund'] ?></td>
<td><?php echo $row['benamning'] ?></td>
<td align="right"><?php echo $row['ritningsnr'] ?></td>
<td align="right"><?php echo $row['antal'] ?></td>
<td align="center"><?php echo $row['levtid'] ?></td>
<td><?php echo $row['maskin'] ?></td>
<td align="right"><?php echo $row['tim'] ?></td>
<td align="center"><?php echo $row['starttid'] ?></td>
<td align="center"><?php if ($row['maskinspec'] == "1") { echo "Ja"; } else { echo "Nej"; }  ?></td>
<td><?php echo $row['anteckningar'] ?></td>
<td align="right"><a href="<?php echo $view_url ?>"><img src="pics/k_s_k.gif" border="0"></a><a href="<?php echo $edit_url ?>"><img src="pics/k_s_r.gif" border="0"></a><a href="<?php echo $delete_url ?>"><img src="pics/k_s_x.gif" border="0"></a></td>
</tr>
<?php
}
echo "</table>";
}

Är det någon vänlig själv som vet hur man gör?

Medlem sedan dec. 200012 464 inlägg
#2

Flyttas från Mysql

Medlem sedan maj 20002 993 inlägg
#3

print "<table>";

for($n=0;$n<15;$n++)
{
    $color = $n%2 ? "#FF0000" : "#00FF00";

    print "<tr bgcolor=\"$color\"><td>&nbsp;</td></tr>\n";
}

print "</table>";
Medlem sedan feb. 2003193 inlägg
#4

Jag får alternativ färgen på alla rader!

Medlem sedan maj 2001211 inlägg
#5

En liten moduluspryl löser problemet snyggt.....

for ($i=0; $i < mysql_num_rows($foo); $i++){
		
   ...
   ...

   if (($i%2)==0)
      print("<TR bgcolor=#FFFFFF>");
   else
      print("<TR bgcolor=#CCCCCC>");

   ...
   ...
}
Medlem sedan juli 20033 147 inlägg
#6
<?php
$bg = 1;

while ( $row = mysql_fetch_array($result) ) {
$view_url = $PHP_SELF . '?view=' . $row['id']; // URL för att titta på ett visst arbete
$edit_url = $PHP_SELF . '?edit=' . $row['id']; // URL för att redigera ett visst arbete
$delete_url = $PHP_SELF . '?delete=' . $row['id']; // URL för att ta bort ett visst arbete
?>

<tr bgcolor="<?php echo ($bg++%2) ? '#EFEFEF' : '#F7F7F7' ?>">
<td align=right><?php echo $row['ordernr'] ?>-0<?php echo $row['tempo'] ?></td>
<td><?php echo $row['kund'] ?></td>
<td><?php echo $row['benamning'] ?></td>
<td align="right"><?php echo $row['ritningsnr'] ?></td>
<td align="right"><?php echo $row['antal'] ?></td>
<td align="center"><?php echo $row['levtid'] ?></td>
<td><?php echo $row['maskin'] ?></td>
<td align="right"><?php echo $row['tim'] ?></td>
<td align="center"><?php echo $row['starttid'] ?></td>
<td align="center"><?php if ($row['maskinspec'] == "1") { echo "Ja"; } else { echo "Nej"; }  ?></td>
<td><?php echo $row['anteckningar'] ?></td>
<td align="right"><a href="<?php echo $view_url ?>"><img src="pics/k_s_k.gif" border="0"></a><a href="<?php echo $edit_url ?>"><img src="pics/k_s_r.gif" border="0"></a><a href="<?php echo $delete_url ?>"><img src="pics/k_s_x.gif" border="0"></a></td>
</tr>
<?php
}
?>
Medlem sedan juli 20041 271 inlägg
#7

Jag har en liknande fråga. Hur gör jag så att varannan rad blir i en annan färg?

<?php
 
// Plocka ut 10 senaste SMS
$res = mysql_query('SELECT *,unix_timestamp(tstamp) as utstamp FROM sms
	ORDER BY tstamp DESC LIMIT 10');
 
// Eka ut en tabell
echo '<table width="70%" cellspacing="0" cellpadding="5" border="1">';
echo '<tr><th>Datum</th><th>Meddelande</th></tr>';
 
// Gå igenom varje SMS - skriv ut tabellrader
while ($row = mysql_fetch_assoc($res)) {
 
	// Plocka bort första ordet (prefix) ur meddelandet
	$row['message'] = substr($row['message'],strpos($row['message'],' '));
 
	// Plocka ev bort andra ordet ur meddelandet, på samma sätt
	// $row['message'] = substr($row['message'],strpos($row['message'],' '));
	
	echo '<tr>';
	echo '<td>' . date('ymd h:i',$row['utstamp']) . '</td>';
	echo '<td>' . $row['message'] . '</td>';
	echo '</tr>';
}
 
echo '</table>';
 
?>
Medlem sedan juni 20031 837 inlägg
#8
<?php

// Plocka ut 10 senaste SMS
$res = mysql_query('SELECT *,unix_timestamp(tstamp) as utstamp FROM sms
    ORDER BY tstamp DESC LIMIT 10');

// Eka ut en tabell
echo '<table width="70%" cellspacing="0" cellpadding="5" border="1">';
echo '<tr><th>Datum</th><th>Meddelande</th></tr>';
$n=0; // startvärde
// Gå igenom varje SMS - skriv ut tabellrader
while ($row = mysql_fetch_assoc($res)) {

    // Plocka bort första ordet (prefix) ur meddelandet
    $row['message'] = substr($row['message'],strpos($row['message'],' '));

    // Plocka ev bort andra ordet ur meddelandet, på samma sätt
    // $row['message'] = substr($row['message'],strpos($row['message'],' '));
    
    echo '<tr style="background-color: ' . ($n++%2==0?"#ff0000":"#00ff00") . ';">'; // denna raden är ändrad
    echo '<td>' . date('ymd h:i',$row['utstamp']) . '</td>';
    echo '<td>' . $row['message'] . '</td>';
    echo '</tr>';
}

echo '</table>';

?>

/red ändrade från + (plus) till . (punkt) på raden echo '<tr style="background-color: ' + ($n++%2==0?"#ff0000":"#00ff00") + ';">'; // denna raden är ändrad

Medlem sedan juli 20041 271 inlägg
#9

Tack för ett snabbt svar, men det verkar inte fungera. :(
Som det ser ut nu, så får jag bara en massa nollor "0" över själva tabellen och ingen rad byter färg.

Medlem sedan juli 20041 271 inlägg
#10

Guldstrand skrev:

Tack för ett snabbt svar, men det verkar inte fungera. :(
Som det ser ut nu, så får jag bara en massa nollor "0" över själva tabellen och ingen rad byter färg.

Någon som kan hjälpa mig med detta, please!? :r

Medlem sedan maj 2005562 inlägg
#11

Det görs med fördel i CSS/DOM/Javascript och inte med php.

http://alistapart.com/articles/zebratables

Medlem sedan juli 20041 271 inlägg
#12

sl0k skrev:

Det görs med fördel i CSS/DOM/Javascript och inte med php.

http://alistapart.com/articles/zebratables

Hmm, ok...
Men detta fungerar väl inte när jag hämtar och visar infon från en mysql databas?

Medlem sedan maj 2005562 inlägg
#13

Jo, det görs i webbläsaren.. efter all serverside-output. Läs artikeln så ser du.

Medlem sedan apr. 2006244 inlägg
#14

borde väll vara enkelt löst...?

for ($i=0; $i < $antal_rader; $i++)
{
  
  $d = $i * $i;
  $nu = $d / 2;

if ($nu == $i) 
 {echo '<TR bgcolor="#FFFFFF">';} 

else 
 {echo '<TR bgcolor="#000000">';} 

}

eller har jag missupfattat det hela?

Medlem sedan juni 20031 837 inlägg
#15

Guldstrand skrev:

Tack för ett snabbt svar, men det verkar inte fungera. :(
Som det ser ut nu, så får jag bara en massa nollor "0" över själva tabellen och ingen rad byter färg.

kan du visa hur den genererade HTML-koden ser ut?

Medlem sedan juni 20031 837 inlägg
#16

vic skrev:

borde väll vara enkelt löst...?

for ($i=0; $i < $antal_rader; $i++)
{
  
  $d = $i * $i;
  $nu = $d / 2;

if ($nu == $i) 
 {echo '<TR bgcolor="#FFFFFF">';} 

else 
 {echo '<TR bgcolor="#000000">';} 

}

eller har jag missupfattat det hela?

Njae, det blir inte rätt. om du visar rad 4 så ska den bli en annan färg men det blir den inte i ditt exempel.
$i = 4;
$d = 4 * 4 = 16;
$nu = 16 / 2 = 8;
if(8 == 4)

för rad 2 blir det rätt men inte längre.
$i = 2;
$d = 2 * 2 = 4;
$nu = 4 / 2 = 2;
if (2 == 2)

Medlem sedan juni 20031 837 inlägg
#17

ajdå, var jag som precis kommit från asp och råkade använda + istället för . (punk) för att sammanfoga strängarna. nu fungerar det.

<?php

// Plocka ut 10 senaste SMS
$res = mysql_query('SELECT *,unix_timestamp(tstamp) as utstamp FROM sms
    ORDER BY tstamp DESC LIMIT 10');

// Eka ut en tabell
echo '<table width="70%" cellspacing="0" cellpadding="5" border="1">';
echo '<tr><th>Datum</th><th>Meddelande</th></tr>';
$n=0; // startvärde
// Gå igenom varje SMS - skriv ut tabellrader
while ($row = mysql_fetch_assoc($res)) {

    // Plocka bort första ordet (prefix) ur meddelandet
    $row['message'] = substr($row['message'],strpos($row['message'],' '));

    // Plocka ev bort andra ordet ur meddelandet, på samma sätt
    // $row['message'] = substr($row['message'],strpos($row['message'],' '));
    
    echo '<tr style="background-color: ' . ($n++%2==0?"#ff0000":"#00ff00") . ';">'; // denna raden är ändrad
    echo '<td>' . date('ymd h:i',$row['utstamp']) . '</td>';
    echo '<td>' . $row['message'] . '</td>';
    echo '</tr>';
}

echo '</table>';
?>
Medlem sedan apr. 2006244 inlägg
#18

ahh, självklart.... de var lite sent på kvälla. Men här har jag ett som funkar och är baserat på väldigt banal matematik.

<?php

for($i = 0; $i <40; $i++)
{
if($i < 3)
{
$c = 3;
}

if($c - 1 == $i || $i == 0)
{
echo "<div style=\"height:30px; background:#CCC\"></div>\n";
$c = $i + 3;
}
else
{
echo "<div style=\"height:30px; background:#333\"></div>\n";
}

}

?>

I det här fallet vore dock Hulkens kod självfallet vara bättre lämpad.

tjohej :e

265 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)