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
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
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