Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   Foren einer Kategorie zuweisen (https://boardunity.de/foren-kategorie-zuweisen-t726.html)

Daniel Richter 05.09.2003 21:03

Foren einer Kategorie zuweisen
 
Ich hab mir mit frederic jetzt schon die ganze Zeit die Zähne ausgebissen und wir sind zu keinem ergebnis gekommen.

Folgender Code
Code:

// 
// Hol die Kategorie Daten aus der Datenbank 
// 
$result = $db->query("SELECT * FROM " . DB_PREFIX . "categories"); 
 
while($row = mysql_fetch_array($result)) { 
 
 $cat_id = $row['cat_id']; 
 $cat_title = $row['cat_title']; 
 
eval ("\$templatename = \"".addslashes(template("index_cat"))."\";"); 
 $index_cat = $templatename; 
 
// 
// Hol die Forums Daten aus der Datenbank 
// 
$result2 = $db->query("SELECT * FROM " . DB_PREFIX . "forums WHERE cat_id=\"$cat_id\""); 
 
while($row2 = mysql_fetch_array($result2)) { 
 
 $forum_id = $row2['forum_id']; 
 $forum_title = $row2['forum_title']; 
 $forum_des = $row2['forum_des']; 
 $forum_cat_id = $row2['cat_id']; 
 $forum_posts = $row2['forum_posts']; 
 $forum_topics = $row2['forum_topics']; 
 
 
eval ("\$templatename = \"".addslashes(template("index_forums"))."\";"); 
 $index_forums = $templatename; 
 
}
eval ("\$templatename = \"".addslashes(template("index"))."\";"); 
echo $templatename; 
}

Soll die Foren den Kategorien zu weisen.
Nun ist das Problem, dass jeder Kategorie nur maximal ein Forum zugewiesen wird. Wenn also eine Kategorie mehrere Foren zugewiesen bekommen hat, wird nur das erste ausgegeben.
Ich hoffe ihr versteht was ich meine.

Kann mir hier einer helfen?

Frederic Schneider 05.09.2003 21:06

jo isch hab jetzt auch kein plaaan was es sein kann, codus affus kommt damit auch immer erst so spät abends :(... naja die zweite while schleife scheint nur einmal durchzulaufen... naja.. cu =)

exe 05.09.2003 21:10

Der Fehler liegt im Detail:

Code:

eval ("\$templatename2 = \"".addslashes(template("index_forums"))."\";"); 
 $index_forums = $templatename2;

Da $index_forums bei jedem Schleifendurchlauf neu gesetzt wird bleibt logischerweise nur das letzte Forum einer Kategorie in der Variable belassen.
So müsste es richtig lauten, damit neue Foren den vorhandenen hinzugefügt werden:

Code:

// 
// Hol die Kategorie Daten aus der Datenbank 
// 
$result = $db->query("SELECT * FROM " . DB_PREFIX . "categories"); 
 
while($row = mysql_fetch_array($result)) { 
 
 $cat_id = $row['cat_id']; 
 $cat_title = $row['cat_title']; 
eval ("\$templatename = \"".addslashes(template("index_cat"))."\";"); 
 $index_cat = $templatename; 
 
// 
// Hol die Forums Daten aus der Datenbank 
// 
$result2 = $db->query("SELECT * FROM " . DB_PREFIX . "forums WHERE cat_id=\"$cat_id\""); 
$index_forums = ""; // Variable für jede Kategorie initialisieren
 
while($row2 = mysql_fetch_array($result2)) { 
 
 $forum_id = $row2['forum_id']; 
 $forum_title = $row2['forum_title']; 
 $forum_des = $row2['forum_des']; 
 $forum_cat_id = $row2['cat_id']; 
 $forum_posts = $row2['forum_posts']; 
 $forum_topics = $row2['forum_topics']; 
 
 
eval ("\$templatename2 = \"".addslashes(template("index_forums"))."\";"); 
 $index_forums .= $templatename2;  // Forum zur Kategorie _hinzufügen_
 
}
eval ("\$templatename3 = \"".addslashes(template("index"))."\";"); 
echo $templatename3; 
}

Nebenbei ist es nicht gerade die performanteste Möglichkeit jedes Forum einzeln aus der Datenbank zu holen.
Wenn jemand 30 Foren eingerichtet hat müssen da schlappe 30 Abfragen ausgeführt werden .. Bei einem nicht so fixen MySQL Server schlägt das ganz gut auf die Ausführungszeit des Scripts.

Frederic Schneider 05.09.2003 21:11

daaaaaaanke exe jo stimmt... hätte selber drauf kommen SOLLEN, naja wofür ham ma dich :D!

edit:
wegen der performance... jo is halt einfach gemacht... :rolleyes: :rolleyes:

exe 05.09.2003 21:21

Wie im IRC besprochen hier die zweite Version deines Codes:
Natürlich nicht getestet aber probiers mal aus.

Code:

// 
// Hol die Kategorie Daten aus der Datenbank 
// 
$result = $db->query("SELECT * FROM " . DB_PREFIX . "categories"); 

// Kategorievariable initialisieren
$index_cat = "";
 
while($row = mysql_fetch_array($result)) { 
 
 $cat_id = $row['cat_id']; 
 $cat_title = $row['cat_title']; 
 
// 
// Hol die Forums Daten aus der Datenbank 
// 
$result2 = $db->query("SELECT * FROM " . DB_PREFIX . "forums WHERE cat_id=\"$cat_id\""); 
$index_forums = ""; // Variable für jede Kategorie initialisieren
 
while($row2 = mysql_fetch_array($result2)) { 
 
 $forum_id = $row2['forum_id']; 
 $forum_title = $row2['forum_title']; 
 $forum_des = $row2['forum_des']; 
 $forum_cat_id = $row2['cat_id']; 
 $forum_posts = $row2['forum_posts']; 
 $forum_topics = $row2['forum_topics']; 
 
 
eval ("\$templatename2 = \"".addslashes(template("index_forums"))."\";"); 
 $index_forums .= $templatename2;  // Forum zur Kategorie _hinzufügen_ 
}
eval ("\$templatename = \"".addslashes(template("index_cat"))."\";"); 
 $index_cat .= $templatename; 
}
eval ("\$templatename3 = \"".addslashes(template("index"))."\";"); 
echo $templatename3;


Daniel Richter 05.09.2003 21:24

Leider stimmt auch das noch nicht so ganz.
Nun werden die Foren nur der Kategorie 2 zugeteilt.

exe 05.09.2003 21:43

Ich habs mir jetzt bei mir angeschaut. War nur ein Problem in den Templates, der Code stimmt soweit.

index:
Code:

<html>
<body>
<table width="100%" cellpadding="2" cellspacing="1" border="1" class="forumline">
  <tr>
        <th colspan="2" class="thCornerL" height="25" nowrap="nowrap">Forum</th>
        <th width="50" class="thTop" nowrap="nowrap">Themen</th>
        <th width="50" class="thTop" nowrap="nowrap">Posts</th>
  </tr>
$index_cat
</table>
</body>
</html>

index_cat:
Code:

  <tr>
        <td class="catLeft" colspan="2" height="28"><span class="cattitle"><a href="{catrow.U_VIEWCAT}" class="cattitle">$cat_title</a></span></td>
        <td class="rowpic" colspan="3" align="right">&nbsp;</td>
  </tr>
 $index_forums

So hats bei mir ganz richtig funktioniert.

Daniel Richter 06.09.2003 09:47

Ja so hat es geklappt. Vielen Dank exe, dass du dir noch die Arbeit gemacht hast! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25