Seite 1 von 1

Volltextsuche im gleichem Container

Verfasst: Mo 14. Mär 2005, 18:17
von Condor
Hallo,
ich hab da noch ein Problem mit der Volltextsuche. Sie funktioniert prima. Aber da gibts ein kleines Problem. Ich habe die Suchbegriffeingabe unten links. Oben rechts steht ein text wenn man auf die Seite, halt Begrüssung etc. So, ich möchte aber das die gefundenen Sachen nicht in einem Extra Container auftauchen, sondern in dem Container wo der Begrüssungstext steht. Wie kann ich das machen ? Muss ich die Seite refreshen oder so? Hat jemand vll sowas schon gemacht ? Tschüssi :-)

Verfasst: Di 15. Mär 2005, 11:35
von emergence
ein eigenes template machen
dort wo du den begrüssungstext hast kommt das modul mit den suchergebnissen hin...
bei einer suchanfrage musst du dann natürlich genau auf diesen artikel mit dem template für die suchergebnisse verweisen...

Verfasst: Di 15. Mär 2005, 11:42
von Condor
Hi,

ja genau. Aber wie verweise ich das denn ? Ich benutzt folgende Suche:

Modul Für die Eingabe:

Eingabe:

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>";
Ausgabe:

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=\"".$auth->url()."\" > 
<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>"; 
?>
Und das Modul für die Ausgabe:

Eingabe:

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>";
Und Ausgabe:

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>"; 
?>
Muss ich im Quellcode was ändern ? Ich hab schon am Target rumgefummelt, aber das bringt ja nichts. Viellicht hast du eine Lösung. Bis dann.

Verfasst: Di 15. Mär 2005, 22:21
von emergence
wie du es bezeichnest
bei Modul Für die Eingabe - Ausgabe:
<form name=\"suche\" method=\"POST\" action=\"".$auth->url()."\" >

front_content.php?idcat=XX&idart=YY

XX -> id der kategorie
YY -> id des artikels

sieht dann in etwa so aus

<form name=\"suche\" method=\"POST\" action=\"front_content.php?idcat=XX&idart=YY\" >

Verfasst: Di 15. Mär 2005, 23:48
von Condor
Hi,
achso. Da hätte ich auch selber drauf kommen müssen. Vielen dank emergence. Ich werde das aber erst morgen mal ausprobieren, jetzt bin ich zu müde. Nochmals danke für deine Mühe. Tschüssi :D

Verfasst: Di 5. Jul 2005, 16:37
von Käferli
Hallo :D

wie bekomme ich es hin, wenn ich auf die einzelnen Ergebnisse (besagter Volltextsuche) klicke, dass die in einem neuen Fenster angezeigt werden (sozusagen "target_blank")?

DANKE
KÄFERLI
:wink:

Verfasst: Mi 6. Jul 2005, 20:46
von Käferli
kann mir niemand helfen?! :cry:
ich möchte gern, wenn ich mir die einzelnen Ergebnisse anzeigen lassen will, dass sich dazu ein neues fenster öffnet.

Ausgabe des "Ausgabe-Moduls"

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='_BLANK'\"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>"; 
?>
und ich habe in folgender Zeile '_BLANK' eingefügt:

Code: Alles auswählen

if("CMS_VALUE[3]"){echo "TARGET='_BLANK'\"CMS_VALUE[3]\" ";};
...aber irgendwie bringt das nichts... :cry:
Was kann ich tun?

DANKE KÄFERLI
:wink:

Verfasst: Do 7. Jul 2005, 07:14
von emergence
Käferli hat geschrieben:

Code: Alles auswählen

if("CMS_VALUE[3]"){echo "TARGET='_BLANK'"CMS_VALUE[3]" ";};
...aber irgendwie bringt das nichts... :cry:
Was kann ich tun?
ähm

Code: Alles auswählen

echo "TARGET='_BLANK'"CMS_VALUE[3]" ";
ist leider falsch...
sollte

Code: Alles auswählen

echo "TARGET="CMS_VALUE[3]" ";
sein...

abgesehen davon wird das nur angezeigt wenn in der konfiguration ein target angegeben wird... (der letzte konfigurationsparameter)

wenn du immer willst das target angezeigt werden soll ersetzt du

Code: Alles auswählen

if("CMS_VALUE[3]"){echo "TARGET='_BLANK'"CMS_VALUE[3]" ";};
durch

Code: Alles auswählen

echo "TARGET="_blank" ";
sollte gehen...

Verfasst: Do 7. Jul 2005, 07:22
von Käferli
guten morgen emergence,

ein großes dankeschön - es klappt!!! :D


Einen schönen Tag!
:wink:
KÄFERLI