|
|||
|
Hallo,
als "Nicht-XT-Shop-Experte" möchte ich ein php-Skript in den XT-Shop einfügen, bei dem eine spezielle Suche nach bestimmten Produkten aufgerufen wird. Das Skript liefert mir als Ergebnis der Suche die products_id aus dem table products. Kann mir jemand sagen, an welches Skript ich die Variable übergeben muss, damit meine Suchergebnisse im Shop, untereinander angezeigt werden? Die Suchergebnisse stammen aus verschiedenen Kategorien. Muss ich die Datei shop_content.php abändern? Vielen Dank für die Hilfe!! Ines Hoppe |
|
|||
|
Das kannst du folgendermaßen realisieren. Als Vorlage schau in
advanced_search.php und advanced_search_results.php Kannst du kopieren, anpassen und einbasteln in den Shop. advanced_search erzeugt ein Suchformular dessen Formulardaten an advanced_search_results übergeben werden. advanced_search_results konstruiert aus den Formulardaten eine komplizierte SQL-Abfrage. Diesen Teil ersetzt du gegen deine Suchfunktion und generierst eine SQL-Abfrage welche exakt nur jene Artikel liefert die deine Suchfunktion ermittelt hat. konkret advanced search_results Zeile 37 PHP-Code:
PHP-Code:
In Variable $listing_sql (global) setzt du die spezielle SQL-Abfrage die nur genau definierte Artikel liefert. Zwar so. PHP-Code:
Du hast z.B. ein Array mit products_id's: $result_products_id_arr $in = "'".implode("','", $result_products_id_arr)."'"; $where_str = " WHERE p.products_status = '1' "." AND pd.language_id = '".(int) $_SESSION['languages_id']; $where.= "and p.products_id in ".$in; Dann $listing_sql bilden $listing_sql = $select_str.$from_str.$where_str; Ab hier geht der Rest von allein und deine Artikelliste erscheint. Hab das nicht auf Syntax überprüft. Aber im Prinzip gehts so. mfg |
|
|||
|
Hallo,
Ich habe jetzt das advanced_search_result.php an meine Suchabfrage angepasst. Ich habe nun doch nicht die product_id an das Skript übergeben, sondern die gesamt sql-Abfrage eingebettet. Die SQL-Abfrage habe ich im PHPMyAdmin überprüft, sie ist soweit i.O. Wenn ich mein Skript einfach auf dem Server laufen lasse, d.h. ohne dass es in den Shop eingebunden ist, läuft es auch o.k. (d.h. echo $select_str; wird korrekt angezeigt) Nur mit der Darstellung im Shop klappt es nicht: Als Ausgabe bekomme ich den letzten Teil des php-Skriptes als Text und zwar ab der Stelle, wo das erste Relationszeichen > in der Select-Abfrage erscheint (= products_modelle_gewinde.A AND products ...). Kann das Problem mit den Relationszeichen in der Select-Abfrage zu tun haben? Vielen Dank für jede Hilfe im Voraus!! I. Hoppe Hier der Quelltext der content-Datei: Die Variable $Modell stammt aus dem Formular. PHP-Code:
|
|
|||
|
Ja, vielen Dank für den Hinweis, die SQL-Abfrage ist jetzt o.k., allerdings bleibt das Skript jetzt bei den smarty's hängen. Im Browser erscheint:
assign('language', $_SESSION['language']); $smarty->caching = 0; if (!defined(RM)) $smarty->load_filter('output', 'note'); $smarty->display(CURRENT_TEMPLATE.'/index.html'); include ('includes/application_bottom.php'); ?> Weil er sich anscheinend bei der $_SESSION['language'] aufhängt, habe ich in der sql-Abfrage die language noch mit eingearbeitet (aber als 2 definiert : WHERE p.products_status = '1' AND pd.language_id = '2' ) aber klappt auch nicht . Wenn ich assign('language', $_SESSION['language']); ganz rausnehme, hängt er am nächsten smarty fest!? Hast Du noch eine Idee? Vielen Dank für die Hilfe. |
|
|||
|
Ich weiß es auch nicht. Ich kenne den Code nicht und habe keine entspr. modifizierte DB. Alles was ich noch sagen kann ist spekulativ.
Du solltest jetzt anfangen systematisch zu debuggen. echo und print_r Lass dir Schritt für Schritt Zustände (Var-Werte) anzeigen und prüfe ob sie dem erwarteten entsprechen. Tausche die SQL Abfrage gegen was garantiert unverfängliches und schaue ob die gleiche Panne immer noch auftritt. Durch simples ausprobieren grenzt du den Fehler anfangs grob ein und ziehst durch immer gezielteres Probieren und ausschließen von möglichen Ursachen die Grenzen immer enger. So tastest du dich an die fehlerhafte Stelle. Nochn Tip. SQL Konstruktionen können durch Sonderzeichen durchsetzte Datenwerte sabotiert werden. Schau auf die Datenwerte (Modell). Und vergiss nicht SQL Injection. mfg |
|
|||
|
Danke für die Antwort. Ich versuche schon, dem Fehler auf die Spur zu kommen. In dem Skript ist ein echo $listing_sql drin, aber es wird nicht angezeigt.
Wenn ich dasselbe Skript OHNE das XT-Drumherum laufen lasse, funktioniert es ja. Das echo wird dann angezeigt und wenn ich diese echo select kopiere und in phpmyadmin als sql-query ausprobiere, bekomme ich die korrekten Produkte für die Suchanfrage mit den entsprechenden Feldern fürs listing ausgegeben. ... Ja und dann muss ich mich noch um die Formulardaten kümmern ... Ich will nur das Ganze im Shop erst mal zum Laufen bringen. PHP-Code:
|
|
|||
|
Spekulation:
Das Modul require (DIR_WS_MODULES.FILENAME_PRODUCT_LISTING); parst die übergebene SQL-Anweisung in gewissem Maße und setzt es neu zusammen. Deine SQL-Anweisung ist ungewöhnlich tief verschachtelt. Gehen wir davon aus, daß die Lib. damit nicht klar kommt: Dann müsstest du die Lib. umschreiben. Ein anderer Weg ist. Du übergibst deine SQL-Anweisung direkt an die DB (xtc_db_query) , liest anschließend in einer Schleife alle product_ids aus und speicherst diese in ein Array. Jetzt hast du jenen Zustand den ich in meinem ersten Beitrag postulierte. Mit diesem product_id Array konstruierst du eine neue (simple) SQL-Anweisung die du der Lib übergibst. Probier mal das. mfg |
|
|||
|
Vielen Dank, dass Du mir immer weiter hilfst!!!! - wo ich doch immer kurz vorm verzweifeln bin.
Es ist fast geschafft! Ich bekomme jetzt die ausgewählten Produkte angezeigt seit ich das PHP-Skript im CM nun als Anhang eingefügt habe und nicht wie vorher in das Textarea-Feld. Vom Inhalt her habe ich nichts verändert, nur das echo der select-Abfrage rausgenommen. Allerdings gibt es nun ein neues Phänomen auf der Seite. Wenn die Ergebnisliste angezeigt wird, überlagern sich die Templates. Ich muss wahrscheinlich den aufgerufenen Frame ändern. Grüße. Geändert von ihoppe (06.12.2008 um 09:53 Uhr) |
![]() |
| Lesezeichen |
| Stichworte |
| aufrufen, phpskript, suchergebnis |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Installationsprobleme Apache/winxp | wini2 | Installation und Konfiguration | 18 | 28.10.2008 12:57 |