Seite 1 von 1

Stichwortindex - Doppelte Einträge bei Mehrfachzuordnungen

Verfasst: Di 3. Aug 2004, 17:17
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.

Verfasst: Mi 4. Aug 2004, 12:09
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...

Verfasst: Mi 4. Aug 2004, 12:40
von malsdgtac
Das ist ein Modul welches ich in den Downloads gefunden habe. Es funktioniert eigentlich ja auch. Kann dieses Überschreiben denn Probleme machen?

Verfasst: Mi 4. Aug 2004, 12:42
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.

Verfasst: Mi 2. Mär 2005, 18:06
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?