Seite 1 von 1

Suchmodul: Wie komme ich zurück auf die "Ergebnisseite&

Verfasst: Mi 22. Sep 2004, 14:08
von uups
Ich habe ein Suchmodul eingebaut welches eigentlich auch ohne Probleme funktioniert.

Allerdings habe ich ein kleines Problem: Wenn ein Link der Suchergebnisse angeklickt wird und man anschliessend mit dem "zurück"-Button des Browsers wieder auf die Ergebnisseite will kommt die allg. bekannte Meldung: "Achtung: Seite ist nicht mehr gültig"!

Ich treffe aber immer wieder Sites (auch in Contenido erstellte) bei denen es funktioniert...

Auf das Risiko hin, dass ich mich blamiere: Kann mir jemand sagen, wie ich das bewerkstelligen kann? :oops:


Danke

Uups...

Verfasst: Mi 22. Sep 2004, 14:12
von kummer
das kommt einfach darauf an, ob du die daten mit POST oder GET übergibst. mit POST kriegst du diese meldung, mit GET nicht. das ist die methode, die im suchformular angegeben ist.

Verfasst: Mi 22. Sep 2004, 14:34
von uups
Die Daten werden per "POST" übergeben! Allerdings reicht es scheinbar nicht aus einfach "GET" einzufügen, da er natürlich die Seite mit diesem String dann nicht findet!

...ist übrigens das gleich Modul, welches ihr auf eurer Site auch verwendet...

Evtl. kennt jemand ein Modul das anders aufgebaut ist...?


Uups...

Verfasst: Mi 22. Sep 2004, 14:41
von kummer
doch das reicht!

Verfasst: Mi 22. Sep 2004, 14:56
von uups
Na dann mach ich wohl etwas falsch!

Meine Suchseite ist hier:
http://www.domainname.ch/cms/front_content.php?idcat=31

Wenn ich nur per "get" das Suchwort "irgendwas" übergebe, generiert das Modulden folgenden Link:
http://www.domainname.ch/cms/front_cont ... epfung=und

--> Diese Seite erzeugt dann bei mir einen error 404 bzw. ich werde zur Startseite umgeleitet...

Verfasst: Mi 22. Sep 2004, 15:02
von timo
da fehlt wohl noch idcat und idart...

Verfasst: Do 23. Sep 2004, 17:58
von uups
Ich habe vergeblich versucht den Output anzupassen...

Vielleicht kann mir jemand einen Tipp geben? Also die Änderung von "post" zu "get" ist mir ja noch klar. Aber wo ich die Änderungen machen muss, dass im String das auch "idcat" und "idart" mitgegeben werden weiss ich nicht... :oops:

Hier ist der Code:

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 style="width:250px; padding-bottom:10px; vertical-align:top;"><input type="text" size="30" name="suche" value="'.$suche.'" background-color:#FFFFFF; height:20px;"></td> 
<td style="width:220px;text-align:left; vertical-align:top;"><button type="submit" style="border:1px solid #0099CC; background-color:#EEEEEE; height:20px;">suchen</button></td> 
</tr> 
<tr> 
<td colspan=2><input type="radio" name="verknuepfung" value="und" checked>&nbsp; UND-Verknüpfung (<i>alle</i> Begriffe müssen enthalten sein)</td> 
</tr> 
<tr> 
<td colspan=2><input type="radio" name="verknuepfung" value="oder">&nbsp; ODER-Verknüpfung (<i>mindestens ein</i> Begriff muss enthalten sein)</td> 
</tr> 
<tr> 
<td colspan=2><p><br>Durchsucht werden alle Seiten dieses Webs, nicht jedoch die Inhalte von PDF-Dateien.</p> 
<p>Groß-/Kleinschreibung wird ignoriert, Wörter wie "und", "der" etc. werden aus der Suchliste gestrichen.</p></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=subheadline>Suchergebnisse<br><br></td></td>'; 
$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 style=\"text-align:left; padding-bottom:5px;\"><img src=images/nav_button_2.gif border=0><a href=\"".$results[$i][link]."\""; 
if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";}; 
echo ">".$results[$i][title]."</a> <br />"; 
echo $results[$i][text]; 

echo "</td></tr>"; 
}; 
} else { echo "<tr><td align=center><p><b>Keine passenden Seiten gefunden</b></p></td></tr>"; }; 
} else { echo "<tr><td align=center><p><b>Keine passenden Seiten gefunden</b></p></td></tr>"; }; 
echo '</table>'; 
} 
?>

Verfasst: Sa 25. Sep 2004, 12:23
von uups
Für einen kleinen Tipp wäre ich dankbar!

Uups...