[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Suche über rex_search.inc - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
gerd01
Beiträge: 12
Registriert: 11. Nov 2004, 14:53
Kontaktdaten: Website

Suche über rex_search.inc

10. Feb 2005, 12:53

hi,

habe ein kleines Problem, welches ich nicht verstehe. Ich habe die Suche in die Seite integriert, jedoch sollte die Suche laut der sql-anweisung in ihr keine offline seiten anzeigen, dies passiert aber trotzdem.

Code: Alles auswählen

SELECT

	        rex_article.id,rex_article.name,rex_article.beschreibung,
		rex_article_slice.value1,rex_article_slice.value2,rex_article_slice.value3,
		rex_article_slice.value4,rex_article_slice.value5,rex_article_slice.value6,
		rex_article_slice.value7,rex_article_slice.value8,rex_article_slice.value9,

	        (FIND_IN_SET('$KEYWORD',REPLACE(rex_article.name,' ',',')) * 10) +
	        (FIND_IN_SET('$KEYWORD',REPLACE(rex_article.beschreibung,' ',',')) * 5) +
	        (FIND_IN_SET('$KEYWORD',REPLACE(rex_article.suchbegriffe,' ',',')) * 5) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value1,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value2,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value3,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value4,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value5,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value6,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value7,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value8,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value9,' ',','))
	        AS COUNTWORD

	        FROM rex_article_slice

	        LEFT JOIN rex_article ON rex_article.id=rex_article_slice.article_id

	        WHERE

	        (
	        rex_article.name LIKE ('%$KEYWORD%') OR
	        rex_article.beschreibung LIKE ('%$KEYWORD%') OR
	        rex_article.suchbegriffe LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value1 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value2 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value3 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value4 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value5 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value6 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value7 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value8 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value9 LIKE ('%$KEYWORD%')
	        )

	        AND status = 1

			$ADD_AREA

	        GROUP BY id

	        ORDER BY COUNTWORD DESC
mir ist jetzt aufgefallen, dass oben das feld status nirgendwo eingelesen wird. habe es auch versucht hinzuzufügen jedoch ohne erfolg, wer weiss rat? er listet dennoch offline inhalte auf! :-(

gruß gerd bahl

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

15. Feb 2005, 16:48

gibt dir doch mal den SQL aus den du produzierst und setzte ihn mit einem SQL Editor ab

gerd01
Beiträge: 12
Registriert: 11. Nov 2004, 14:53
Kontaktdaten: Website

15. Feb 2005, 22:20

hi,

also zur erklärung, ich habe bemerkt, dass das statusfeld nicht mit in der sql anfrage ausgegeben wird, eben so gemacht wie du es sagst, das war auch mein gedankengang, es mit werten ausgeben zu lassen. das feld (status für online/offline) fehlt einfach, jetzt aber zu einem anderen phenomän:

der fehler liegt im detail. die kategorie ist offline, also muss ja auch der startartikel offline gestellt werden, dieser steht aber auf online laut mysql-front

[hallo jan, ich winke! :-)]

gruß gerd

Benutzeravatar
Jan.Kristinus
Admin
Beiträge: 2166
Registriert: 24. Aug 2004, 22:11
Wohnort: Frankfurt
Kontaktdaten: ICQ Website

15. Feb 2005, 23:17

hi,
der fehler liegt im detail. die kategorie ist offline, also muss ja auch der startartikel offline gestellt werden, dieser steht aber auf online laut mysql-front
das stimmt.. ;) laesst sich aendern. über die structure.inc.php und dort bei category status auch den status des startartikels dementsprechend setzen.. (braucht ein wenig php kenntnisse.. hat jemand zeit das zu machen und ins cvs zu spielen ?) habe leider nicht die zeit das im moment genauer zu erklaeren..

in der naechsten version wird es (technisch gesehen) keine kategorien mehr geben, d.h. es gibt nur artikel - auch wenn es in der verwaltung noch "kategorien" gibt sind dies im endeffekt nur noch artikel. dann kann dieses problem (wie auch weitere) nicht mehr auftauchen. aber bis dahin heisst es leider erstmal warten..

gruss

jan

gerd01
Beiträge: 12
Registriert: 11. Nov 2004, 14:53
Kontaktdaten: Website

16. Feb 2005, 00:32

danke,

php-kenntnisse vorhanden, also kein problem, nur cvs kenntnisse keine! :D


hier die geänderte fassung, bzw. ein teil daraus! einfach diese zeile in der datei:

root->redaxo->include->pages->structure.inc.php

suchen:

Code: Alles auswählen

if ($function == "status" && $STRUCTURE_PERM && $edit_id != "")
und dann den kompletten if-block durch diesen austauschen:

Code: Alles auswählen

if ($function == "status" && $STRUCTURE_PERM && $edit_id != "")
{
	$KAT->setQuery("select * from rex_category where id='$edit_id'");
	if ($KAT->getRows() == 1)
	{
		if ($KAT->getValue("status")==1)
		{
			$KAT->query("update rex_category set status='0' where id='$edit_id'");
			$KAT->query("update rex_article set status='0' where category_id='$edit_id'");
		}
		if ($KAT->getValue("status")==0)
		{
			$KAT->query("update rex_category set status='1' where id='$edit_id'");
			$KAT->query("update rex_article set status='1' where category_id='$edit_id'");
		}
		$message = $I18N->msg("category_status_updated");

		generateCategory($edit_id);

	}else
	{
		$message = $I18N->msg("no_such_category");
	}
}
jetzt noch die SQL-Anfrage von oben in

root->redaxo->include->functions->function_rex_search.inc.php

durch diese ersetzen:

Code: Alles auswählen

	        SELECT

	        rex_article.status,rex_article.id,rex_article.name,rex_article.beschreibung,
		rex_article_slice.value1,rex_article_slice.value2,rex_article_slice.value3,
		rex_article_slice.value4,rex_article_slice.value5,rex_article_slice.value6,
		rex_article_slice.value7,rex_article_slice.value8,rex_article_slice.value9,

	        (FIND_IN_SET('$KEYWORD',REPLACE(rex_article.name,' ',',')) * 10) +
	        (FIND_IN_SET('$KEYWORD',REPLACE(rex_article.beschreibung,' ',',')) * 5) +
	        (FIND_IN_SET('$KEYWORD',REPLACE(rex_article.suchbegriffe,' ',',')) * 5) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value1,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value2,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value3,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value4,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value5,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value6,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value7,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value8,' ',',')) +
	        FIND_IN_SET('$KEYWORD',REPLACE(rex_article_slice.value9,' ',','))
	        AS COUNTWORD

	        FROM rex_article_slice

	        LEFT JOIN rex_article ON rex_article.id=rex_article_slice.article_id

	        WHERE

	        (
	        rex_article.name LIKE ('%$KEYWORD%') OR
	        rex_article.beschreibung LIKE ('%$KEYWORD%') OR
	        rex_article.suchbegriffe LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value1 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value2 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value3 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value4 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value5 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value6 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value7 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value8 LIKE ('%$KEYWORD%') OR
	        rex_article_slice.value9 LIKE ('%$KEYWORD%')
	        )

	        AND `rex_article`.`status` = 1

			$ADD_AREA

	        GROUP BY id

	        ORDER BY COUNTWORD DESC
FERTIG! :-)

gruß gerd

ps: der hinweis, wo es zu finden war, hat mir sehr viel weitergeholfen, danke jan! :wink:

Zurück zu „Allgemeines [R3]“