Seite 1 von 1
Probleme mit meinem Suchmodul
Verfasst: Di 15. Feb 2005, 19:46
von clemens
hallo. ich hab ein problem mit meinem such-modul.
wenn ich einen begriff suche, so wird dieser auf der seite mit dem suchausgabe modul auch angezeigt, wenn ich dann allerdings auf den link klicke, kommt eine fehlermeldung vom internet explorer.
ich schätze, ich habe im modul eine falsche url eingebaut.
könnte mir bitte jemand sagen, was ich da tun könnte?
danke im voraus!
Verfasst: Di 15. Feb 2005, 20:00
von Halchteranerin

Wenn du dein Modul veroeffentlichst, kann man dir vielleicht auch sagen, was du falsch gemacht haben koenntest.
Weitere Infos zum Thema "Wie stelle ich gute Fragen" findest du hier:
http://www.contenido.org/forum/viewtopic.php?p=4821
Verfasst: Di 15. Feb 2005, 20:06
von clemens
sorry.
das ist mein suchausgabe-modul:
Code: Alles auswählen
<?php
echo "<table border=0 cellpadding=4 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);
$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,
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] = "index.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 bgcolor=\"#6BB100\"><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><br> <b><span class='subnavi'>(".$hits[$i]." Treffer)<BR><img src=images/line_orange.gif><br>";
echo $results[$i][text]."</span></b></td></tr>";
};
} else { echo "<tr><td class='text' align=center>Keine passenden Seiten gefunden.<br>Versuchen Sie es doch einfach mit einem anderen Suchbegriff.</td></tr>"; };
} else { echo "<tr><td class='text' align=center>Keine passenden Seiten gefunden.<br>Versuchen Sie es doch einfach mit einem anderen Suchbegriff.</td></tr>"; };
};
echo "</table>";
?>
Verfasst: Di 15. Feb 2005, 22:03
von HerrB
Versuche mal
Code: Alles auswählen
$results[$num][link] = $sess->url("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");
statt
Code: Alles auswählen
$results[$num][link] = "index.php?client=$client&lang=$lang&parent=".$db->f("parentid")."&idcat=".$db->f("idcat")."&idart=".$db->f("idart")."";
$results[$num][title] = $db->f("title");
Gruß
HerrB
Verfasst: Mi 16. Feb 2005, 06:29
von clemens
leider funkt das auch nicht!
Verfasst: Mi 16. Feb 2005, 06:30
von clemens
auch jetzt gibt es die 404er seite nach dem klick auf den link.
Verfasst: Do 17. Feb 2005, 14:51
von HerrB
Ähm, kannst Du mal den Link zu Deiner Seite posten (oder via PM). Muss ja irgendwo Murx rauskommen.
Gruß
HerrB
Verfasst: Do 17. Feb 2005, 14:54
von clemens
Verfasst: Do 17. Feb 2005, 15:10
von HerrB
Also zum einen erscheint bei mir immer noch index.php im Link, zum anderen (ich hatte mir den Link gar nicht näher angesehen...) ist da eine Angabe zu viel.
Versuche mal:
Code: Alles auswählen
$sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")."&idart=".$db->f("idart")."";
Wenn es dann nicht geht, muss ich mir den Code nochmal ansehen...
Gruß
HerrB
Verfasst: Do 17. Feb 2005, 15:22
von clemens
jetzt sieht mein code so aus und es geht überhaupt nix mehr. nur noch weiße seite.
[code]
<?php
echo "<table border=0 cellpadding=4 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);
$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,
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");
$sess->url("front_content.php?client=$client&lang=$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(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 bgcolor=\"#6BB100\"><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><br> <b><span class='subnavi'>(".$hits[$i]." Treffer)<BR><img src=images/line_orange.gif><br>";
echo $results[$i][text]."</span></b></td></tr>";
};
} else { echo "<tr><td class='text' align=center>Keine passenden Seiten gefunden.<br>Versuchen Sie es doch einfach mit einem anderen Suchbegriff.</td></tr>"; };
} else { echo "<tr><td class='text' align=center>Keine passenden Seiten gefunden.<br>Versuchen Sie es doch einfach mit einem anderen Suchbegriff.</td></tr>"; };
};
echo "</table>";
?>
[/code]
Verfasst: Do 17. Feb 2005, 16:46
von clemens
vielen dank für die bemühungen.
es funktioniert jetzt.
Verfasst: Do 17. Feb 2005, 18:41
von HerrB
Fehlte wohl noch das $results[$num][link] =?
Gruß
HerrB