Hallo,
Also hier nochmal die news.php
<?php
// Voreinstellungen
$artikel_anz_start=0;
$artikel_anz_end=10;
$num=10;
$y=$_GET['a'];
$z=$_GET['num'];
if($y=='last'&&isset($z)){
$artikel_anz_start=$z;
$artikel_anz_end=$z+10;
$num=$artikel_anz_start;
}
$part='content';
unset($forumarray); // Variablen korrekt (de)initialisieren
unset($kindarray);
// Daten aus der Datenbank holen
$result=mysql_query("SELECT ID, PID, TID,
DATE_FORMAT(Zeitpunkt,'%T') AS Uhrzeit,
DATE_FORMAT(Zeitpunkt,'%W %d.%M %Y') AS Datum,
AutorName, Betreff, Text, num
FROM artikel
ORDER BY Zeitpunkt DESC LIMIT ".$artikel_anz_start.", $artikel_anz_end");
while($tmp = mysql_fetch_array($result)) { // Ergebnis holen
$forumarray[ $tmp["ID"] ] = $tmp; // Ergebnis im Array ablegen
$kindarray[ $tmp["PID"] ][] = $tmp["ID"]; // Vorwärtsbezüge konstruieren
}
mysql_free_result($result);
if(is_array($kindarray)) {
foreach($kindarray[0] as $thread) { // Für jedes Posting der obersten Ebene...
zeichneBaum($thread, $part, $num);
}
}
// Fußleiste der Beiträge(ganz unten / insgesamt)
$enda=$artikel_anz_end+10;
echo"<a href='index.php?p=news&a=last&num=".$num."' class='under2'>Letzten 10 News ( ".$artikel_anz_end." - ".$enda." )</a>";
?>
Hier die Funktion "zeichneBaum()" und Funktion "changeDate()":
// Namen der Tage und Monate von Englisch in Deutsch ersetzen (erwartet String)
function change_date($dates){
$array_1=array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
$array_2=array('Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag');
$array_3=array('January','February','March','April','May','June','July','August','September','October','November','December');
$array_4=array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
for($i=0;$i<=6;++$i){
if(strchr($dates,$array_1[$i])){
$dates=str_replace($array_1[$i],$array_2[$i],$dates);
}
if(strchr($dates,$array_3[$i])){
$datum=str_replace($array_3[$i],$array_4[$i],$dates);
}
}
return $datum;
}
// Berichte auslesen und ausgeben (schon formatiert) mit Anzahl der Kommentare
function zeichneBaum($eintrag, $part, $id){
global $forumarray, $kindarray, $num_CM;
$datum=change_date($forumarray[$eintrag]['Datum']); // Datum übersetzen
// Anzahl der Kommentrare auslesen
$qu=mysql_query("SELECT COUNT(*) AS anz
FROM artikel
WHERE num='".$forumarray[$eintrag]['ID']."'");
$num_CM=mysql_fetch_assoc($qu);
if($part=='comment'){// Wenn Comment Bereich
echo "
<div class='beitrag'>
<span class='date'>".$datum."
<span class='time'>".htmlentities($forumarray[$eintrag]['Uhrzeit'])."</span></span><br/>
<h2 class='title'>".htmlentities($forumarray[$eintrag]['Betreff'])."</h2>
<div class='artikel'><br/>".htmlentities($forumarray[$eintrag]['Text'])."<p></p></div>
<div class='under'><br/>Author: <a href='#'>".htmlentities($forumarray[$eintrag]['AutorName'])."</a>
| <span class='red'> Kommentare(".$num_CM['anz'].")</span>
| <a href='index.php?p=trackbacks&id=".$resultset['num']."'>Trackbacks(".$num_TB['anz'].")</a>
| <a href='#writeComment'>Kommentar schreiben</a><p></p></div>
<p></p></div>
";
}elseif($part=='content'){// Wenn Content Bereich
echo "
<div class='beitrag'>
<span class='date'>".$datum."
<span class='time'>".htmlentities($forumarray[$eintrag]['Uhrzeit'])."</span></span>
<h2 class='title'>".htmlentities($forumarray[$eintrag]['Betreff'])."</h2>
<div class='artikel'><br/>".htmlentities($forumarray[$eintrag]['Text'])."<p></p></div>
<div class='under'><br/>Author: <a href='#'>".htmlentities($forumarray[$eintrag]['AutorName'])."</a>
| <a href='index.php?p=comments&id=".$forumarray[$eintrag]['ID']."'> Kommentare(".$num_CM['anz'].")</a>
| <a href='index.php?p=trackbacks&id=".$resultset['num']."'>Trackbacks(".$num_TB['anz'].")</a>
| <a href='index.php?p=comments&id=".$forumarray[$eintrag]['ID']."#writeComment'>Kommentar schreiben</a>
<p></p></div>
";
}
}
Wenn ich
echo '<pre>';
print_r($kindarray[ $tmp["PID"] ]);
echo '</pre>';
mache dann kommt folgendes:
Array
(
[0] => 5
)
Array
(
[0] => 4
)
Array
(
[0] => 5
[1] => 3
)
Array
(
[0] => 1
)
Array
(
[0] => 1
[1] => 2
)
Wenn ich das hier ausgebe:
echo '<pre>';
print_r($forumarray[ $tmp["ID"] ]);
echo '</pre>';
kommt:
Array
(
[0] => 5
[ID] => 5
[1] => 1
[PID] => 1
[2] => 1
[TID] => 1
[3] => 23:40:21
[Uhrzeit] => 23:40:21
[4] => Wednesday 28.March 2007
[Datum] => Wednesday 28.March 2007
[5] => Max Mustermann
[AutorName] => Max Mustermann
[6] => Test
[Betreff] => Test
[7] => Na das wollen wir doch gleich mal testen.
[Text] => Na das wollen wir doch gleich mal testen.
[8] => 2
[num] => 2
)
Array
(
[0] => 4
[ID] => 4
[1] => 3
[PID] => 3
[2] => 1
[TID] => 1
[3] => 23:40:11
[Uhrzeit] => 23:40:11
[4] => Wednesday 28.March 2007
[Datum] => Wednesday 28.March 2007
[5] => Henryk Pl�tz
[AutorName] => Henryk Pl�tz
[6] => Eine noch kleinere Antwort
[Betreff] => Eine noch kleinere Antwort
[7] => Na klar
[Text] => Na klar
[8] => 1
[num] => 1
)
Array
(
[0] => 3
[ID] => 3
[1] => 1
[PID] => 1
[2] => 1
[TID] => 1
[3] => 23:39:59
[Uhrzeit] => 23:39:59
[4] => Wednesday 28.March 2007
[Datum] => Wednesday 28.March 2007
[5] => Max Mustermann
[AutorName] => Max Mustermann
[6] => Eine kleine Frage
[Betreff] => Eine kleine Frage
[7] => Kann das Forum auch Threads darstellen?
[Text] => Kann das Forum auch Threads darstellen?
[8] => 1
[num] => 1
)
Array
(
[0] => 1
[ID] => 1
[1] => 0
[PID] => 0
[2] => 1
[TID] => 1
[3] => 19:14:03
[Uhrzeit] => 19:14:03
[4] => Wednesday 28.March 2007
[Datum] => Wednesday 28.March 2007
[5] => Henryk Pl�tz
[AutorName] => Henryk Pl�tz
[6] => Test 1
[Betreff] => Test 1
[7] => Funktioniert das?
[Text] => Funktioniert das?
[8] => 0
[num] => 0
)
Array
(
[0] => 2
[ID] => 2
[1] => 0
[PID] => 0
[2] => 2
[TID] => 2
[3] => 19:14:03
[Uhrzeit] => 19:14:03
[4] => Wednesday 28.March 2007
[Datum] => Wednesday 28.March 2007
[5] => Hans Dampf
[AutorName] => Hans Dampf
[6] => Die Antwort auf die Frage nach Gott, dem Universum und dem ganzen Rest
[Betreff] => Die Antwort auf die Frage nach Gott, dem Universum und dem ganzen Rest
[7] => 42
[Text] => 42
[8] => 0
[num] => 0
)
Hier kommt ein Screen aus der Datenbank-Tabelle:
Screen
Hier kommt die Seite so wie sie ist, den Bug könnt ihr direkt auf der Startseite betrachten, wenn wir wissen wollt wie es aussehen soll, dann klickt einfach bei einem der Beiträge auf "Kommentare()".
Klick
Wenn ich inder news.php
------
while($tmp = mysql_fetch_array($result)) { // Ergebnis holen
$forumarray[ $tmp["ID"] ] = $tmp; // Ergebnis im Array ablegen
$kindarray[ $tmp["PID"] ][] = $tmp["ID"]; // Vorwärtsbezüge konstruieren
}
------
weglasse, oder
------
foreach($kindarray[0] as $thread) { // Für jedes Posting der obersten Ebene...
zeichneBaum($thread, $part, $num);
}
------
weglasse, dann wird alles richtig angezeigt.
Es kommt keine Fehlermeldung.
Hoffe jetzt kann mir geholfen werden.
mfg
Phil Z.