Kleur veranderen in tabel...

Pagina: 1
Acties:

  • JoostBaksteen
  • Registratie: December 2000
  • Laatst online: 30-10-2025
Hallo mensen,

Ik ben bezig met een forum te maken, het voorbeeldje heb ik van www.phpfreakz.com afgehaald de code is het volgende:

<?php
/* Maak connectie */
$db = mysql_connect(localhost);
mysql_select_db("geesteren");

/* Maakt van de code een string met plaatjes */
function TranslateCode($code) {
/* Definieer de images */
$IMGS[1] = "[img]\"../../img/forum.rootline.gif\"[/img]";
$IMGS[2] = "[img]\"../../img/forum.rootspace.gif\"[/img]";
$IMGS[3] = "[img]\"../../img/forum.rootsplit.gif\"[/img]";
$IMGS[4] = "[img]\"../../img/forum.rootend.gif\"[/img]";

/* Reken code om */
$code = round($code); // haal een evt. "0" aan het begin weg
$string = ereg_replace("([1-4]{1})", "\$IMGS[\\1]", $code);
eval("\$code = \"$string\";");
return $code;
}

/* Deze functie doet het eigenlijke werk! */
function PrintChildren($parent, $imgs_code = 0) {
global $db;
$CODE_LINE = 1;
$CODE_EMPTY = 2;
$CODE_ROOT_SPLIT = 3;
$CODE_ROOT_END = 4;

/* Maak SQL statement */
$sql = "SELECT id, naam, titel FROM forum WHERE replyto='$parent' ORDER BY id ASC";
$result = mysql_query($sql) or die(mysql_error());

$childcount = mysql_num_rows($result); // childcount = het aantal kinderen
if ($childcount) {
$count = 1;
$imgs_code_kopie = $imgs_code; // bewaar het origineel
while ($row = mysql_fetch_object($result)) {
Hier is dus de eerste While statement, en hier print hij alle kinderen.
/* Schrijf de kindjes */
$imgs_code = $imgs_code_kopie;
if ($childcount == $count) // dit is het laatste item, dus rootend
$imgs_code .= $CODE_ROOT_END;
else // anders een rootsplit
$imgs_code .= $CODE_ROOT_SPLIT;
$plaatjes = TranslateCode($imgs_code);
echo "<tr>\n";
echo "\t<td>$plaatjes <a href=\"lees.php3?id=$row->id\">$row->titel</a></td>\n";
echo "\t<td>$row->naam</td>\n";
echo "</tr>\n";

/* Roep deze functie nogmaals aan */
$imgs_code = $imgs_code_kopie;
if ($childcount == $count) // dit is het laatste item, dus een leeg plaatje
$imgs_code .= $CODE_EMPTY;
else // anders een lijntje
$imgs_code .= $CODE_LINE;
PrintChildren($row->id, $imgs_code);
$count++;
}
}
}

?>

<?php
/* Maak connectie */
$db = mysql_connect(localhost);
mysql_select_db("geesteren");

/* Lees alle berichten waarvan replyto = 0 */
$sql = "SELECT id, naam, titel FROM forum WHERE replyto=0 ORDER BY id DESC";
$result = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result) == 0) {
echo "Nog geen berichten gevonden.";
}
else { // Schrijf alle berichten
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"1\" width=\"600\">\n";
echo "<tr style=\"background-color:00cc99; color: White; font-weight: Bold;\">\n<td>Bericht</td>\n<td>Naam</td>\n</tr>\n";

while ($row = mysql_fetch_object($result)) {
Hier heb je dus de 2e keer while en ook hier gaat hij tabellen maken. Je hebt dus 2 verschillende tabellen die hij door elkaar laat zien
echo "<tr>\n";
echo "<td><a href=\"lees.php3?id=$row->id\">$row->titel</a></td>\n";
echo "<td>$row->naam</td>\n";
echo "</tr>\n";
PrintChildren($row->id); // Teken nu ook alle sub-items er direct onder
}
echo "</table><p>\n";
}

?>

Nu wil ik dat steeds de kleur veranderd. Dat wilt alleen niet lukken |:( omdat ik 2 aparte <tr>-etjes heb.... Ik kan bij allebei wel zeggen bgcolor=$kleur en dan die code mety %2 dan gaat hij 2 keer apart tellen. Maar dat moet niet want hoe moet het doorelkaar zetten en als hij dan 2 aparte tellingen heeft werkt het natuurlijk niet.

Het werkt wel maar dan apart.... maar dan krijg je nog steeds 2 velden of 3 achter elkaar die dezelfe kleur hebben en dat wil ik niet.

Alvast hartelijk bedankt.
Marijn

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 21-01 17:50
Ik weet niet of jij er veel aan hebt, maar in het forum dat ik aan het maken ben heb ik de volgende contructie bedacht:

voor het mysql_query_fetch.... { heb ik een variabele aangemaakt
PHP:
1
2
3
<?
kleur="1"
?>

.

in het stukje heb ik het volgende gedaan:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
//laat de regel in kleur 1 zien
showtopic($ID, kleur);

if (kleur == "1") {
    kleur = "2";
} else {
    kleur = "1";
}
?>

Dus gewoon een soort teller bijhouden die aangeeft of je een even of oneven bericht hebt.

Verwijderd

Wat een mooie kleuren gebruik jij zeg :P