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
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 </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.
