Volltextsuche

Gesperrt
gepo
Beiträge: 203
Registriert: Fr 13. Mai 2005, 16:25
Wohnort: Ruhrpott
Kontaktdaten:

Volltextsuche

Beitrag von gepo »

Hallo, das Modul Volltextsuche macht mir noch einige Schwierigkeiten.
Es funktioniert zwar, siehe hier: www.homepage-und-3d-service.de aber nicht so wie ich es möchte.
Ich hätte gerne, das der gesuchte Text in einem neuen Fenster auftaucht und nach Möglichkeit farbig hinterlegt wird. Im neuen Fenster würde mir aber schon reichen. Bild
Mein input:

Code: Alles auswählen

echo "
<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\">
  <tr valign=\"top\">
    <td width=\"190\">Schriftart Link:</td>
    <td><select name=\"CMS_VAR[0]\" size=\"1\">";
    
	if ("CMS_VALUE[0]" != 0) {
		echo "<option value=\"0\">".$lngForm["nothing"]."</option>";
	} else {
		echo "<option value=\"0\" selected>".$lngForm["nothing"]."</option>";
	}
    
	for ($i=1; $i<=50; $i++) {
		if ( $i != "CMS_VALUE[0]" ) {
			echo "<option value=\"$i\">Font $i</option>";
		} else {
			echo "<option value=\"$i\" selected>Font $i</option>";
		}
	}
    
	echo "
	</SELECT></td>
  </tr>  <tr valign=\"top\">
    <td width=\"190\">Schriftart Text:</td>
    <td><select name=\"CMS_VAR[1]\" size=\"1\">";
    
	if ("CMS_VALUE[1]" != 0) {
		echo "<option value=\"0\">".$lngForm["nothing"]."</option>";
	} else {
		echo "<option value=\"0\" selected>".$lngForm["nothing"]."</option>";
	}
	
    for ($i=1; $i<=50; $i++) {
		if ( $i != "CMS_VALUE[1]" ) {
			echo "<option value=\"$i\">Font $i</option>";
		} else {
			echo "<option value=\"$i\" selected>Font $i</option>";
		}
	}
	
    echo "
	</SELECT></td>
  </tr>  <tr valign=\"top\">
    <td width=\"190\">Zusatzangaben: </td>
    <td><INPUT TYPE=\"radio\" NAME=\"CMS_VAR[2]\" VALUE=\"0\" ";
	
    if("CMS_VALUE[2]" == 0) { 
		echo "checked=checked"; 
	}
	echo "> nichts <br>
    <INPUT TYPE=\"radio\" NAME=\"CMS_VAR[2]\" VALUE=\"1\" ";
    
	if("CMS_VALUE[2]" == 1) { 
		echo "checked=checked"; 
	} 
	echo "> Kommentar <br>
    <INPUT TYPE=\"radio\" NAME=\"CMS_VAR[2]\" VALUE=\"2\" ";
    
	if("CMS_VALUE[2]" == 2) { 
		echo "checked=checked"; 
	} 
	echo "> Textausschnitt </td>
  </tr>  <tr valign=\"top\">
    <td width=\"190\">Linkziel: _blank</td>
    <td><INPUT TYPE=\"text\" NAME=\"CMS_VAR[3]\" VALUE=\"CMS_VALUE[3]\"></td>
  </tr>
</table>";
Mein output:

Code: Alles auswählen

<?php
echo "<center><table width=\"100%\" border=\"0\"><tr><td align=left>
<form name=\"suche\" method=\"POST\" action=\"".$auth->url()."\" >
<input type=\"text\" class=\"textsearchform\" size=\"24\" name=\"suche\" value=\"$suche\">
<INPUT TYPE=\"submit\" VALUE=\"Suche\" class=\"buttonsearchform\"></FORM></td></tr>";
if($suche){
	$suche = trim($suche);
	$suchregexp = "(".str_replace(" ",")|(",$suche).")";
        $s=ereg_replace("ü", "%FC",strtolower($suche));
        $s=ereg_replace("ä", "%E4",$s);
        $s=ereg_replace("ö", "%F6",$s);
        $suchregexp .=  "|$s";
	$suchliste = explode(" ",strtolower($suche));

	$sql = "SELECT A.title AS title,A.idart AS idart,A.summary AS comment,B.idcat AS idcat,C.parentid AS parentid,D.value AS content,A.idartlang AS sideid ";
	$sql .= "FROM " . $cfg["tab"]["art_lang"] . " AS A, " . $cfg["tab"]["cat_art"] . " AS B, " . $cfg["tab"]["cat"] . " AS C, " . $cfg["tab"]["content"] . " AS D ";
	$sql .= "WHERE A.idart=B.idart AND A.idartlang=D.idartlang AND B.idcat=C.idcat AND C.idclient='$client' AND idlang='$lang' AND online='1'";
	$sql .= " AND (D.value REGEXP '$suchregexp' OR A.title REGEXP '$suchregexp' OR A.summary REGEXP '$suchregexp')";

	$db->query($sql);
	if ($db->num_rows() != 0){
		for ($i=0; $i<$db->num_rows(); $i++) {
			$db->next_record();
			if ($auth->auth["uid"] == "nobody"){
				$sql2 = "SELECT public FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".$db->f("idcat")."'";
				$db2 = new DB_Contenido; $db2->query($sql2); $db2->next_record();
				if($db2->f("public") == 0)continue;
			}
			$num = 0 + $db->f("sideid");
			$results[$num][link] = "front_content.php?client=$client&lang=$lang&parent=".$db->f("parentid")."&subid=".$db->f("parentid")."&idcat=".$db->f("idcat")."&idart=".$db->f("idart");
			$results[$num][title] = $db->f("title");
			switch ("CMS_VALUE[2]") {
				case 0: $results[$num][text] = "";break;
				case 1: $results[$num][text] = $db->f("comment");break;
				case 2: $results[$num][text] .= substr(strip_tags(rawurldecode($db->f("content"))),0,100)."...";
			}
			for($x=0;$x<count($suchliste);$x++){
				$hits[$num] += substr_count(strtolower($db->f("title")), $suchliste[$x]) + 
				substr_count(strtolower($db->f("comment")), $suchliste[$x]) + 
				substr_count(strtolower($db->f("content")), $suchliste[$x]);
			}
		}
		if(count($hits) > 0){
			$hits = array_values($hits);
			$results = array_values($results);
			array_multisort ($results, SORT_DESC, SORT_NUMERIC, $hits, SORT_DESC, SORT_NUMERIC);
			for ($i=0; $i<count($hits); $i++){
				echo "<tr><td align=left><a href=\"".$results[$i][link]."\" id=\"fontCMS_VALUE[0]\"";
				if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";}
				echo ">".$results[$i][title]."</a> <span id=\"fontCMS_VALUE[1]\">(".$hits[$i]." Treffer)<BR>";
				echo $results[$i][text]."</span></td></tr>";
			}
		} else { echo "<tr><td align=center><p class=\"textunten\">Keine passenden Seiten gefunden</p></td></tr>"; }
	} else { echo "<tr><td align=center><p class=\"textunten\">Keine passenden Seiten gefunden</p></td></tr>"; }
}
echo "</table></center>";
?>
Für Hilfe wäre ich dankbar...
Georg
...
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Zunächst werden die Suchergebnisse im gleichen Fenster angezeigt. Wenn Du dann unter Konfiguration _blank als Linkziel angibst, sollte ein Klick auf ein Suchergebnis ein neues Fenster aufgehen.

Code sieht in der Hinsicht sauber aus.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
gepo
Beiträge: 203
Registriert: Fr 13. Mai 2005, 16:25
Wohnort: Ruhrpott
Kontaktdaten:

Beitrag von gepo »

Ok, das mit dem neuen Fenster hat geklappt. Was ich nicht verstehe ist, wenn ich auf der o.g. HP zum Beispiel CMS als Suchbegriff eingebe, wird als Ergebnis "Startartikel (2 Treffer)" angezeigt. Es ist aber nur ein Treffer vorhanden. Gibt es dafür eine Erklärung?
Kann ich den gesuchten Text farbig markieren und wie ändere ich die Schriftgrößen der Trefferliste?
...
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Kann ich den gesuchten Text farbig markieren und wie ändere ich die Schriftgrößen der Trefferliste?
Zum einen gibt noch andere Suchmodule hier im Forum, u.a. mit Highlighting. Das ist aber nichts einfaches, da dazu Code auf der Zielseite aktiv werden muss. Einfach mal suchen.

Zum Design: Na, alles was in Output mit echo beginnt, gibt HTML-Code aus - da kannst Du CSS bzw. Styles ergänzen, wie Du magst.

Die Anzahl der Treffer ist praktisch immer mit Vorsicht zu genießen, das hat technische Gründe. Ansonsten sucht er im Titel, in der Zusammenfassung und im Inhalt (und das sogar im HTML-Code).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Gesperrt