Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: bestimmte Kategorien aus der Suche ausschliessen

    chillos

    • Frisch an Board
    • Beiträge: 51
    bestimmte Kategorien aus der Suche ausschliessen
    am: 16. Februar 2012, 09:28:35
    Hallo zusammen

    Ich möchte gerne bei meiner Suche gewisse Kategorien ausschliessen. Ich habe genau die Anweisungen gemäss http://www.modified-shop.org/forum/index.php?topic=2812.0 befolgt und noch die Zeile hinzugefügt, Kategorie mit ID=6 auszuschliessen. Irgendwie scheint es dennoch nicht zu klappen... habe ich da was übersehen? Hingegen zeigt die gleiche Anpassung in der SQL-Abfrage in der autocomplete.php vom Modul jQuery-Autocomplete die gewünschte Wirkung.

    Danke für eure Hilfe und gruss aus der Schweiz
    Sam

    Code: PHP  [Auswählen]
       XT-Commerce - community made shopping
       http://www.(( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! ))

       Copyright (c) 2003 XT-Commerce
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(general.php,v 1.225 2003/05/29); www.oscommerce.com
       (c) 2003      nextcommerce (xtc_get_categories.inc.php,v 1.3 2003/08/13); www.nextcommerce.org

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/
       
      function xtc_get_categories($categories_array = '', $parent_id = '0', $indent = '') {

        $parent_id = xtc_db_prepare_input($parent_id);

        if (!is_array($categories_array)) $categories_array = array();

        $categories_query = "select
                                          c.categories_id,
                                          cd.categories_name
                                          from "
    . TABLE_CATEGORIES . " c,
                                           "
    . TABLE_CATEGORIES_DESCRIPTION . " cd
                                           where parent_id = '"
    . xtc_db_input($parent_id) . "'
                                           and c.categories_id = cd.categories_id
                                           and c.categories_status != 0
                                           and cd.language_id = '"
    . $_SESSION['languages_id'] . "'
                                           AND c.categories_id != '6'
                                           order by sort_order, cd.categories_name"
    ;

        $categories_query  = xtDBquery($categories_query);

        while ($categories = xtc_db_fetch_array($categories_query,true)) {
          $categories_array[] = array('id' => $categories['categories_id'],
                                      'text' => $indent . $categories['categories_name']);

          if ($categories['categories_id'] != $parent_id) {
            $categories_array = xtc_get_categories($categories_array, $categories['categories_id'], $indent . '&nbsp;&nbsp;');
          }
        }

        return $categories_array;
      }
     ?>


    Linkback: https://www.modified-shop.org/forum/index.php?topic=18290.0

    claudia

    • Fördermitglied
    • Beiträge: 219
    Re: bestimmte Kategorien aus der Suche ausschliessen
    Antwort #1 am: 16. Februar 2012, 15:36:23
    Kann es sein, dass die Anführungszeichen um die 6 weg müssen?

    RossiRat

    • Fördermitglied
    • Beiträge: 96
    Re: bestimmte Kategorien aus der Suche ausschliessen
    Antwort #2 am: 17. Februar 2012, 07:56:32
    Kann es sein, dass die Anführungszeichen um die 6 weg müssen?
    Nein, da unterscheidet MySQL nicht bei Zahlen. Die ' oder " sind bei Stringwerten Pflicht, bei Zahlen optional.

    Der Zusatz sollte eigentlich die Kategorie mit der ID 6 ausblenden. Was zeigt er denn als Abfrage Ergebnis, wenn Du die SQL Abfrage direkt eingibst, z.B. in HeidiSQL?

    chillos

    • Frisch an Board
    • Beiträge: 51
    Re: bestimmte Kategorien aus der Suche ausschliessen
    Antwort #3 am: 17. Februar 2012, 11:52:58
    @Claudia: Anführungszeichen sind nicht das Problem..

    @RossiRat: wenn ich folgende SQL Abfrag laufen lasse, erhalte ich komischerweise ein leeres Resultat zurück, angenommen das parent_id = 0 ist, oder ist der Wert falsch?

    Code: SQL  [Auswählen]
    SELECT c.categories_id, cd.categories_name
    FROM categories c, categories_description cd
    WHERE parent_id = '0' AND c.categories_id = cd.categories_id AND c.categories_status != 0
    AND cd.language_id = 'de' AND c.categories_id != '6'
    ORDER BY sort_order, cd.categories_name

    chillos

    • Frisch an Board
    • Beiträge: 51
    Re: bestimmte Kategorien aus der Suche ausschliessen
    Antwort #4 am: 17. Februar 2012, 12:11:59
    ich habe auch probiert, in der Datei advanced_search_result.php in Zeile 123 so anzupassen, dass die Kategorie mit ID=6 nicht angezeigt wird. ebenfalls ohne Wirkung.

    Code: PHP  [Auswählen]
            //include subcategories if needed
            if (isset ($_GET['categories_id']) && xtc_not_null($_GET['categories_id'])) {
                    if ($_GET['inc_subcat'] == '1') {
                            $subcategories_array = array ();
                            xtc_get_subcategories($subcategories_array, (int)$_GET['categories_id']);
                            $subcat_join = " LEFT OUTER JOIN ".TABLE_PRODUCTS_TO_CATEGORIES." AS p2c ON (p.products_id = p2c.products_id) ";
                            $subcat_where = " AND p2c.categories_id IN ('".(int) $_GET['categories_id']."' AND p2c.categories_id != 6 ";
                            foreach ($subcategories_array AS $scat) {
                                    $subcat_where .= ", '".$scat."'";
                            }
                            $subcat_where .= ") ";
                    } else {
                            $subcat_join = " LEFT OUTER JOIN ".TABLE_PRODUCTS_TO_CATEGORIES." AS p2c ON (p.products_id = p2c.products_id) ";
                            $subcat_where = " AND p2c.categories_id = '".(int) $_GET['categories_id']."' AND p2c.categories_id != 6";
                    }
            }

    das einzige was bis jetzt funktionierte, nach der Zeile 200 folgendes die Where-Klausel erweitert, und sämtliche Produkte die ich nicht in der Suche haben möchte eingetragen. Wobei mir diese Lösung überhaupt nicht gefällt... ;-)

    Code: PHP  [Auswählen]
    $where_str .= " AND p.products_id != '24' AND p.products_id != '25' AND p.products_id != '26'  AND p.products_id != '132' AND p.products_id != '75' AND p.products_id != '74' AND p.products_id != '110' " ;

    RossiRat

    • Fördermitglied
    • Beiträge: 96
    Re: bestimmte Kategorien aus der Suche ausschliessen
    Antwort #5 am: 18. Februar 2012, 10:51:31
    Code: SQL  [Auswählen]
    SELECT c.categories_id, cd.categories_name
    FROM categories c, categories_description cd
    WHERE parent_id = '0' AND c.categories_id = cd.categories_id AND c.categories_status != 0
    AND cd.language_id = 'de' AND c.categories_id != '6'
    ORDER BY sort_order, cd.categories_name

    Müsste die language_id nicht eine Zahl sein? 1 für English (Vorgabe) und dann eine Zahl je nach installierten Sprachen?!?

    Code: SQL  [Auswählen]
    SELECT c.categories_id, cd.categories_name
    FROM categories c, categories_description cd
    WHERE parent_id = '0' AND c.categories_id = cd.categories_id AND c.categories_status != 0
    AND cd.language_id = '1' AND c.categories_id != '6'
    ORDER BY sort_order, cd.categories_name

    Damit solltest Du ein Ergebnis angezeigt bekommen. parent_id = '0' ist richtig für die Hauptkategorien.

    chillos

    • Frisch an Board
    • Beiträge: 51
    Re: bestimmte Kategorien aus der Suche ausschliessen
    Antwort #6 am: 21. Februar 2012, 10:02:52
    huii, das habe ich total übersehen.. ich habe einfach nur language gesehen und hopp  :datz:

    mit dieser SQL Abfrage erhalte ich das gewünschte Resultat, d.h. alle Kategorien ausser diejenigen mit ID=6. Dennoch gibt mir dann die advanced_search_result.php die Suchresultate inkl. Katgeorie ID=6 aus.. Müssten evtl. die Änderungen direkt in der advanced_search_result.php gemacht werden, statt in der Datei advanced_search.php?

    Dank für eure Hilfe.

    Gruss
    Sam
    2 Antworten
    931 Aufrufe
    20. April 2021, 15:20:25 von Glera77
    7 Antworten
    2533 Aufrufe
    16. Oktober 2022, 12:08:32 von online-beobachter
    1 Antworten
    2469 Aufrufe
    08. Mai 2011, 16:50:11 von Tomcraft