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: ANLEITUNG: Ablaufdatum aus Tabelle SPECIALS in product_listing anzeigen

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    die Passagen:
    s.status=1 habe ich auch mit
    s.status = '1' und auch ohne Leerzeichen
    s.status='1' probiert.

    Nichts kein Erfolg!

    Was ist da bloß falsch?? (Meine Shopversion: v1.06 rev 4642 SP2 / PHP 5.4.34 (Zend: 2.4.0))

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.370
    • Geschlecht:
    Ähm... da war wohl irgendeine "merkwürdige" Rechtschreib-Korrektur im Spiel, die aus einem "JOIN" einen "JOINT" gemacht hat! :hust: :whistle: :lol2:

    Ich habe die Anleitung im Beitrag #39 korrigiert.

    Grüße

    Torsten

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    versuche es gleich noch mal. Bevor`s wieder chaotisch wird für mich nochmal zur Klärung. In der default.php die Zeile

    Code: PHP  [Auswählen]
    LEFT JOIN ".TABLE_SPECIALS." s on p.products_id = s.products_id AND s.status = '1'

    den s.status = '1' so schreiben und an jeder weiteren Stelle auch in den abnderen Dateien so: s.status=1

    Ist das richtig so? Dann frisch ans Werk ... .

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.370
    • Geschlecht:
    In der Anleitung war an zwei Stellen ein "JOINT" einzufügen! Beide ersetzen mit "JOIN".

    Die Zeile s.status = '1' bitte an allen Stellen so schreiben.

    Ich habe die Anleitung im Beitrag #39 diesbezüglich nochmal korrigiert.

    Grüße

    Torsten

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    ah ok, dann ist das in der Anleitung noch falsch drin - alle s.status=1 in s.status = '1' wandeln. Verstanden. Bin ja mal gespannt.

    Danke Torsten! ... und das am 4. Advent :-)

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    taste mich Datei um Datei voran. In der includes/modules/new_products.php stimmt auch was nicht. Wenn ich jetzt mal ohne Zeichen für Zeichen zu vergleichen einfach alle Passagen ersetzte, wie man es vermutlich normalerweise tun würde, sind meine neuen Artikel (Einblendung Shop Sartseite) bis auf einen weg und der Testangebotsartikel erscheint in der Ansicht unterhalb der Rubriken mit einem Datum obwohl das gar nicht im Datensatz eingestellt war mit 30.11. - 1. Letzteres könnte ein Problem in der zugehörigen .html sein. An dieser Stelle sollten allerdings auch die ganzen neuen Artikel eingeblendet werden und nicht nur der eine Angebotsartikel ... .

    in meiner new_products.php sieht der zu ersetzende erste Teil so aus:

    Code: PHP  [Auswählen]
    if ((!isset ($new_products_category_id)) || ($new_products_category_id == '0')) {

        $new_products_query = "SELECT *
                                 FROM "
    .TABLE_PRODUCTS." p,
                                      "
    .TABLE_PRODUCTS_DESCRIPTION." pd
                             WHERE p.products_id = pd.products_id
                             "
    .$group_check."
                             "
    .$fsk_lock."
                             and p.products_status = '1'
                             and pd.language_id = '"
    .(int) $_SESSION['languages_id']."'
                             order by RAND() ASC
                             limit "
    .MAX_DISPLAY_NEW_PRODUCTS;

    In der Anleitung die zu ersetzende Datei so:

    Code: PHP  [Auswählen]
    if ((!isset ($new_products_category_id)) || ($new_products_category_id == '0')) {

        $new_products_query = "SELECT * FROM
                             "
    .TABLE_PRODUCTS." p,
                             "
    .TABLE_PRODUCTS_DESCRIPTION." pd
                             WHERE p.products_id = pd.products_id
                             and p.products_startpage = '1'
                             "
    .$group_check."
                             "
    .$fsk_lock."
                             and p.products_status = '1'
                             and pd.language_id = '"
    .(int) $_SESSION['languages_id']."'
                             order by p.products_startpage_sort ASC
                             limit "
    .MAX_DISPLAY_NEW_PRODUCTS;
     

    Den Schnipsel
    and p.products_startpage = '1' und
    order by p.products_startpage_sort ASC
    gibt es bei mir nicht - da steht an der Stelle anderes drin!

    Im zweiten zu ersetzenden Teil auch ein Unterschied - mal die Groß- und Kleinschreibung (z.B. and und AND) außer Acht gelassen:

    Meine:
    Code: PHP  [Auswählen]
      if (MAX_DISPLAY_NEW_PRODUCTS_DAYS != '0') {
        $date_new_products = date("Y.m.d", mktime(1, 1, 1, date("m"), date("d") - MAX_DISPLAY_NEW_PRODUCTS_DAYS, date("Y")));
        $days = " AND p.products_date_added > '".$date_new_products."' ";
      }
      $new_products_query = "SELECT *
                               FROM "
    .TABLE_PRODUCTS." p,
                                    "
    .TABLE_PRODUCTS_DESCRIPTION." pd,
                                    "
    .TABLE_PRODUCTS_TO_CATEGORIES." p2c,
                                    "
    .TABLE_CATEGORIES." c
                              WHERE c.categories_status='1'
                                AND p.products_id = p2c.products_id
                                AND p.products_id = pd.products_id
                                AND p2c.categories_id = c.categories_id
                                "
    .$group_check."
                                "
    .$fsk_lock."
                               "
    .$days."
                                AND c.parent_id = '"
    .$new_products_category_id."'
                                AND p.products_status = '1'
                                AND pd.language_id = '"
    .(int) $_SESSION['languages_id']."'
                           ORDER BY p.products_date_added DESC
                              LIMIT "
    .MAX_DISPLAY_NEW_PRODUCTS;
    }
    $row = 0;
    $module_content = array ();

    Die Stelle, die man laut Anleitung suchen/ersetzen soll:
    Code: PHP  [Auswählen]
    if (MAX_DISPLAY_NEW_PRODUCTS_DAYS != '0') {
        $date_new_products = date("Y.m.d", mktime(1, 1, 1, date("m"), date("d") - MAX_DISPLAY_NEW_PRODUCTS_DAYS, date("Y")));
        $days = " and p.products_date_added > '".$date_new_products."' ";
      }
      $new_products_query = "SELECT * FROM
                             "
    .TABLE_PRODUCTS." p,
                             "
    .TABLE_PRODUCTS_DESCRIPTION." pd,
                             "
    .TABLE_PRODUCTS_TO_CATEGORIES." p2c,
                             "
    .TABLE_CATEGORIES." c
                             where c.categories_status='1'
                             and p.products_id = p2c.products_id
                             and p.products_id = pd.products_id
                             and p2c.categories_id = c.categories_id
                             "
    .$group_check."
                             "
    .$fsk_lock."
                             and c.parent_id = '"
    .$new_products_category_id."'
                             and p.products_status = '1'
                             and pd.language_id = '"
    .(int) $_SESSION['languages_id']."'
                             order by p.products_date_added DESC
                             limit "
    .MAX_DISPLAY_NEW_PRODUCTS;
    }
    $row = 0;
    $module_content = array ();

    Bei mir gibt es da einen Schipsel ".$days." Ich vermute mal wild darauf los, dass deshalb bei mir keine neuen Produkte mehr angezeigt werden, da die Anzeige zeitlich limitiert ist.

    Ich lasse die new_products.php erst mal außen vor. Vielleicht klärt sich das Problem ja.

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    so, jetzt habe ich alles - bis auf die new_products.php, drin und dreifach überprüft. Den Sonderpreisartikel ein Ablaufdatum gegeben und??????? Nix. Das Ablaufdatum wird lediglich unter Artikeldetails angezeigt. Wie vor dieser Tagesaktion auch schon :-(

    Liegt das etwa an der noch nicht bearbeiteten new_products.php?? Kann doch nicht sein, oder?

    Gerade auch die Anzeige des Ablaufdatums in der product_listing_v1.html ist wichtig, da ich dort den Warenkorbbutton aktiv habe. Hm, wird sich hoffentlich noch eine Lösung finden lassen.

    Na ja, immerhin keine MySQL-Fehlermeldung ... . Da krich ich beschleunigten Herzschlag  :panic:

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    Nachdem die Anzeige des Gültigkeitszeitraums bei einem zeitlich begrenzten Angebot einfach Pflicht mindestens überall da ist, wo dieser Artikel in den Warenkorb gelegt werden kann, halte ich diese Anleitung hier für suuuuper wichtig und wundere mich, dass es recht wenige Downloads gibt. Bin ich denn einer der wenigen, die auch aus der Front heraus verkaufen und nicht nur in der Detailansicht? Grübel ... .

    Hier noch eine kleine Korrektur zur Anleitung. In der /includes/modules/default.php sollte in der zu ersetzenden Passage der select nach p.products_quantity, auch eine Zeile mit s.expires_date, eingefügt werden. Dann klappts - zumindest bei mir - mit der listing-Ansicht. Die special-Ansicht funktioniert auch.

     :mhhh:Leider keinerlei Anzeige des Ablaufdatums in der advanced_search_result.php :-(

    Fehlt da möglicherweise eine Abfrage in der php? Oder hängt es evtl. mit meinem Suchmodul (Soundex u. Kölner_Phonetik) zusammen? Eventuell muß da die /autocomplete.php geändert werden. Weiß jemand, ob aus der autocomplete.php der Soundex etwas Relevantes an die advanced_search_result.php weitergegeben wird??

    Wenn ich das Suchergebnis noch hin bekomme, wäre ich erstmal soweit und könnte endlich Sonderangebote setzen. Könnte mir da bitte jemand helfen? Ich habe alles was mir eingefallen ist ausprobiert. Keine Chance - komme da nicht weiter.

    Mit der new_products.php bin ich auch noch nicht weiter - der zu ersetzende Teil sieht bei mir im Original einfach anders aus ... . Werde hier nochmal ein bisschen rumprobieren. Vielleicht hilft ja Kommissar Zufall.

    Den zu ersetzenden Schnipsel in den beiden specials.php habe ich zwar damit getauscht

    Code: PHP  [Auswählen]
    $expires_date = str_replace("-", "", $_POST['specials_expires']);
        $expires_date = date('Y-m-d H:i:s', strtotime($expires_date.' 23:59:59'));

    dann aber eine merkwürdige Datumsanzeige bekommen, nämlich: "Sonderangebot gültig bis:30.11.-1"

    Da passt evtl. die Abfrage des Jahres nicht. Aber was da genau nicht passt - keine Ahnung. Sollte das Datumsformat evtl. nicht eher damit geschrieben werden? %x statt Y-m-d H:i:s? Hmm, das passt aber irgendwie auch nicht so ganz.

    Egal erstmal - wäre toll, wenn jemand mir mit der advanced_search_result.php weiter helfen könnte. Irgend ein Tip?

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    das mit der /new_product.php lasse ich dann auch lieber mal bleiben. Wie ich es auch schreibe bekomme ich MySQL-Fehler. Ich habe zur Originaldatei diesen Teil
    and p.products_startpage = '1' gar nicht drin und dieser Teil im Original
    order by p.products_startpage_sort ASC sieht bei mir so aus
    ORDER BY RAND() ASC

    So habe ich diese Teile bei der Änderung wieder mit übernommen.

    Letzte Änderung des ersten zu ändernden Teils hatte ich so
    Code: PHP  [Auswählen]
    if ((!isset ($new_products_category_id)) || ($new_products_category_id == '0')) {

        $new_products_query = "SELECT *
                               FROM "
    .TABLE_PRODUCTS_DESCRIPTION." pd
                                                            "
    .TABLE_PRODUCTS." p,
                          LEFT JOIN "
    .TABLE_SPECIALS." s on p.products_id = s.products_id and s.status = '1'
                              WHERE p.products_id = pd.products_id
                                    "
    .$group_check."
                                    "
    .$fsk_lock."
                                AND p.products_status = '1'
                                AND pd.language_id = '"
    .(int) $_SESSION['languages_id']."'
                           ORDER BY RAND() ASC
                              LIMIT "
    .MAX_DISPLAY_NEW_PRODUCTS;

    und den zweiten in dieser php zu ändernden Teil so geschrieben
    Code: PHP  [Auswählen]
    $new_products_query = "SELECT *
                               FROM "
    .TABLE_PRODUCTS_DESCRIPTION." pd,
                                    "
    .TABLE_PRODUCTS_TO_CATEGORIES." p2c,
                                    "
    .TABLE_CATEGORIES." c,
                                    "
    .TABLE_PRODUCTS." p left join ".TABLE_SPECIALS." s on p.products_id = s.products_id and s.status = '1'
                              WHERE c.categories_status='1'
                                AND p.products_id = s.products_id and s.status = '1'
                                AND p.products_id = p2c.products_id
                                AND p.products_id = pd.products_id
                                AND p2c.categories_id = c.categories_id
                                "
    .$group_check."
                                "
    .$fsk_lock."
                                "
    .$days."
                                AND c.parent_id = '"
    .$new_products_category_id."'
                                AND p.products_status = '1'
                                AND pd.language_id = '"
    .(int) $_SESSION['languages_id']."'
                           ORDER BY p.products_date_added DESC
                              LIMIT "
    .MAX_DISPLAY_NEW_PRODUCTS;

    Fehler:
    1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'products p, LEFT JOIN specials s on p.products_id = s.prod' at line 3

    SELECT * FROM products_description pd products p, LEFT JOIN specials s on p.products_id = s.products_id and s.status = '1' WHERE p.products_id = pd.products_id AND p.products_status = '1' AND pd.language_id = '2' ORDER BY RAND() ASC LIMIT 5

    [MOD SQL Error]

    Wäre jetzt einfach nur schön, wenn wenigstens die advanced_search_result.php (sh. Vorpost) hinzubekommen wäre. Bei neuen Produkten mache ich dann halt keine Sonderangebote :-(

    Guenter59

    • Viel Schreiber
    • Beiträge: 1.484
    Hi
    ach entschuldigung, hast Du ja schon
    GMS

    Guenter59

    • Viel Schreiber
    • Beiträge: 1.484
    Hi
    Das Komma vor LEFT JOIN ( erste Abfrage : $new_products_query )dürfte falsch sein
    GMS

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    Hallo Guenter,

    ja richtig, das Komma gehört eine Zeile höher bei FROM ".TABLE_PRODUCTS_DESCRIPTION." pd wieder mit hinter. Jetzt ist die Anzeige der neuen Artikel auf der Startseite wieder da - kein MySql-Fehler - aber - ich hatte die neuen Artikel auch unterhalb der Anzeige "Weitere Unterkategorien:" (mittig). Da herrscht jetzt gähnende Leere. Irgendwas fehlt da noch oder ist nicht ganz richtig.

    Guenter59

    • Viel Schreiber
    • Beiträge: 1.484
    Hi Wexsler
    Zitat
    Da herrscht jetzt gähnende Leere.

    Wie holst Du die denn und wie läßt Du sie ausgeben.

    Laß Dir den Inhalt der Produkt-Variablen ( bzw Arrays ) doch in der php-Datei erstmal mit " var_dump($products oder so); " ausgeben.

    dann grenzt Du den Fehler schon etwas ein und weißt, ob da überhaupt was drin ist.

    GMS

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    wo ich die herhole? Habe jetzt gerade nochmal geschaut - während auf der Startseite noch alle mit Start des neuen Shops hochgeladenen (neuen) Artikel im Wechsel angezeigt werden, sind es in der Kategorienanzeige doch nur die tatsächlich für diese Anzeige ausgewählten Artikel gewesen. Das waren nun zufällig auch die ersten paar Neuaufnahmen.

    Es handelt sich also um die Einstellung, die man im Admin im Artikeldatensatz unter "Unterh. Warenk. Anz." dafür auswählen kann.

    Diese Auswahl wird jetzt nicht mehr angezeigt. Wie das mit der /new_product.php zusammenhängt ist mir nicht klar - aber da muß jetzt eine Abfrage fehlen oder nicht ganz richtig sein sein.

    WeXsler

    • Viel Schreiber
    • Beiträge: 536
    offenbar handelt es sich doch nicht um die genannte Einstellung im Artikeldatebsatz :-(

    In der mittigen Anzeige unter den angezeigten Unterkategorien werden tatsächlich nur die in diesem Shop nagelneu aufgenommenen Artikel angezeigt, so wie diese auch angezeigt werden, wenn ich die Box "Neue Artikel" anklicke. Die Artikel auf der Startseite sind die Artikel, die mit dem csv-upload alle mitgekommen sind und vermutlich - so verstehe ich es - vom Shop irgendwie auch erstmal als neu behandelt werden.  Zumindest wird dort auch mittig unterhalb der Shopbegrüßungsformel die Anzeige der Artikel - die mit jedem Seitenreload nach dem Zufallsprinzip geladen werden, mit "Neue Artikel" getitelt.
    34 Antworten
    21532 Aufrufe
    15. Januar 2013, 23:21:25 von Gradler
    10 Antworten
    6970 Aufrufe
    10. Oktober 2011, 18:08:38 von Jürgen
    2 Antworten
    2658 Aufrufe
    20. September 2014, 21:48:21 von lullifatz
    17 Antworten
    5965 Aufrufe
    27. November 2015, 16:35:42 von Viol