Problem mit Kategorien zuordnung

EuroCent

Klappstuhl 2.0
Folgendes Problem:

Ich versuche schon vergebens eine Lösung um bestimmte Themen unter der Überschrift der Kategorien zu setzen:

Bei mir sieht es immer wie folgt aus:

*siehe Bild*

Normal sollte es eigentlich so aussehen:

*siehe Bild2*

Hier der PHP-Code

PHP:
<?php
//error_reporting(E_ALL);
require("./lib/config.php");

$f = $_REQUEST['f'];
$t = $_REQUEST['t'];
$p = $_REQUEST['p'];

if($f == '') {

$forum = $db->query_first("SELECT COUNT(*) AS forenid FROM foren ORDER by forenid ASC");
$foren = $forum['forenid'];
$thema = $db->query_first("SELECT COUNT(*) AS themenid FROM themen ORDER by themenid ASC");
$themen = $thema['themenid'];

for($i = 1; $i <= $foren; $i++) {
	$sql = $db->query("SELECT * FROM foren WHERE forenid='".$i."'");
		while($fn = $db->fetch_array($sql)) {
			$beitrag = $db->query("SELECT * FROM themen WHERE forenid='".$i."' ORDER by themenid ASC");
				while($b = $db->fetch_array($beitrag)) {
					if($i == $b['forenid']) {
					eval("\$themen_bit .= \"".$tpl->get("foren_themen")."\";");
					}			
				}
			eval("\$catbit .= \"".$tpl->get("foren_cat")."\";");
		}
}

	eval("\$tpl->output(\"".$tpl->get("forum")."\");");

}
?>

Tabelle:
Foren
------------------
forenid, forenname, forendesc

Themen
-----------------
themenid, forenid, themenname, message

Hoffe ihr könnt helfen
 

Anhänge

  • Bild1.jpg
    Bild1.jpg
    50,6 KB · Aufrufe: 24
  • Bild2.jpg
    Bild2.jpg
    39 KB · Aufrufe: 20
Könnte man evtl. auch noch einen Einblick in die DB Struktur erhalten, bitte.

Korrektur:
Hast die DB Struktur umschrieben, klar.
Könntest du als txt einfach mal den Tabellendump anhängen.
 
Hier die Drei Tabellen wobei die Beitragstabelle uninteressant sind ;)

Code:
-- phpMyAdmin SQL Dump
-- version 2.10.0.2
-- http://www.phpmyadmin.net
-- 
-- Host: localhost
-- Erstellungszeit: 11. Juni 2007 um 15:41
-- Server Version: 5.0.37
-- PHP-Version: 5.2.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-------------------------------------------------------------------------------------------------------------------

CREATE TABLE `beitrag` (
  `beitragsid` int(11) NOT NULL auto_increment,
  `themenid` int(11) NOT NULL,
  `beitragsdesc` varchar(255) collate utf8_unicode_ci default NULL,
  `beitragsmessage` text collate utf8_unicode_ci NOT NULL,
  `userid` int(11) NOT NULL,
  `username` varchar(150) collate utf8_unicode_ci NOT NULL,
  `time` int(11) NOT NULL,
  PRIMARY KEY  (`beitragsid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;

-------------------------------------------------------------------------------------------------------------------

INSERT INTO `beitrag` VALUES (1, 1, NULL, 'Test', 1, 'Lenox', 1180184780);

-------------------------------------------------------------------------------------------------------------------

CREATE TABLE `foren` (
  `forenid` int(11) NOT NULL auto_increment,
  `forenname` varchar(255) collate utf8_unicode_ci NOT NULL,
  `forendesc` varchar(255) collate utf8_unicode_ci default NULL,
  PRIMARY KEY  (`forenid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

-------------------------------------------------------------------------------------------------------------------

INSERT INTO `foren` VALUES (1, 'Kategorie 1', NULL);
INSERT INTO `foren` VALUES (2, 'Kategorie 2', 'Kategorie 2 eben');

-------------------------------------------------------------------------------------------------------------------

CREATE TABLE `themen` (
  `themenid` int(11) NOT NULL auto_increment,
  `forenid` int(11) NOT NULL,
  `themenname` varchar(255) collate utf8_unicode_ci NOT NULL,
  `message` text collate utf8_unicode_ci NOT NULL,
  `ueserid` int(11) NOT NULL,
  `username` varchar(150) collate utf8_unicode_ci NOT NULL,
  `time` int(11) NOT NULL,
  PRIMARY KEY  (`themenid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;

-------------------------------------------------------------------------------------------------------------------

INSERT INTO `themen` VALUES (1, 1, 'Thema Test 1', 'Das ist mein Erstes Thema :D', 1, 'Lenox', 1178712963);
INSERT INTO `themen` VALUES (2, 2, 'Thema Test 2', 'gfdgdsfgdfgfdsgsdgfdgdsfgsdfgfdg', 1, 'Lenox', 1180190600);
INSERT INTO `themen` VALUES (3, 1, 'Thema Test 3', 'xcvxcvcvyxvv', 1, 'Lenox', 1180190600);
 
Hallo,

ist das vielleicht die Ursache? :
PHP:
eval("\$themen_bit .= \"".$tpl->get("foren_themen")."\";");

Der String $themen_bit scheint immer weiter konkatiniert zu werden, aber nicht wieder zurückgesetzt. Da ich dein Templatesystem nicht kenne, weiss ich nicht, ob das ein Problem ist.

Was mir sonst noch aufgefallen ist (sollte aber nicht die Ursache deines Problems sein:)

PHP:
 if($i == $b['forenid']) {

Ist diese Zeile nicht überflüssig? Du schränkst die Auswahl der Themen auf das Forum ja schon in der SELECT-Anweisung ein.

Und:

Du benutzt ein einfaches COUNT() um die Anzahl an Foren zu ermitteln

PHP:
for($i = 1; $i <= $foren; $i++) {

Wenn nun die Foren-IDs nicht aufeinander folgen, wirst du damit nicht mehr alle Foren finden.

Hoffe es hilft ein wenig, gibt sicher noch mehr,
Markus
 
Die $thenem_bit

Ist ja dafür da um mir die Themen zur jeweiligen Kategorien anzuzeigen

Nur irgenwie schaff ich es nicht die Themen so zu ordnen das diese der Kategorien angeordnet werden!

Ich hab dafür schon bestimmt einiges Probiert nur leider weis sich allerdings nicht mehr genau was ich alles probiert habe!

Nur erscheint es derzeit so wie auf den Bildern oben zu sehen!

Ich dachte eigentlich das es sehr einfach ist in dem einfach abfrage ob die Kat-Id bei Themen mit der in den foren übereinstimmt nur dann soll diese dort angezeigt werden das selbe mit den anderen nur macht er es eben nicht!

Hoffe das mir hier einer helfen kann und sogar beispiele hat wie er es bei sich gemacht hat damit ich dahinter steigen kann ;)
 

Neue Beiträge

Zurück