Erst mal vielen Dank für die Blumen, hab halt einfach bestehenden Code ein wenig verändert...
So, @Hansa u.a.:
Hab das mal in zwei Module aufgeteilt, also ein Eingabefeld im Kopfbereich, d.h. dort auch einen Container für das Modul platzieren.
Die Variable $suche wird dann hoffentlich an das zweite Modul übergeben, welches nur noch für die Trefferausgabe zuständig ist.
Hier Modul 1: (hab es mal Kopf-Eingabe-Suchmodul genannt)
INPUT (wie beim vorherigen Suchmodul)
echo "<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\">
<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:
<?php
echo "
<table border=\"0\">
<tr>
<td class='navigation' align='right'>
<form name='suche' method='POST' action='front_content.php?idcat=12'>
<input type=\"text\" size=\"12\" style=\"width:120px\" name=\"suche\" value=\"$suche\" class='navigation'>
<INPUT TYPE=\"submit\" VALUE=\"finden\" class='navigation'>
</FORM>
</td>
</tr>
</table>";
?>
//Ende OUTPUT
ACHTUNG:im form-tag muss action auf die Seite verweisen, die die Trefferliste ausgibt (bei mir idcat=12) (also die Ausgabeseite vorher definieren und idcat notieren und dort einfügen evtl. auch idart (wenn mehrere Seiten in der gleichen Kategorie vorkommen). hab dazu leider noch keine bessere Lösung. Evtl. später Auswahl über select-Feld)
Die Seite zur Anzeige der Trefferliste natürlich auch mit einem Container für Modul Ausgabe der Trefferliste ausstatten.
Modul für die Ausgabe der Trefferliste:
INPUT: kein
OUTPUT:
<?php
echo "<table><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, 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++){
$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]."\" class='text'";
if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";};
echo ">".$results[$i][title]."</a> <span class='text'>(".$hits[$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>";
?>
bei mir hat's so funktioniert!
aber vermutlich geht's noch einfacher. Ich hoffe ich hab's verständlich rübergebracht!
P.S. die Anzeige der Anzahl Treffer ist immer noch falsch, arbeite dran!
