Managed Server
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: Array auf bestimmter Seite anders füllen?

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.869
    • Geschlecht:
    Array auf bestimmter Seite anders füllen?
    am: 20. März 2014, 15:43:32
    Hallo,

    da ich leider von php wenig Plan habe, steh ich gerade vor einem Problem. Eventuell kann mir da ja einer behilflich sein.

    Ich möchte, dass auf der specials.php ein array anders aufgebaut ist.

    Aktuell sieht es so aus:
    Code: PHP  [Auswählen]
        public static function orderby()
        {
            $sortarr = array(
                1 => ' ORDER BY pd.products_name ASC',
                2 => ' ORDER BY pd.products_name DESC',
                3 => ' ORDER BY order_price ASC',
                4 => ' ORDER BY order_price DESC',
                5 => ' ORDER BY p.products_date_added DESC',
                6 => ' ORDER BY p.products_date_added ASC',
                7 => ' ORDER BY p.products_ordered DESC'
            );
            $sorting = isset($sortarr[self::$listorder]) ? $sortarr[self::$listorder] : '';
            return $sorting;
        }

    Nun möchte ich gerne erreichen, dass auf der specials.php das Array bei den Zahlen 5 & 6 statt
    Code: PHP  [Auswählen]
                5 => ' ORDER BY p.products_date_added DESC',
                6 => ' ORDER BY p.products_date_added ASC',
     
    das hier abruft:
    Code: PHP  [Auswählen]
                5 => ' ORDER BY s.specials_date_added DESC',
                6 => ' ORDER BY s.specials_date_added ASC',
     

    Kann man das relativ leicht lösen?

    Besten Dank schonmal für hilfreiche Kommentare ;)

    Grüße
    Dominik

    Linkback: https://www.modified-shop.org/forum/index.php?topic=29729.0
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Array auf bestimmter Seite anders füllen?
    Antwort #1 am: 20. März 2014, 16:34:50
    Code: PHP  [Auswählen]
    public static function orderby($flag = false) {
      $order_by = (!$flag ? 'p.products_date_added' : 's.specials_date_added');
      $sortarr = array(
        1 => ' ORDER BY pd.products_name ASC',
        2 => ' ORDER BY pd.products_name DESC',
        3 => ' ORDER BY order_price ASC',
        4 => ' ORDER BY order_price DESC',
        5 => ' ORDER BY ' . $order_by . ' DESC',
        6 => ' ORDER BY ' . $order_by . ' ASC',
        7 => ' ORDER BY p.products_ordered DESC'
      );
      $sorting = isset($sortarr[self::$listorder]) ? $sortarr[self::$listorder] : '';
      return $sorting;
    }

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.869
    • Geschlecht:
    Re: Array auf bestimmter Seite anders füllen?
    Antwort #2 am: 20. März 2014, 16:46:41
    Hi web0null,

    danke für die Idee, leider sortiert er mir bei deinem Vorschlag auch auf der special.php weiterhin nach products_date_added

    Grüße
    Dominik

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Array auf bestimmter Seite anders füllen?
    Antwort #3 am: 20. März 2014, 16:50:33
    du musst dort wo du "specials_date_added" haben willst die function so aufrufen
    Code: PHP  [Auswählen]
    $var->orderby(true);

    Von wo ist denn eigentlich diese function bzw. in welche classe steckt die denn drinnen, und wie wird die instanziiert?

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.869
    • Geschlecht:
    Re: Array auf bestimmter Seite anders füllen?
    Antwort #4 am: 20. März 2014, 16:59:38
    hmm, diese Funktion ist von nem für uns programmierten Filter. Kann natürlich auch mit h-h-h darüber reden (ist von ihm).

    Aber da der aktuell wieder dicke mit Arbeit voll ist, wollte ich halt schauen, ob man es "extern" lösen kann ;)

    Vielleicht doch etwas zu komplex, das ohne Zusammenhang herauszulesen, aber den Programmcode möchte ich aus Respekt dafür nicht veröffentlichen...danke dir aber vielmals für deine Idee :)

    Grüße
    Dominik

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Array auf bestimmter Seite anders füllen?
    Antwort #5 am: 20. März 2014, 17:06:06
    ... und hast du es jetzt geschafft, oder nicht?
    Wenn nicht dann poste einfach nur die Zeile in der specials, wo das "orderby()" aufgerufen wird.

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.869
    • Geschlecht:
    Re: Array auf bestimmter Seite anders füllen?
    Antwort #6 am: 20. März 2014, 17:11:58
    Also es klappt fast. Die Funktion kommt aber direkt in der Filterdatei vor. Zählt sozusagen "shopgesamt".

    Hiermit klappt nur schonmal die Sortierung nach s.specials_date_added.
    Code: PHP  [Auswählen]
    $sorting = self::orderby(true);

    Soweit so gut. Aber leider eben dann im gesamten Shop.
    Jetzt müssten man das also so hinbiegen, dass es eben nur auf der specials.php-Seite aufgerufen wird.

    Sprich: normalerweise rufe products_date_added auf, aber auf der Seite specials.php dann specials_date_added

    Danke & Grüße
    Dominik

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Array auf bestimmter Seite anders füllen?
    Antwort #7 am: 20. März 2014, 17:25:06
    Na das ist halt alles ein Ratespiel, aber ich probiere es nochmal mit meiner tollen  :glaskugel: :-D

    Code: PHP  [Auswählen]
    public static function function_in class() {
      global $PHP_SELF
      $is_specials = (strpos($PHP_SELF, 'specials') !== false);
      $sorting     = self::orderby($is_specials);
      ....
    }
     

    bzw. müßte es auch so gleich gehen:

    Code: PHP  [Auswählen]
    public static function orderby() {
      global $PHP_SELF
      $is_specials = (strpos($PHP_SELF, 'specials') !== false);
      $order_by    = ($is_specials ? 's.specials_date_added' : 'p.products_date_added');
      $sortarr     = array(
        1 => ' ORDER BY pd.products_name ASC',
        2 => ' ORDER BY pd.products_name DESC',
        3 => ' ORDER BY order_price ASC',
        4 => ' ORDER BY order_price DESC',
        5 => ' ORDER BY ' . $order_by . ' DESC',
        6 => ' ORDER BY ' . $order_by . ' ASC',
        7 => ' ORDER BY p.products_ordered DESC'
      );
      $sorting = isset($sortarr[self::$listorder]) ? $sortarr[self::$listorder] : '';
      return $sorting;
    }

    Kann man aber sicher besser über den "__construct" lösen, aber wie gesagt das ist halt ein Ratespiel wenn man nichts weiß.

    Gruß

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Array auf bestimmter Seite anders füllen?
    Antwort #8 am: 20. März 2014, 18:45:18
    Nachtrag:
    NACH "global $PHP_SELF" gehört noch ein ";"
    Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
    10 Antworten
    4656 Aufrufe
    26. Mai 2015, 17:56:26 von web0null
    5 Antworten
    4202 Aufrufe
    14. Januar 2012, 17:43:19 von Tomcraft
    9 Antworten
    4796 Aufrufe
    08. Januar 2013, 00:32:46 von Gradler
               
    anything