Suchmodul inkl. Suchoptionen

Gesperrt
sabsab
Beiträge: 35
Registriert: Mo 21. Feb 2005, 16:10
Wohnort: München
Kontaktdaten:

Suchmodul inkl. Suchoptionen

Beitrag von sabsab »

Hallo Zusammen!

Ok, Suchmodule gibt es schon einige und entsprechende Nachfragen.

Hat sich jemand schon an ein Suchmodul herangewagt, welches z.B. zur Volltextsuche auch noch Suchoptionen (wie die Suche hier im Forum) beinhaltet?

Sinn und Zweck:
Will suche verfeinern und Artikel ausgeben lassen, die zB. in einem bestimmten Zeitraum erstellt worden sind.

Danke und Gruß
sabsab
Contenidoversion 4.6.15
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

So eine Suche ist mir zumindest noch nicht begegnet ...
sabsab
Beiträge: 35
Registriert: Mo 21. Feb 2005, 16:10
Wohnort: München
Kontaktdaten:

Beitrag von sabsab »

Ok, Ansprüche etwas herunterschrauben:

Nutze folgendes Volltext-Modul, wie könnte ich dort ein Dropdown-Menü noch zusätzlich integrieren zB. mit den Kategorien: "groß, mittel, klein" und weitere Kategorien?
Diese Daten sollen in die Suche eingebunden werden.
Denn Nutzer sind häufig sehr ungeduldig und wollen geführt werden

Input (irgendwo soll da ein Fehler sein, funktioniert aber trotzdem)

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 '<form name="suche" method="POST" action="'.$auth->url().'"> 
<table width="100%" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td width="70%"><p><input type="text" size="20" style="width:300px" name="suche" value="'.$suche.'" class="Input"><INPUT TYPE="submit" VALUE="Suchen" style="width:80px" class="subheadline"></p></td> 
</tr> 
<tr> 
<td colspan=2 class="text"><input type="radio" name="verknuepfung" value="und" checked>&nbsp;alle Begriffe müssen enthalten sein</td> 
</tr> 
<tr> 
<td colspan=2 class="text"><input type="radio" name="verknuepfung" value="oder">&nbsp;mindestens ein Begriff muss enthalten sein</td> 
</tr> 

</table></center> 
</FO'.'RM>'; 
if($suche){ 
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">'; 

$ignore_konj = array("und","oder","als","wenn","auch","wo","wie"); 
$ignore_art = array("der","die","das","ein","eine"); 
$ignore = array("ich","du","er","sie","es","wir","ihr","sie"); 
$suche = trim($suche); 
$suchliste = explode(" ",strtolower($suche)); 
$suchliste = array_diff ($suchliste, $ignore_konj, $ignore_art, $ignore); 
$suche = trim(implode(" ",$suchliste)); 
if($verknuepfung=="oder"){ 
$suchregexp = "(".str_replace(" ",")|(",$suche).")"; 
$s=ereg_replace("ü", "%FC",strtolower($suche)); 
$s=ereg_replace("ä", "%E4",$s); 
$s=ereg_replace("ö", "%F6",$s); 
$suchregexp .= "|$s"; 
$sql = "SELECT A.title AS title,A.idart AS idart,A.summary AS comment,B.idcat AS idcat,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."')"; 
} else { 
$sql = "SELECT A.title AS title,A.idart AS idart,A.summary AS comment,B.idcat AS idcat,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'"; 
while(list($key, $val) = each($suchliste)) { 
$suchregexp = "(".str_replace(" ",")|(",$val).")"; 
$s=ereg_replace("ü", "%FC",strtolower($val)); 
$s=ereg_replace("ä", "%E4",$s); 
$s=ereg_replace("ö", "%F6",$s); 
$suchregexp .= "|$s"; 
$sql .= " AND (D.value REGEXP '".$suchregexp."' OR A.title REGEXP '".$suchregexp."' OR A.summary REGEXP '".$suchregexp."')"; 
} reset($suchliste); 
} 
$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."&la"."ng=".$lang."&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(urldecode($db->f("content"))),0,100)."..."; 
}; 
while(list($key, $val) = each($suchliste)) { 
$hits[$num] += substr_count(strip_tags(urldecode(strtolower($db->f("title")))), $val) + 
substr_count(strtolower(strip_tags(urldecode($db->f("comment")))), $val) + 
substr_count(strtolower(strip_tags(urldecode($db->f("content")))), $val); 
// echo $num.': '.$val.'='.$hits[$num].$db->f("content").'<br>'; 
}; reset($suchliste); 
}; 
if(count($hits) > 0){ 
echo '<tr><td class=text><b>Suchergebnisse</b> 
<br><b>für "'.$suche.'"<p> '; 

echo '</b></p></td></tr>'; 
$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 class=text><p><a href=\"".$results[$i][link]."\""; 
if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";}; 
echo ">".$results[$i][title]."</a> (".$hits[$i]." Treffer)<BR>"; 
echo $results[$i][text]." <a href=\"".$results[$i][link]."\""; 
if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\">";}; 
echo "><img  src=\"upload/icons/mehr.gif\" border=\"0\"><hr width=\"100%\" color=\"#FFCC66\" size=\"1\"></a></td></tr>"; 
}; 
} else { echo "<tr><td align=left class=text><p><b>Keine passenden Seiten gefunden</b></p></td></tr>"; }; 
} else { echo "<tr><td align=left class=text><p><b>Keine passenden Seiten gefunden</b></p></td></tr>"; }; 
echo '</table>'; 
} 
?>  
Danke und Gruß
Contenidoversion 4.6.15
sabsab
Beiträge: 35
Registriert: Mo 21. Feb 2005, 16:10
Wohnort: München
Kontaktdaten:

Beitrag von sabsab »

hi zusammen!

hat denn keiner eine idee wie man ein solches suchmodul bastelt?
ist das wirklich so kompliziert für contenido?
... für mich leider unmöglich :cry:

gruß
sabsab
Contenidoversion 4.6.15
Gesperrt