oscommerce parent_id Kategorie

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • oscommerce parent_id Kategorie

    Hallo,

    ich baue gerade an oscommerce rum.

    Ich habe eine Kategorie ID und möchte nun aufsteigend alle Menupunkte ermitteln, die dazu gehören.

    categories_id, parent_id
    1, 0
    2, 1
    3, 2


    Die Hauptkategorie sind immer parent_id 0.
    Das ist meine Momentane Abfrage

    SELECT node_1.categories_id
    FROM categories node_1, categories node_2
    WHERE
    node_1.categories_id BETWEEN node_2.categories_id AND node_2.parent_id AND
    node_1.categories_id = '" . (int)$current_category_id . "'
    ORDER BY node_1.categories_id;

    Aber so ganz funktioniert das nicht.
    Was mach ich da falsch und wie kann ich die Abfrage richtig machen, das sie mir
    categories_id 1, 2 und 3 zurück gibt, wenn ich nach categories_id = 3 frage.

    Gut geraten ist halb gewußt.

  • #2
    Hallo,

    also bei deinem Query:

    Code:
    SELECT node_1.categories_id
    FROM categories node_1, categories node_2
    WHERE node_1.categories_id BETWEEN node_2.categories_id AND node_2.parent_id 
      AND node_1.categories_id = '" . (int)$current_category_id . "'
    ORDER BY node_1.categories_id;

    Fällt mir als erstes auf, dass immer nur genau eine ID oder keine ID zurückgegeben werden kann.

    du machst ja quasi ein

    Code:
    SELECT node_1.categories_id
    FROM categories node_1
    WHERE node_1.categories_id = '" . (int)$current_category_id . "'
    Also so kann das ja nicht funktionieren, ich habe allerdings nicht ganz verstanden was du willst.....
    signed oder unsigned... das ist hier die Frage

    Kommentar


    • #3
      Ich habe das jetzt erstmal rekursiv gelöst.
      Es läuft erstmal.

      PHP-Code:
            /**
             * Punkt ID übergeben und nach oben durchlaufen
             *
             */
            
      function tree($current_category_id) {

                GLOBAL 
      $cPath_array;

                
      $categories_products_query tep_db_query("
                  SELECT
                      node_1.categories_id,
                      node_1.parent_id
                  FROM categories node_1
                  where
                      node_1.categories_id = '" 
      . (int)$current_category_id "'
                  GROUP BY node_1.categories_id
                  limit 1;
                    "
      );
                
      $row tep_db_fetch_array($categories_products_query);

                
      $cPath_array[] = $row['categories_id'];

                if(
      $row['parent_id']) {
                  
      tree($row['parent_id']);
                }
            }


            
      $cPath_array = array();

            
      tree($current_category_id); 
      Gut geraten ist halb gewußt.

      Kommentar

      Lädt...
      X