Stichwortindex - Doppelte Einträge bei Mehrfachzuordnungen

Gesperrt
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Stichwortindex - Doppelte Einträge bei Mehrfachzuordnungen

Beitrag von malsdgtac »

Hallo,

ich verwende das Script von Michael Gautschi für einen Stichwortindex. Hier das Script:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     Stichwortindex
* Author          :     Michael Gautschi
* Copyright     :     Michael Gautschi
* Created     :     15.1.04
* Modified    :  
* Version     : 0.1   
************************************************/
// Zuerst herausfinden welcher Metatype "Keywords" sind; normalerweise 5

$sql = "SELECT * FROM ".$cfg["tab"]["meta_type"] . " AS A WHERE A.metatype=\"keywords\"";
$db->query($sql);
if ($db->num_rows()==0) {
   echo "Konnte nicht bestimmen welche Metatags keywords sind";
   }
 else { 
  $db->next_record(); 
  $keywordid=$db->f("idmetatype");

  $sql = "SELECT metavalue,ARTLANG.idlang,ARTLANG.title,ARTLANG.idart,CATART.idcat FROM ".
               $cfg["tab"]["meta_tag"]. " AS META,".
               $cfg["tab"]["art_lang"]. " AS ARTLANG,".
               $cfg["tab"]["cat_art"]. " AS CATART 
               WHERE META.idmetatype = $keywordid
               AND     META.idartlang = ARTLANG.idartlang
               AND     ARTLANG.idart = CATART.idart
               AND     metavalue<>\"\"";

  $db->query($sql);
  if ($db->num_rows() != 0) {
     $entries=array();
     for ($i=0; $i<$db->num_rows(); $i++) {
       $db->next_record();
       $metavalues=$db->f("metavalue");
       $idart=$db->f("idart");
       $idcat=$db->f("idcat");
       $title=$db->f("title");
       $tmp_keywords=split(",",$metavalues);
       foreach ($tmp_keywords as $tmp_keyword) {
         $tmp_keyword=trim($tmp_keyword);
         $entry["idart"]=$idart;
         $entry["idcat"]=$idcat;
         $entry["title"]=$title;
         if ( !(array_key_exists($tmp_keyword,$entries)))  $entries[$tmp_keyword]=array();
array_push($entries["$tmp_keyword"],$entry);
 }
       }
     ksort($entries);

     foreach($entries as $keyword=>$items) {
       echo "$keyword<ul>";
       foreach ($items as $item) {
          $navmod_link ="front_content.php?client=$client&lang=$lang&idcat=". $item["idcat"] . "&idart=" . $item["idart"];
          echo ' <li><a href="'.$sess->url("$navmod_link").'" id="font">'.$item["title"].'</a><br> ';
          }
       echo "</ul>";
       }  
     }
   else {
     echo "keine Stichworte gefunden";
     }
  }
?>

Ich habe nun das Problem, dass ich viele Artikel mehreren Kategorien zugeordnet habe. Leider gibt mir dieses Script nun für jedes Stichwort jeweils für jede zugeordnete Kategorie ein Ergebnis aus. Soll heißen, dass zu einem Begriff z.B. 5 gleiche Treffer stehen.

Kann mir jemand helfen, wie ich das Script so modifiziere, dass jeweils nur ein Teffer angezeigt wird? Die Kategorie wäre mir dabei gleich (könnte man ganz weg lassen).

Ich habe es heute schon den ganzen Tag versucht und leider zu keinen zufrieden stellenden Ergebnis gekommen.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

anmerkung:
ähm ich kenne das script zwar nicht jedoch sollte keinesfalls in einem modul für temporäre zwecke die variablen $idart und $idcat mit werten überschrieben werden...

nachfolgende module werden dann etwas seltsam agieren wenn sie die idart und idcat benutzen wollen...
*** make your own tools (wishlist :: thx)
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag von malsdgtac »

Das ist ein Modul welches ich in den Downloads gefunden habe. Es funktioniert eigentlich ja auch. Kann dieses Überschreiben denn Probleme machen?
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ja wenn das nachfolgende modul zb wissen möchte in welcher kategorie es sich befindet. dieser wert ist $idcat gespeichert...
wenn du den wert nun vorher änderst wird das nachfolgende script nicht richtig funktionieren da die $idcat nicht dem entspricht womit du es vorher überschrieben hast.
*** make your own tools (wishlist :: thx)
Cyclist
Beiträge: 90
Registriert: Fr 11. Feb 2005, 14:08
Wohnort: Berlin
Kontaktdaten:

Beitrag von Cyclist »

emergence hat geschrieben:ja wenn das nachfolgende modul zb wissen möchte in welcher kategorie es sich befindet. dieser wert ist $idcat gespeichert...
wenn du den wert nun vorher änderst wird das nachfolgende script nicht richtig funktionieren da die $idcat nicht dem entspricht womit du es vorher überschrieben hast.
Heisst das, dass man dieses Modul nicht verwenden sollte? Gibt es ein anderes Modul, das ebenfalls die Keywords ausgeben kann?
Gesperrt