Jump to content
xt:Commerce Community Forum

Fehler in der Suchfunktion


kompaktor

Recommended Posts

Moin Community.

Hab schon die Forum-Suche benutzt aber nichts gefunden.

Mir sind 2 Fehler in der Suchfunktion aufgefallen.

1. Wenn ich nach einem Artikel suche werden auch inkative Artikel angezeigt.

2. Wenn bei der Suche nichts gefunden wurde wird im Hauptbereich nichts angezeigt, genauso wie bei einer leeren Kategorie.

Über Tipps/Tricks würde ich mich sehr freuen.

jb

Link to comment
Share on other sites

  • 2 weeks later...

Hallo Community,

wir haben das gleiche Problem. Artikel die auf Status ROT also inaktiv sind, werden dem Kunden in den Kategorien nicht angezeigt. Wenn der Kunde aber über die Suchfunktion sucht, werden auch die inaktiven Artikel angezeigt.

Uns ist das passiert, bei Artikeln bei denen wir noch keinen Preis angelegt hatten. Die Artikel waren gesperrt und sind in den Kategorien auch nicht aufgetaucht. Der Kunde hat diese Artikel aber über die Suchfunktion des Shops gefunden und diese dann für 0,00 Euro bestellt.

Danke für die Hilfe

Link to comment
Share on other sites

Hallo Matt,

danke für die schnelle Antwort.

Entschuldige ein kleiner Fehler - die ganze Kategorie war inaktiv, wurde also nicht angezeigt. In der Kategorie waren dann noch Artikel mit 0 Euro die aktiv waren (diese Artikel waren auch nur in dieser Kategorie). Diese Artikel konnte der Kunde über die Kategorien natürlich nicht finden, da die Kategorie inaktiv war. Hat der Kunde aber ein Suchwort eingegeben, das in der Artikelbeschreibung des Artikels vorkam, wurde der Artikel unter Suchergebnisse angezeigt.

Björn

Link to comment
Share on other sites

Hallo Björn!

Mit einer deaktivierten Kategorie kann ich es in der Tat auch nachvollziehen. Ich würde das als Bug einstufen, ob das xtC-Team das auch so sieht, keine Ahnung.

Ein Fix ist nicht weiter schwierig, in die SQL-Abfrage muss nur die zusätzliche Überprüfung eingebaut werden, ob das Kategorie aktiv ist. Ist aber aus der Hüfte geschossen, ob das wirklich so funktioniert kann ich morgen mal testen.

Spielt sich alles in advanced_search_results.php ab.

	$from_str  = "FROM ".TABLE_PRODUCTS." AS p LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION." AS pd ON (p.products_id = pd.products_id) ";

in

 $from_str  = "FROM ".TABLE_PRODUCTS." AS p, ".TABLE_PRODUCTS_TO_CATEGORIES." as pc, ".TABLE_CATEGORIES." as c LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION." AS pd ON (p.products_id = pd.products_id) ";

ändern (Zeile 179), sowie

	$where_str = " WHERE p.products_status = '1' "." AND pd.language_id = '".(int) $_SESSION['languages_id']."'".$subcat_where.$fsk_lock.$manu_check.$group_check.$tax_where.$pfrom_check.$pto_check;

in

$where_str = " WHERE p.products_status = '1' "." AND p.products_id = pc.products_id AND pc.categories_id = c.categories_id AND c.categories_status=1 AND pd.language_id = '".(int) $_SESSION['languages_id']."'".$subcat_where.$fsk_lock.$manu_check.$group_check.$tax_where.$pfrom_check.$pto_check;

ändern.

Ist aber nur die halbe Miete, das Problem, das sich ein Produkt aufrufen läßt, obwohl es in einer deaktivierten Kategorie steht, bleibt. Kann z.B. auftreten, wenn ein Produkt in die Bookmarks gelegt wurde und später die Kategorie deaktiviert wurde.

Dazu sind Anpassungen in includes/classes/product.php notwendig.

Die in Zeile 44 beginnende $product_query

		$product_query = "select * FROM ".TABLE_PRODUCTS." p,
".TABLE_PRODUCTS_DESCRIPTION." pd
where p.products_status = '1'
and p.products_id = '".$this->pID."'
and pd.products_id = p.products_id
".$group_check.$fsk_lock."
and pd.language_id = '".(int) $_SESSION['languages_id']."'";[/php]

ist zu ersetzen durch

[php] $product_query = "select distinct p.*, pd.* FROM ".TABLE_PRODUCTS." p,
".TABLE_PRODUCTS_DESCRIPTION." pd,
".TABLE_PRODUCTS_TO_CATEGORIES." pc,
".TABLE_CATEGORIES." c
where p.products_status = '1'
and p.products_id = '".$this->pID."'
and p.products_id = pc.products_id
and pc.categories_id = c.categories_id
and c.categories_status = 1
and pd.products_id = p.products_id
".$group_check.$fsk_lock."
and pd.language_id = '".(int) $_SESSION['languages_id']."'";

Matt

Link to comment
Share on other sites

Funktioniert aber leider nicht. Zumindest nicht bei mir...

Allein schon die Änderungen in der advanced_search_result.php führen zu folgender Fehlermeldung:

1054 - Unknown column 'p.products_id' in 'on clause'


SELECT distinct p.products_id, p.products_price, p.products_model, p.products_quantity, p.products_shippingtime, p.products_fsk18, p.products_image, p.products_weight, p.products_tax_class_id, pd.products_name, pd.products_short_description, pd.products_description FROM products AS p, products_to_categories as pc, categories as c LEFT JOIN products_description AS pd ON (p.products_id = pd.products_id) LEFT OUTER JOIN products_attributes AS pa ON (p.products_id = pa.products_id) LEFT OUTER JOIN products_options_values AS pov ON (pa.options_values_id = pov.products_options_values_id) LEFT OUTER JOIN specials AS s ON (p.products_id = s.products_id) AND s.status = '1' WHERE p.products_status = '1' AND p.products_id = pc.products_id AND pc.categories_id = c.categories_id AND c.categories_status=1 AND pd.language_id = '2' AND ( ( pd.products_keywords LIKE ('%rot%') OR pd.products_description LIKE ('%rot%') OR pd.products_short_description LIKE ('%rot%') OR pd.products_name LIKE ('%rot%') OR p.products_model LIKE ('%rot%') OR (pov.products_options_values_name LIKE ('%rot%') AND pov.language_id = '2') ) ) GROUP BY p.products_id ORDER BY p.products_id


[XT SQL Error]

Kannst du dir da was zusammenreimen?!

Wär prima, ich hab nämlich genau das gleiche Problem...

---------------------------------------------------------------------------------

Und noch was neues zum Thema "Fehler in der Suchfunktion" damit ich nicht extra nen neuen Thread aufmachen muss:

Wenn ich bei der QuickSearch an der Seite ohne Eingabe einfach auf Suchen, also auf die Lupe, klicke, dann werden alle Artikel meines Shops aufgelistet. Wie kann ich das verhindern, ohne z.B. eine Javascript-Überprüfung einbauen zu müssen?

Link to comment
Share on other sites

1054 - Unknown column 'p.products_id' in 'on clause'[/code]

Nicht nachvollziehbar. Wenn ich das SQL nehme, das du gepostet hast und es über phpMyAdmin ausführe, erhalte ich entsprechend Treffer zurückgeliefert.

Und noch was neues zum Thema "Fehler in der Suchfunktion" damit ich nicht extra nen neuen Thread aufmachen muss:

Wenn ich bei der QuickSearch an der Seite ohne Eingabe einfach auf Suchen, also auf die Lupe, klicke, dann werden alle Artikel meines Shops aufgelistet. Wie kann ich das verhindern, ohne z.B. eine Javascript-Überprüfung einbauen zu müssen?

Du kannst in Zeile 38

[php] $keyerror = 1;[/php]

durch

[php] $error = 1;[/php]

ersetzen.

Es wird zwar aktuell überprüft, ob keywords leer ist, aber es wird mit dem Ergebnis nichts gemacht...

Matt

Link to comment
Share on other sites

Du kannst in Zeile 38
	$keyerror = 1;

durch

	$error = 1;

ersetzen.

Es wird zwar aktuell überprüft, ob keywords leer ist, aber es wird mit dem Ergebnis nichts gemacht...

Matt

Super! Danke für die schnelle Antwort! :)

Nicht nachvollziehbar. Wenn ich das SQL nehme, das du gepostet hast und es über phpMyAdmin ausführe, erhalte ich entsprechend Treffer zurückgeliefert.

Was hast du denn für ne xtC-Version laufen?

Ich setze, laut den Credits xt:Commerce v3.0.4 SP2 Release Datum: 1 Okt 2005 ein.

An was könnte es sonst liegen? Hab deinen Code direkt bei mir in die advanced_search_result.php reinkopiert, alten String auskommentiert und deinen daruntergesetzt. Komisch....

Link to comment
Share on other sites

Was hast du denn für ne xtC-Version laufen?

Ich setze, laut den Credits xt:Commerce v3.0.4 SP2 Release Datum: 1 Okt 2005 ein.

Ich hab hier v3.0.4 SP2.1 vom 20.08.2006, die Query läuft aber auch bei einer 3.0.3-Installation problemlos durch.

An was könnte es sonst liegen? Hab deinen Code direkt bei mir in die advanced_search_result.php reinkopiert, alten String auskommentiert und deinen daruntergesetzt. Komisch....

Änderungen am Query-String betreffen eigentlich nur die Einbindung der Kategorie, mit p.products_id wird auch schon im originalen Code gearbeitet. Von daher verblüfft mich die Fehlermeldung umso mehr.

Matt

Link to comment
Share on other sites

Änderungen am Query-String betreffen eigentlich nur die Einbindung der Kategorie, mit p.products_id wird auch schon im originalen Code gearbeitet. Von daher verblüfft mich die Fehlermeldung umso mehr.

Matt

genau ^^ mich verblüfft's eben auch...

wiegesagt, ich hab nur deine Replacements übernommen, hab noch nie irgendwas an der Datenbank rumgemacht oder sonst wie..

seeehr komisch :confused:

Edit: letzten Post übersehen ^^

ja, techway, da hast du völlig recht... Projekt liegt hier in meiner lokalen testumgebung die mit PHP 5.1.4 und MySQL 5.0.21 läuft...

ich hab grad mal nachgeschaut, blöderweise entspricht das nicht den versionen auf dem server später, aber ich würd's gern auch mit MySQL 5 zum laufen kriegen...

hast du mir da einen Tipp? :)

Link to comment
Share on other sites

probier mal so:


$from_str = "FROM ((".TABLE_PRODUCTS." AS p, ".TABLE_PRODUCTS_TO_CATEGORIES." as pc, ".TABLE_CATEGORIES." as c ) LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION." AS pd ON (p.products_id = pd.products_id)) ";
[/php]

(ungetestet!)

Gruß

TechWay

Da ich genau dasselbe Problem habe (1054 - Unknown column 'p.products_id' in 'on clause') würde ich gerne noch einmal ganz genau wissen wohin ich diesen Code-Schnipsel kopieren soll. Irgendwie kann ich nämlich den Ursprungsstring in der Datei "advanced_search_result.php" nicht finden. Ich habe schon heute mittag an anderer Stelle erfolgreich eine Änderung wg. PHP5 vorgenommen. (Download mysql 5 fix.zip) Aber hier komme ich nicht klar.

Habe die Version 304SP2.1

Gruß,

Reiner

Link to comment
Share on other sites

Hallo Björn!

Mit einer deaktivierten Kategorie kann ich es in der Tat auch nachvollziehen. Ich würde das als Bug einstufen, ob das xtC-Team das auch so sieht, keine Ahnung.

Ich würde das nicht als Bug sehen, sondern als Feature. Es gibt Situationen, da möchte man als Shopbetreiber eine Kategorie unsichtbar machen, aber gerne die Produkte dortdrin zur Verfügung stellen, z.B. als Zubehör zu bestimmten Produkten. Wer nicht will, daß bestimmte Produlte gefunden werden, muss halt die Produkte deaktivieren.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...