Ausgabe von Suchergebnissen in einen anderen Container

Gesperrt
maec
Beiträge: 15
Registriert: Fr 29. Nov 2002, 20:25
Kontaktdaten:

Ausgabe von Suchergebnissen in einen anderen Container

Beitrag von maec » Fr 29. Nov 2002, 20:32

Hallo alle zusammen,

ich bin grad dabei meinen ersten Versuch mit Contenido zu wagen und bin bisher ganz gut weit gekommen. Doch jetzt hab ich ein kleines Problem. Ich hab das Volltextsuche Modul eingebaut und es einem Container zugewiesen. Dieser ist in einer rechten Seitenleiste. Die Ausgabe erfolgt direkt unter dem Such-Form. Ich möchte aber die Ausgabe gerne in meinem mittleren Bereich ausgeben. Die Seite ist ohne Frames, nur durch Tabellen realisiert und dadurch "relativ" komplex.

Nach meiner Vermutung müsste die Seite neu aufgerufen werden und die Augabe der Suchergebnisse in einem anderen Container erfolgen.

Wie kann man das am besten realisieren???

Vielen Dank!

Eisi
Beiträge: 102
Registriert: So 3. Nov 2002, 18:50
Kontaktdaten:

Beitrag von Eisi » So 1. Dez 2002, 20:26

Als learning-by-doing-Laie würd mir folgendes zusammenbasteln und die Suchergebnisse in einen String schreiben und den an anderen Stelle ausgeben. Also bspw. statt echo "blablaa Suchergebnisse blabla" im Suchmodul, bloß $suchergebnis = "blablaa Suchergebnisse blabla" und an der Stelle wo es hin soll dann echo $suchergebnis.

Wenn der String leer ist, wird nichts ausgegeben. Der String kann auch das komplette Ausgabe-Layout (Tabellen, etc.) enthalten.

Wie sehen das die Profis? :)
Alles über Final Fantasy 7 und 9:
www.Zeitzumspielen.de

Veranstaltungsmanagement an der FH Osnabrück:
www.VamosOnline.de

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Beitrag von idea-tec » So 1. Dez 2002, 21:33

dann hast du das Problem, dass du den Content der Seite hast und dann die Suchergebnisse oder umgedreht...

was man natürlich auch machen kann ist, dass man in den Layouts die suchstring-abfrage und den content in eine else-if-abfrage packt ... entweder die suchabfrage (wenn gesetzt) oder den content...
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

maec
Beiträge: 15
Registriert: Fr 29. Nov 2002, 20:25
Kontaktdaten:

Beitrag von maec » Mo 2. Dez 2002, 16:43

Ja, ich glaube das mit der Varible und der If ... else Anweisung ist ne gute Idee. Ich hab auch mal ein paar Tage drüber geschlafen und da ist mir eingefallen, dass ja die Seite neu geladen wird. Ich dachte zwar an eine Java-Script Anweisung, aber warum einfach mit PHP wenn es auch umständlich geht :D

Ich werd mich gleich mal ransetzen und es mal ausprobieren. Wenn die Seite dann mal online ist, könnt Ihr ja das Ergebnis mal ansehen. Link folgt hier.

Vielen lieben Dank an Euch!

Bis bald

Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b » Di 3. Dez 2002, 13:08

sorry dass ich mich erst jetzt melde...
ich hatte anfangs mal vor, zu dem Suchmodul auch ein Quicksearch-Modul einzubauen. Also einfach nur das Suchfeld.

letztlich teilst du das Suchmodul nur in zwei Teile:
Teil 1 (nur Eingabefeld):

Code: Alles auswählen

Kein Input

OUTPUT:
echo "<center><table width=\"80%\" border=\"1\"><tr><td align=center>
<form name=\"suche\" method=\"POST\" action=\"".$auth->url()."\" >
<input type=\"text\" size=\"9\" style=\"width:120px\" name=\"suche\" value=\"$suche\"> 
<INPUT TYPE=\"submit\" VALUE=\"Suchen\"></FORM></td></tr></table>";
Teil 2 (das Suchmodul)

Code: Alles auswählen

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

OUTPUT:
if($suche){
	echo "<center><table width=\"80%\" border=\"1\">";
	$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.idside AS idside,A.summary AS comment,B.idcat AS idcat,C.parentid AS parentid,D.value AS content,A.idsidelang AS sideid ";
	$sql .= "FROM $cfgTab_side_lang AS A,$cfgTab_cat_side AS B,$cfgTab_cat AS C,$cfgTab_content AS D ";
	$sql .= "WHERE A.idside=B.idside AND A.idsidelang=D.idsidelang 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')";
	$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 $cfgTab_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&lang=$lang&parent=".$db->f("parentid")."&subid=".$db->f("parentid")."&idcat=".$db->f("idcat")."&idside=".$db->f("idside")."";
			$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><a href=\"".$results[$i][link]."\" id=\"fontCMS_VALUE[0]\"";
				if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";};
				echo ">".$results[$i][title]."</a> <span id=\"fontCMS_VALUE[1]\">(".$hits[$i]." Treffer)<BR>";
				echo $results[$i][text]."</span></td></tr>";
			};
		} else { echo "<tr><td align=center>Keine passenden Seiten gefunden</td></tr>"; };
	} else { echo "<tr><td align=center>Keine passenden Seiten gefunden</td></tr>"; };
	echo "</table></center>";
};
Nennen wir den ersten Teil mal "Eingabe" und den zweiten Teil mal "Ausgabe". Du kannst jetzt Eingabe und Ausgabe auf jeder Seite einbinden. Bei Frameset musst du entsprechend das Formular-Ziel ändern.
Durch die IF-Abfrage am Anfang des Ausgabe-Moduls erfolgt nur dann eine Ausgabe, wenn auch was in die Eingabe eingegeben wurde. Somit kannst du deine Suchfunktion überall anbieten.
Alternativ kannst du natürlich auch im Eingabe-Modul den FORM-Link ändern auf die normale front_content.php und dann idcat, idside und subid per hidden-Feld übergeben. Somit kannst du die Ausgabe der Suchergebnisse z.b. auf einer Unterseite einbauen. Wenn du die darüberliegende Kategorie noch versteckst bzw. Oflline schaltest, ist die Seite im normalen Betrieb unsichtbar.

Ich hoffe das klappt so wie ichs jetzt geschrieben habe - ich konnte es grad nich testen.
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de

ZIZO
Beiträge: 13
Registriert: Mo 23. Dez 2002, 08:15
Kontaktdaten:

Beitrag von ZIZO » Sa 28. Dez 2002, 21:24

@Sven777b
funktioniert einwandfrei
Nicht immer bin ich gut drauf um meine Sig zu befüllen.

JUG
Beiträge: 113
Registriert: Fr 20. Sep 2002, 12:24
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von JUG » Fr 10. Jan 2003, 15:33

Sven777b hat geschrieben:[...]Alternativ kannst du natürlich auch im Eingabe-Modul den FORM-Link ändern auf die normale front_content.php und dann idcat, idside und subid per hidden-Feld übergeben.[...]
Kannst du das büdde büdde für Dummies erklären? :roll:

Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b » Fr 10. Jan 2003, 18:30

damit meinte ich , dass man den oberen Teil so gestalten kann:

Code: Alles auswählen

$ziel_idside = 10;
$ziel_idcat = 2;
$ziel_subid = $idcat;
echo "<center><table width=\"80%\" border=\"1\"><tr><td align=center> 
<form name=\"suche\" method=\"POST\" action=\"front_content.php\" > 
<input type=\"text\" size=\"9\" style=\"width:120px\" name=\"suche\" value=\"$suche\">
<input type=\"hidden\" name=\"idcat\" value=\"$ziel_idcat\">
<input type=\"hidden\" name=\"idside\" value=\"$ziel_idside\">
<input type=\"hidden\" name=\"subid\" value=\"$ziel_subid\">
<INPUT TYPE=\"submit\" VALUE=\"Suchen\"></FORM></td></tr></table>"; 
das hat quasi den Effekt, dass das Formular umgeleitet wird auf die angegebene Seite. Dort kannst du dann das Ausgabe-Modul platzieren.
id_cat und id_side bekommst du im Backend in der Seitenübersicht raus, indem du mal über einen Link zu der entsprechenden Seite fährst. Die Subid wird automatisch definiert, weil das meist die idcat ist, von der du kommst. subid wird nur für das Standard-Hauptmenü benötigt.
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de

JSIT
Beiträge: 15
Registriert: Di 4. Feb 2003, 16:14
Wohnort: Pfinztal
Kontaktdaten:

Suche Modul erweitert

Beitrag von JSIT » Sa 15. Feb 2003, 12:47

Hallo!
ich habe die Version etwas erweiter um nicht die Seite suchen zu müssen per Maus ;-)

hier meine Quicksuche!

Code: Alles auswählen

TITEL: Suche Quick

INPUT:
echo "<select name=\"CMS_VAR[1]\" size=\"7\">";
if ("CMS_VALUE[1]" != 0) {echo "<option value=\"0\">--- aktuell ---</option>";} else {echo "<option value=\"0\" selected>--- aktuell ---</option>";}
$sql = "SELECT A.idcat, A.level, C.name FROM $cfgTab_cat_tree AS A, $cfgTab_cat AS B, $cfgTab_cat_lang AS C WHERE A.idcat=B.idcat AND B.idcat=C.idcat AND C.idlang='$lang' AND B.idclient='$client' ORDER BY A.idtree";
$db->query($sql);
while ($db->next_record()) {$spaces = "";
  for ($i=0; $i<$db->f("level"); $i++) {
  $spaces = $spaces . "&nbsp;&nbsp;";}
if ( $db->f("idcat") == "CMS_VALUE[1]") {echo "<option value=\"".$db->f("idcat")."\" selected>$spaces ".$db->f("name")."</option>";} else {echo "<option value=\"".$db->f("idcat")."\">$spaces ".$db->f("name")."</option>";}}
echo "  </select>";

OUTPUT:
$ziel_idcat = "CMS_VALUE[1]"; 
$ziel_subid = $idcat; 
echo "<form name=\"suche\" method=\"POST\" action=\"front_content.php\"> 
<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tr><td>
<input type=\"text\" size=\"9\" name=\"suche\" value=\"$suche\" id=\"sucheinputquick\"></td><td><INPUT TYPE=\"image\" SRC=\"".$cfgPathFrontendImg."suche.gif\" WIDTH=\"18\" HEIGHT=\"19\" BORDER=\"0\" VALUE=\"Suchen\" id=\"suchegoquick\"></td></tr></table>
<input type=\"hidden\" name=\"idcat\" value=\"$ziel_idcat\">
<input type=\"hidden\" name=\"subid\" value=\"$ziel_subid\">
</FORM>"; 
Ich habe einen neuen Strukturbaum angelegt mit den Hidden Seiten und leite die Suchergebnisse auf die Seite Suchen um, die unter "extern" liegen.
Ich habe alles mit CSS formatiert, so kann man das Design gut anpassen ;-)

Viel Spass
Jörg
###############
www.jsit.de
www.phpnet.de
www.MailReader.de
################

Gesperrt