Volltextsuche im gleichem Container

Gesperrt
Condor
Beiträge: 107
Registriert: Mo 14. Mär 2005, 17:31
Kontaktdaten:

Volltextsuche im gleichem Container

Beitrag 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 :-)
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag 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...
*** make your own tools (wishlist :: thx)
Condor
Beiträge: 107
Registriert: Mo 14. Mär 2005, 17:31
Kontaktdaten:

Beitrag 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.
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag 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\" >
*** make your own tools (wishlist :: thx)
Condor
Beiträge: 107
Registriert: Mo 14. Mär 2005, 17:31
Kontaktdaten:

Beitrag 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
Käferli
Beiträge: 196
Registriert: Mo 15. Mär 2004, 21:37
Kontaktdaten:

Beitrag 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:
Käferli
Beiträge: 196
Registriert: Mo 15. Mär 2004, 21:37
Kontaktdaten:

Beitrag 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:
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag 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...
*** make your own tools (wishlist :: thx)
Käferli
Beiträge: 196
Registriert: Mo 15. Mär 2004, 21:37
Kontaktdaten:

Beitrag von Käferli »

guten morgen emergence,

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


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