Seite 1 von 2

Volltextsuche, Suchergebnise in anderen Container

Verfasst: Do 18. Nov 2004, 14:14
von bazz-design
tach
Ich hab da ma ne quest

Unzwar hab ich ein Suchmodul installiert, und möchte aber die Suchergebnisse in einen anderen Container angegeben bekommen. Man findet nämlich nur Module die im gleichen Fenster die Suchergebnise ausgeben.

Merci im voraus :lol:

Gruss Bazz

Verfasst: Do 18. Nov 2004, 15:30
von swelpot

Verfasst: Fr 19. Nov 2004, 01:56
von ALbärt
Leider hilft das nicht wirklich weiter, da diese Suche nicht so funktioniert, wie bazz-design und auch ich mir das gedacht haben! Wäre schön, wenn swelpot sich das noch mal anschauen und korrekt niederschreiben würde, hab nämlich auch nichts sinnvolles hinbekommen; denn bei Klick auf den Ergbnislink wird der Text im selben Container wiedergegeben!

Gruß
AL

Verfasst: Fr 19. Nov 2004, 08:23
von Halchteranerin
Ich benutze eine Volltextsuche, aber ich habe keine Ahnung mehr, von wem die stammt, ob aus dem Forum oder aus dem Download-Bereich. Jedenfalls funktioniert sie bei mir inzwischen, nachdem ich die Variable $hits in $treffer umbenannt habe (es kam zu "Interaktionen" mit einem anderen Modul, das denselben Variablennamen benutzte, also falls ihr ein Modul habt, wo die Variable $treffer vorkommt, muesst ihr die wieder umbenennen). Ach, ich sehe gerade, im Eingabe-Modul steht ein bisschen etwas ... Dort steht auch, dass es fuer Contenido 4.3.1b sein soll, aber ich benutze es mit Contenido 4.4.4.

Modul Volltextsuche-Eingabe
Beschreibung:

Code: Alles auswählen

Bietet eine Volltextsuche. Durchsucht Titel, Beschreibung und Content.
Weist Schriftarten als CSS-Klassen (.fontX) zu, die somit im 
Stylesheet (format.css) konfigurierbar sind.

History:
04.07.2003 - Anpassung Contenido 4.3.1 Beta - Carsten Hallwachs, c.ha@gmx.de
16.09.2002 - Fehlermeldung beseitigt, wenn ein Leerzeichen am Ende des Suchbegriffs stand (danke Svaen)
16.09.2002 - Statt der Zusammenfassung wurde der Titel angezeigt (danke Svaen)
16.09.2002 - Multisort erweitert. (danke Frank)
18.09.2002 - noch etwas MySQL-tauglicher gemacht durch das ersetzen von deutschen Umlauten (danke an Peter)

C-Version    : 4.3.1b
Input:

Code: Alles auswählen

echo "
<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\">
  <tr valign=\"top\">
    <td width=\"202\">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=\"202\">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=\"202\">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=\"202\">Linkziel: </td>
    <td><INPUT TYPE=\"text\" NAME=\"CMS_VAR[3]\" VALUE=\"CMS_VALUE[3]\"></td>
  </tr>
</table>";
Output:

Code: Alles auswählen

<?php 
echo " 
<table width=\"140\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"> 
<tr><td align=\"left\"> 
<form name='suche' method='POST' action='front_content.php?idcatart=254&lang=1&client=1'> 
<input type=\"text\" size=\"\" class=\"feld\" name=\"suche\" value=\"$suche\"></td></tr> 
<tr><td align=\"left\" height=\"21\"> 
<button name=\"s\" type=\"submit\" value=\"Suchen\" size=\"2\" style=\"width: 100px;height:20px; color: white; border:0;background-color:#4779a0;\">Volltextsuche</button></FORM></td></tr></table>"; 
?>
Modul Volltextsuche-Ausgabe
Input:

Code: Alles auswählen

echo "
<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\">
  <tr valign=\"top\">
    <td width=\"202\">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=\"202\">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=\"202\">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 "> Zusammenfassung <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=\"202\">Linkziel: </td>
    <td><INPUT TYPE=\"text\" NAME=\"CMS_VAR[3]\" VALUE=\"CMS_VALUE[3]\"></td>
  </tr>
</table>";
Output:

Code: Alles auswählen

<?php 
echo "<table border=0 cellpadding=0 cellspacing=0><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); 
$s=ereg_replace("ß", "%DF",$s); 
$suchregexp .= "|$s"; 
$suchliste = explode(" ",strtolower($suche)); 

$sql = "SELECT 
a.title AS title, a.idart AS idart, a.summary AS comment, a.idartlang AS idartlang, 
b.idcat AS idcat, 
c.parentid AS parentid, 
d.value AS content 
FROM 
".$cfg["tab"]["art_lang"]." AS a, 
".$cfg["tab"]["cat_art"]." AS b, 
".$cfg["tab"]["cat"]." AS c, 
".$cfg["tab"]["content"]." AS d 
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' 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("idartlang"); 
$results[$num][link] = "front_content.php?client=$client&lang=$lang&parent=".$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++){ 
$treffer[$num] += substr_count(strtolower(urldecode($db->f("title"))), $suchliste[$x]) + 
substr_count(strtolower(urldecode($db->f("comment"))), $suchliste[$x]) + 
substr_count(strtolower(urldecode($db->f("content"))), $suchliste[$x]); 
}; 
}; 
if(count($treffer) > 0){ 
$treffer = array_values($treffer); 
$results = array_values($results); 
array_multisort ($results, SORT_DESC, SORT_NUMERIC, $treffer, SORT_DESC, SORT_NUMERIC); 
for ($i=0; $i<count($treffer); $i++){ 
echo "<tr><td align=left><font size=\"-1\"><a href=\"".$results[$i][link]."\" class='text'"; 
if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";}; 
echo ">".$results[$i][title]."</a></font> <span class='text'>(".$treffer[$i]." Treffer)<BR>"; 
echo $results[$i][text]."</span></td></tr>"; 
}; 
} else { echo "<tr><td class='text' align=center>Keine passenden Seiten gefunden</td></tr>"; }; 
} else { echo "<tr><td class='text' align=center>Keine passenden Seiten gefunden</td></tr>"; }; 
}; 
echo "</table>"; 
?>
Gruss
Christa

Verfasst: Fr 19. Nov 2004, 09:21
von swelpot
falls christa's nicht funktioniert:
Modul: Volltextsuche Formular
nur Output:
Code:

<?php
$linkziel = "front_content.php?idcat=15";
//$linkziel = $auth->url();
?>

<form name="suche" action="<?= $linkziel ?>" method="post">
<table>
<tr>
<td><span style="font-size: 15px">Suche&nbsp;</span></td>
<td><input name="suchtext" type="text" size="20"></td>
<td><input name="submit" type="submit" value="Go"></td>
</tr>
</table>
</form>
diesen teil in den container, der nur die suchmaske beinhalten soll. idcat in $linkziel auf die katgeorie setzen, die dann einen artikel mit dem vollständigen modul enthält...
hab bazz-design's post so verstanden (live hab ich das zur zeit unter http://contenido.swelpot.de)

grüße

stefan

Verfasst: Fr 19. Nov 2004, 14:35
von ALbärt
... entweder bin ich zu blöd (bitte keine zustimmenden Bemerkungen! ;-))
... oder ich mach irgendwas grundlegend falsch! :-(

Genau so, wie Du das auf Deiner Seite hast @Stefan, will ich das auch haben:
- Suchbox oben im Head (bsw. CMS_CONTAINER[2])
- Suchergebnisse im Textbereich (bsw. CMS_CONTAINER[10]

Kann doch nicht so schwer sein, oder? *heul*

Ich hab also zwei Module angelegt:
- Volltextsuche Eingabe, mit dem Code von Christa
- Volltextsuche Ausgabe, ebenso von Christa

... soweit richtig?

Nun hab ich im Layout die beiden Container abgelegt; da, wo's jeweils hin soll; richtig oder nicht?

Ergebnis:
- Volltextsuche Eingabe wird korrekt im Head angezeigt
- nach Abschluss der Suche passiert nichts; kein Ergebnis, kein Hinweis auf nicht gefundene Wörter

Muss ich noch weitere Anpassungen der Module vornehmen, Linkziel o.ä.?

Danke für Deine Geduld.
Gruß
AL

Verfasst: Fr 19. Nov 2004, 17:46
von Halchteranerin
hast du das Ding denn konfiguriert? Steht etwas im errorlog.txt?

Verfasst: Fr 19. Nov 2004, 18:09
von Gast
Hallo Christa,

hier mal das, was im Errorlog zu finden ist:

Code: Alles auswählen

[19-Nov-2004 18:06:21] Invalid SQL: 
                SELECT f.name, c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
                FROM con_cat AS a,
                con_cat AS b,
                con_cat AS c
                LEFT JOIN con_cat_art AS d ON c.idcat = d.idcat
                LEFT JOIN con_art_lang AS e ON d.idart = e.idart
                LEFT JOIN con_cat_lang AS f ON f.idcat = d.cat
                WHERE
                    (
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = 17
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    AND e.idlang = 1
                    AND d.is_start = 0
                ORDER BY e.created DESC
                LIMIT 0, 0
                    <br><br>
[19-Nov-2004 18:06:21] next_record called with no query pending.

Danke und Gruß
AL[/code]

Verfasst: Fr 19. Nov 2004, 18:19
von Halchteranerin
Hallo AL,

der Eintrag stammt von einem anderen Modul, denn im Suchmodul taucht kein f.name z.B. auf. Du hast aber nicht gesagt, ob du das Zeug konfiguriert hast ...

Gruss
Christa

Verfasst: So 2. Jan 2005, 08:20
von marphin
Hallo zusammen,

das Modul von Christa funktioniert einwandfrei - sogar in Version 4.5.2.

Gruß, Martin

Verfasst: Fr 7. Jan 2005, 14:16
von cyaneo
Nach studium meherer Beiträge zum Thema Volltextsuche bin ich jetz völlig daneben...

Kann bitte jemand auch diese funktionierende, komplette Modul für die Volltextsuche fertig in einem Post veröffentlichen?

Verfasst: Fr 7. Jan 2005, 21:15
von marphin
Hallo cyaneo,

das ist eine einfache Suche, wie es sie auf vielen Seiten gibt www.seraweb.de.

Oder was wolltest Du genau wissen?

Gruß, Martin

Verfasst: Sa 8. Jan 2005, 15:34
von i-fekt
Wenn ich nun etwas gesucht habe und dann mit dem Browser zurück will, komme ich immer auf eine ungültige Seite.

Wie kann man das verhindern?

Verfasst: Sa 8. Jan 2005, 16:16
von kummer
du musst get anstatt post im formular verwenden. dann geht auch der zurück-knopf.

Verfasst: Sa 8. Jan 2005, 16:24
von i-fekt
Das klappt leider nicht. Wenn ich post durch get ersetze funktioniert die Suche erst gar nicht. :(