Suche funktionierende Suche

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Sa 5. Mär 2005, 20:51

timo hat geschrieben:und zwar je nach Einstellung des Browsers.
timo, von welcher Einstellung redest du? emergence und ich kennen keine, darueber hatten wir uns weiter oben auch unterhalten. :wink: Ich habe gerade nochmal nachgeschaut, aber ich kann keine Einstellung damit in Zusammenhang bringen. :(

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Sa 5. Mär 2005, 20:55

Im IE-Standard gibt es die nicht, aber es gibt wohl irgendwelche Tools, die die Einstellung verändern können.

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Sa 5. Mär 2005, 21:18

ach so, dann kann ich lange suchen ... :wink:

Cyclist
Beiträge: 90
Registriert: Fr 11. Feb 2005, 14:08
Wohnort: Berlin
Kontaktdaten:

Beitrag von Cyclist » Sa 5. Mär 2005, 22:44

Ich brauche mal wieder etwas Hilfestellung.

Ich habe bei mir folgendes Suchmodul implementiert und Post auf get umgestellt, aber trotzdem funktioniert die Suche (noch) nicht, es wird immer nur die Startseite aufgerufen. Ich habe zwar verstanden, dass noch etwas an den input-Felder geändert werden muss, weiss aber nicht was genau.

Das ist der verwendete Code inkl. der Änderung von Post auf Get:

INPUT:

Code: Alles auswählen

 $linktarget = "CMS_VALUE[1]"; 
$extratext = "CMS_VALUE[2]"; 

if($linktarget == "") { 
   $linktarget = "_self"; 
} 
if($extratext == "") { 
   $extratext = 0; 
} 
?> 
<table> 
   <tr> 
      <td>Linktarget</td> 
      <td> 
         <select name="CMS_VAR[1]"> 
            <option value="_self"<? if(strcmp("_self", $linktarget) == 0) echo " selected"; ?>>gleiches Fenster (_self)</option> 
            <option value="_new"<? if(strcmp("_new", $linktarget) == 0) echo " selected"; ?>>neues Fenster (_new)</option> 
         </select> 
      </td> 
   </tr> 
   <tr> 
      <td>Zusätzlicher Text zum Artikellink</td> 
      <td> 
         <select name="CMS_VAR[2]"> 
            <option value="0"<? if($extratext == 0) echo " selected"; ?>>kein zusätzlicher Text</option> 
            <option value="1"<? if($extratext == 1) echo " selected"; ?>>Artikelkommentar</option> 
            <option value="2"<? if($extratext == 2) echo " selected"; ?>>Anfang des Artikeltextes</option> 
         </select> 
      </td> 
   </tr> 
</table> 
<? 



OUTPUT:

Code: Alles auswählen

<?php 
//$linkziel = "front_content.php?idcat=51"; 
$linkziel = $auth->url(); 

$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"); 

$extratextLength = 200; 


$suchtext = $_GET["suchtext"]; 
?> 

<form name="suche" action="<?= $linkziel ?>" method="get"> 
   <div><span style="font-size: 15px">Erneut suchen:&nbsp;</span> 
   <input name="suchtext" type="text" size="20" value="<?= $suchtext ?>" /> 
   <input name="submit" type="submit" value="Go" /></div><br /><br /> 
</form> 

<?php 
$linktarget = "CMS_VALUE[1]"; 
$extratext = "CMS_VALUE[2]"; 

/* DB Instances */ 
$db = new DB_Contenido; 
$db2 = new DB_Contenido; 

/* Template Instance */ 
cInclude("classes", "class.template.php"); 
$tpl = new Template; 


if($suchtext != "") { 
   while(ereg('  ', $suchtext)) { 
      $suchtext = ereg_replace('  ', ' ', $suchtext); 
   } 
   $suchliste = explode(" ", strtolower($suchtext)); 
   $suchliste = array_diff($suchliste, $ignore_konj, $ignore_art, $ignore); 
   $suchtext = trim(implode(" ", $suchliste)); 

   if($verknuepfung == "oder") { 
      $suchregexp = "(" . str_replace(" ", ")|(", $suchtext) . ")"; 
      $s = ereg_replace("ü", "%FC", strtolower($suchtext)); 
      $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 " . 
            "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 . "')"; 
   } // end if($verkuepfung) 
   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 " . 
            "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'"; 

      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 . "')"; 
      } // end while 
      reset($suchliste); 
   } // end else($verknuepfung) 

   $db->query($sql); 

   if($db->num_rows() != 0){ 
      while($db->next_record()) { 
         if ($auth->auth["uid"] == "nobody"){ 
            $sql2 =   "SELECT " . 
                     "public " . 
                  "FROM " . 
                     $cfg["tab"]["cat_lang"] . " " . 
                  "WHERE " . 
                     "idcat = '" . $db->f("idcat") . "'"; 
            $db2->query($sql2); 

            if($db2->next_record()) { 
               if($db2->f("public") == 0) { 
                  continue; 
               } // end if(public) 
            } // end if(next_record) 
         } // end if(auth nobody) 

         $num = 0 + $db->f("sideid"); 
         $results[$num][link] = "front_content.php?" . 
                              "client=" . $client . 
                              "&lang=" . $lang . 
                              "&idcat=" . $db->f("idcat") . 
                              "&idart=" . $db->f("idart"); 
         $results[$num][title] = $db->f("title"); 

         //anzuzeigenden Text ermitteln 
switch($extratext) { 
   case 0: 
      $results[$num][text] = ""; 
      break; 
   case 1: 
      $results[$num][text] = nl2br($db->f("comment")); 
      break; 
   case 2: 
      $results[$num][text] = capiStrTrimSentence(strip_tags(urldecode($db->f("content")), "<br /><br/><br />"), $extratextLength) . "..."; 
      $results[$num][text] = nl2br($results[$num][text]); 
      break; 
} // end switch 
// unnötige Zeilenumbrüche entfernen 
$results[$num][text] = preg_replace("/(?s)^(\<br(.?)(\/?)\>(\\r\\n)?(\&nbsp;|\040)*)+/", "", $results[$num][text]); 
$results[$num][text] = preg_replace("/(?s)(\<br(.?)(\/?)\>(\\r\\n)?(\&nbsp;|\040)*)+/", "<br />", $results[$num][text]); 


         while(list($key, $val) = each($suchliste)) { 
            $hits[$num] +=   substr_count(strtolower(strip_tags(urldecode($db->f("title")))), $val) + 
                        substr_count(strtolower(strip_tags(urldecode($db->f("comment")))), $val) + 
                        substr_count(strtolower(strip_tags(urldecode($db->f("content")))), $val); 
         } // end while 

         reset($suchliste); 
      } // end while(next_record) 

      if(count($hits) > 0) { 
         //anzahl hits speichern 
         $anzahlhits = count($hits); 

         $hits = array_values($hits); 
         $results = array_values($results); 
         array_multisort ($results, SORT_DESC, SORT_NUMERIC, $hits, SORT_DESC, SORT_NUMERIC); 

      } // end if(count hits) 
   } // end if(num_rows) 


   //Ausgabe----------------- 

   /* Start Output buffer */ 
   ob_start(); 

   if(count($hits) > 0) { 
      $tpl->reset(); 
      $tpl->set('s', 'SUCHTEXT', $suchtext); 
      $tpl->set('s', 'TREFFER', $anzahlhits); 

      for($i = 0; $i < count($hits); $i++) { 
         $tpl->set('d', 'ARTIKELNAME', $results[$i][title]); 
         $tpl->set('d', 'TARGET', $linktarget); 
         $tpl->set('d', 'HREF',  $results[$i][link]); 
         $tpl->set('d', 'TEXT',  $results[$i][text]); 
         $tpl->next(); 
      } 
      $tpl->generate('templates/search_found.html'); 
   } // end if(count hits) 
   else { 
      $tpl->reset(); 
      $tpl->set('s', 'SUCHTEXT', $suchtext); 
      $tpl->generate('templates/search_notfound.html'); 
   } // end else (count hits) 
} // end if(suchtext) 

/* Read out buffer */ 
$html = ob_get_contents(); 

/* Clean buffer */ 
ob_end_clean(); 

/* Output buffer-contents */ 
echo $html; 
?> 

search_found.html (kopieren nach "template"):

Code: Alles auswählen

 
<div> 
   Suchergebnisse für "<strong>{SUCHTEXT}</strong>" 
   <br /> 
   Anzahl Treffer: <strong>{TREFFER}</strong> 
</div> 
<br /> 
<!-- BEGIN:BLOCK --> 
<div> 
   <a href="{HREF}" target="{TARGET}"><strong>{ARTIKELNAME}</strong></a><br /> 
   {TEXT} 
</div> 
<br /> 
<!-- END:BLOCK --> 

search_notfound.html :

Code: Alles auswählen

<div class="text"> 
Es wurden keine mit Ihrer Suchanfrage "<strong>{SUCHTEXT}</strong>" übereinstimmenden Dokumente gefunden 
</div>

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Sa 5. Mär 2005, 22:53

na ja, stellt sich die Frage, was du genau geaendert hast. Denn die weiteren Aenderungen sind davon abhaengig. Bei mir habe ich

Code: Alles auswählen

<form name='suche' method='POST' action='front_content.php?idcatart=254&lang=1&client=1'> 
in

Code: Alles auswählen

<form name='suche' method='GET' action='front_content.php'>
<input type='hidden' name='idcatart' value='254'>
<input type='hidden' name='lang' value='1'>
<input type='hidden' name='client' value='1'>
geaendert.

Mein Angebot mit der von mir eingesetzten Suche steht uebrigens immer noch. Es gibt nur zwei Module, fuer Ein- und Ausgabe (jeweils mit Ein- und Ausgabe), dafuer braucht man keine zusaetzlichen Dateien (das finde ich persoenlich immer so unuebersichtlich, denn es ist mir mehr als einmal passiert, dass ich ein Modul auf einer anderer Site einsetzen wollte, und da stellte sich heraus, dass ich vergessen habe, die eine oder andere zugehoerige Datei zu kopieren).

Cyclist
Beiträge: 90
Registriert: Fr 11. Feb 2005, 14:08
Wohnort: Berlin
Kontaktdaten:

Beitrag von Cyclist » Sa 5. Mär 2005, 23:19

Danke, das wars. Ich hatte zuerst idcat und idcatart vewechselt, darum ging es bei mir nicht... ich merke ich muss noch viel lernen ;) Danke!

Bei deinem Suchmodul wird nur der Titel ausgegeben oder kann man das einstellen? Mir wäre es auch lieber ohne extra Dateien, aber ich würde eben gerne auch den Untertitel angezeigt bekommen.

smhh
Beiträge: 12
Registriert: Fr 3. Feb 2006, 00:20
Wohnort: Hamburg
Kontaktdaten:

So hier nun die Lösung

Beitrag von smhh » Do 23. Mär 2006, 22:59

Hier das Template für die Sucheingabe

Code: Alles auswählen

<div id="searchbox">
<form method="get" action="{SEARCH_URL}" style="padding:0;margin:0;" name="formsearch" id="formsearch">
<input type="hidden" name="idcat" value="{ZIELSEITE}"> 
<input type="hidden" name="lang" value="1"> 
<input type="hidden" name="client" value="1">		
		<table border="0" cellspacing="0" cellpadding="0">
			<tr>
				<td><img src="images/blank.gif" width="70" height="1" border="0"/></td>
				<td><img src="images/blank.gif" width="73" height="1" border="0"/></td>
				<td><img src="images/blank.gif" width="1" height="1" border="0"/></td>
			</tr>
			<tr>
				
        <td width="20" align="right"> 
          <label for="searchterm" class="label_searchbox">{SEARCH_TITLE}</label></td>
				<td><input type="text" name="searchterm" id="searchterm" value="" class="input_searchbox"/></td>
				<td><a href="javascript:document.forms['formsearch'].submit();" style="color: #9d9ea2;">{SEARCH_START}</a>&nbsp;<a href="javascript:document.forms['formsearch'].submit();"><img src="images/navi_pfeil_rechts.gif" alt="{SEARCH_TITLE}" title="{SEARCH_TITLE}" border="0"/></a></td>
			</tr>
		</table>
	</form>
</div>


Das Modul Sucheingabe dann so :
OUTPUT

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      Sucheingabe
* Author(s)   :     Andreas Lindner
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     09.08.2005
************************************************/

#Includes
cInclude('classes', 'class.template.php');

#Settings
$template = 'sucheingabe.html';
$cApiClient = new cApiClient($client);
$selected = $cApiClient->getProperty("search","resultpage");


if ( !is_object($tpl) ) {
    $tpl = new Template;
}
$tpl->reset();

//$url = $sess->url("front_content.php?idcat=".$selected);

//$url = $sess->url("front_content.php);

if($_POST['searchterm']!=''){
	$searchterm = $_POST['searchterm'];
}else{
	$searchterm = $_GET['searchterm'];
}

$tpl->set('s', 'SEARCH_TITLE', mi18n("Suche"));	
$tpl->set('s', 'SEARCH_URL', $url);	
$tpl->set('s', 'SEARCH_START', mi18n("Go"));
$tpl->set('s', 'ZIELSEITE', $selected);	

$tpl->generate('templates/'.$template);

?>
funkzt wunderbar !! :P

Hoffe Euch geholfen zu haben :D

Gesperrt