Linkscriptausgabe Problem

BSA

Erfahrenes Mitglied
Hi Leute!

Hab gerade nen kleines Problem.
Also ich arbeite mit soner ganz simplen Template klasse, wenn jemand interesse daran hat, kann ich sie noch Posten.
Also, ich möchte bei meinem Linkscript die Links wie folgt ausgeben:

Kategorie 1
Link1
Link2
Link3

Kategorie 2
Link4
Link5
Link6

Kategorie 3
Link 7
Link 8
Link 9
.
.
.


Habe nun das Problem, dass mir die Links wie folgt ausgegeben werden:

Kategorie 1
Link1
Link2
Link3

Kategorie 2
Link1
Link2
Link3
Link4
Link5
Link6

Kategorie 3
Link1
Link2
Link3
Link4
Link5
Link6
Link7
Link8
Link9

Es werden also immer die Links aus der vorherigen Kategorien mit ausgegeben.
Kann mir von euch jemand sagen wo mein Denkfehler bei dem Script ist?
Bin über jede Hilfe Dankbar. hier der Code:

PHP:
<?PHP

        $Links=new Template("links.html");      // neues Template Objekt erstellen
        $LinksCategory = new Template("links_liste.html");      // weiteres template Objekt erstellen für Kategorien
        $result = mysql_query("SELECT * FROM lb_links LEFT JOIN lb_links_category ON lb_links.links_category = lb_links_category.links_category_id GROUP BY links_category ORDER BY links_id ASC", $mysql_conn);
        if($result){
           while ($row = mysql_fetch_array($result)) {
               $category = $row['links_category_name'];
               $categoryid = $row['links_category_id'];
               $anzahl = mysql_query("SELECT COUNT(links_id) AS anzahl FROM lb_links WHERE links_category = ".$row['links_category_id']."", $mysql_conn);   // Anzahl der Einträge in den jeweiligen kategorien zählen
               $anzahl = mysql_fetch_array($anzahl);
               $anzahl = $anzahl['anzahl'];             
              
               $LinksListe = new Template("links_data.html");   // weiteres template Objekt erstellen für Links
               $res = mysql_query("SELECT * FROM lb_links WHERE links_category = ".$row['links_category_id']."", $mysql_conn);  // Links auslesen die jeweils zu den Kategorien gehören
               while($row = mysql_fetch_array($res)){                  
                   if($row['links_category'] == $categoryid){
                      $name = $row['links_name'];
                      eval($LinksListe->TemplateVar("tpl_links"));       // Eval Links der Kategorien            
                   }   
               }
               eval($LinksCategory->TemplateVar("tpl_liste"));  // Eval Kategorien
           }        
        } else {
            $status = "Keine Einträge vorhanden";
           eval($LinksCategory->TemplateVar("tpl_liste"));
        }
        eval($Links->TemplateVar("tpl_content"));   // Eval

?>


BSA
 
Zuletzt bearbeitet:
Hallo!

Also ich würde sagen dass die Links schon beim eintragen in die DB den Kategorien nicht explizit zugeordnet werden.
Ist nur so ein Gedanke.

Dass währe dann so als wenn Du auf deinem Schreibtisch mehrere Ablageboxen hast, die Briefe aber einfach nur auf einen grossen Haufen packst.

Gruss Dr Dau
 
Hi DrDAU *lol*

Wieso werden die Links den Kategorien beim Eintragen in die DB nicht richtig zugeordnet? Das ist meiner Meinung nach eine komplett falsche Aussage... Sorry, aber dem kann ich nciht zustimmen!
Aber vielleicht sollte ich noch mal die Tabellenstruktur posten?!

BSA
 
Mag sein dass ich falsch liege.... wie gesagt, ist nur ein Gedanke.

Aber irgendwoher muss die Info ja kommen zu welcher Kategorie welcher Link gehört.
Und diese Info ist nunmal in der DB hinterlegt..... wenn sie denn hinterlegt wurde.
Und ganz offensichtlich läuft bei der Zuordnung etwas schief, denn sonst würden die Links nicht in mehreren Kategorien auftauchen.... es sei denn es ist so gewollt.
Entweder erfolgt die fehlerhafte Zuordnung beim eintragen oder beim auslesen.
Da es ohne Eintrag aber keine Ausgabe gibt, sollte also zuerst geprüft werden ob die Einträge korrekt vorgenommen wurden.... soweit kann sogar ich denken.

Natürlich ist es dir überlassen mit der Fehlersuche hinten anzufangen, nur kann dann nicht die Rede von logischer Vorgehensweise sein.

Nur weil ich nichts mit MySQL zu tun habe, heisst es noch lange nicht zwangsläufig dass ich mit meinen Vermutungen verkehrt liegen muss.
Meine Links jedenfalls werden den richtigen Kategorien zugeordnet.... und dass sogar ganz und gar ohne MySQL.
 
Hi,

kein Bock deinen Code aufzuarbeiten, aber falls du es noch nicht gemacht hast, solltest du es so machen:

In die Tabelle mit den Links kommt eine Spalte "category_id". dann machste folgendes:

PHP:
$sql=mysql_query(kategorien);
while($cats=mysql_fetch_array($sql))
{
   //kategorie anzeigen!

   $sql2=mysql_query(links WHERE category_id='$cats[id]');
   while($links=mysql_fetch_array($sql2))
   {
      //link anzeigen!
   }
}

mfg
dmx
 
Also meine Tabellen sehen wie folgt aus (haut das einfach testweise bei euch in die DB wenn ihr wollt, hab auch nen paar Beispieldaten angehangen):

Code:
# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `lb_links`
#

CREATE TABLE `lb_links` (
  `links_id` int(11) NOT NULL auto_increment,
  `links_category` int(11) NOT NULL default '0',
  `links_name` varchar(128) NOT NULL default '',
  `links_url` varchar(255) NOT NULL default '',
  `links_info` text NOT NULL,
  `links_klicks` int(11) NOT NULL default '0',
  PRIMARY KEY  (`links_id`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;

#
# Daten für Tabelle `lb_links`
#

INSERT INTO `lb_links` VALUES (1, 1, 'Sportbund', 'www.sportbund.de', 'Infos zum Deutschen Sportbund', 0);
INSERT INTO `lb_links` VALUES (2, 2, 'Sporthilfe', 'www.sporthilfe.de', 'Info zur Sporthilfe', 0);
INSERT INTO `lb_links` VALUES (3, 1, 'Franziska Petereit', 'www.franziska-petereit.de', 'Offizielle Webseite von Franziska Petereit!', 0);
INSERT INTO `lb_links` VALUES (4, 3, 'Testlink', 'www.testlink.de', 'Infos zu Testlinks', 0);
INSERT INTO `lb_links` VALUES (5, 3, 'Testlink2', 'www.testlink2.de', 'info testlink2', 0);

# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `lb_links_category`
#

CREATE TABLE `lb_links_category` (
  `links_category_id` int(11) NOT NULL auto_increment,
  `links_category_name` varchar(128) NOT NULL default '',
  PRIMARY KEY  (`links_category_id`)
) TYPE=MyISAM AUTO_INCREMENT=4 ;

#
# Daten für Tabelle `lb_links_category`
#

INSERT INTO `lb_links_category` VALUES (1, 'Kategorie 1');
INSERT INTO `lb_links_category` VALUES (2, 'Kategorie 2');
INSERT INTO `lb_links_category` VALUES (3, 'Kategorie 3');

# --------------------------------------------------------

@DMX die Abfrage mache ich im gleichen Stiel wie du es mir gesagt hast...auch schon vorher!

@DrDau Wenn du jetzt in meine tabellen guckst, siehst du das es eine eindeutige Zuordnung gibt und auch schon vorher gab!

Wenn jetzt noch irgendjemand ne Idee hat, dann würde mich das sehr freuen, das Problem wird daran liegen, das die Daten immer wieder an die Variable rangehangen wird oder so...ich seh da nicht ganz druch!
 
Zurück