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: Versandkostenlink

    Firsttrade

    • Neu im Forum
    • Beiträge: 34
    Versandkostenlink
    am: 09. August 2010, 14:44:27
    Hallo Gemeinde,
    ich versuche seit Tagen den Versandkostenlink in der Datei "/includes/classes/main.php" in Abhängigkeit des Artikelgewichtes zu gestalten. Dazu habe ich im Contentmanager zu den entsprechenden Artikelgewichten diverse Contents mit den ID's 95 bis 99 angelegt.

    Nun aber zu meinem Problem. Ich bekomme folgende Fehlermeldung:
    Fatal error: Cannot redeclare getgewicht() (previously declared in /public/www/kunden/K12345/htdocs/xyz/includes/classes/main.php:81) in /public/www/kunden/k12345/htdocs/xyz/includes/classes/main.php on line 81
    Ich habe so ziemlich null Ahnung von PHP & SQL und weiß auch noch nicht ob die Gewichtsabfrage überhaupt funktioniert. Vielleicht kann jemand von den Profis über den Code schauen und mir sagen wo der Fehler ist und ob das überhaupt funktionieren kann wie ich es mir vorstelle.

    Code: PHP  [Auswählen]
             function getShippingLink() {

             $this->ft_gewicht = array();

            $ftgewicht_query=xtDBquery("SELECT products_weight,
                                               products_id
                                       FROM "
    .TABLE_PRODUCTS."
                                       WHERE products_id = '"
    .(int)$_SESSION['products_id']."'");

            while ($ftgewicht_data = xtc_db_fetch_array($ftgewicht_query,true)) {
              $this->ft_gewicht[$ftgewicht_data['products_id']]=array('gewicht'=>$ftgewicht_data['products_weight']);

            if ($ftgewicht_data <= 0.011) {
            $ftcomid = 95;
            }
            if ($ftgewicht_data> 0.011 AND $ftgewicht_data <= 30) {
            $ftcomid = 96;
            }
            if ($ftgewicht_data> 30 AND $ftgewicht_data <= 40) {
            $ftcomid = 97;
            }
            if ($ftgewicht_data> 40 AND $ftgewicht_data <= 70) {
            $ftcomid = 98;
            }
            if ($ftgewicht_data> 70) {
            $ftcomid = 99;
            } else {
            $ftcomid = 1;
            }
           }

                function getGewicht($id) {
                     return $this->ft_gewicht[$id]['gewicht'];
             }

    return ' '.SHIPPING_EXCL.' <a target="_blank" href="'.xtc_href_link(FILENAME_POPUP_CONTENT, 'coID='.$ftcomid.'&KeepThis=true&TB_iframe=true&height=400&width=600').'" title="Information" class="thickbox">'.SHIPPING_COSTS.'</a>';
              }
     
    Vielen Dank im Voraus für Eure Hilfe
    Volkmar



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

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Versandkostenlink
    Antwort #1 am: 09. August 2010, 14:50:17
    du definierst die Function getGewicht in der Function getShippingLink

    Firsttrade

    • Neu im Forum
    • Beiträge: 34
    Versandkostenlink
    Antwort #2 am: 09. August 2010, 15:16:25
    Danke für die schnelle Antwort. Die Fehlermeldung ist jetzt weg. Allerdings bekomme ich die Variable $ftcomid nicht an die function getShippingLink() übergeben :-(
    wie kann ich das jetzt noch bewerkstelligen?

    Code: PHP  [Auswählen]
    function gewicht () {

              $this->ft_gewicht = array();

            $ftgewicht_query=xtDBquery("SELECT products_weight,
                                               products_id
                                       FROM "
    .TABLE_PRODUCTS."
                                       WHERE products_id = '"
    .(int)$_SESSION['products_id']."'");

            while ($ftgewicht_data = xtc_db_fetch_array($ftgewicht_query,true)) {
              $this->ft_gewicht[$ftgewicht_data['products_id']]=array('gewicht'=>$ftgewicht_data['products_weight']);

              if ($ftgewicht_data <= 0.011) {
            $ftcomid = 95;
            }
            if ($ftgewicht_data> 0.011 AND $ftgewicht_data <= 30) {
            $ftcomid = 96;
            }
            if ($ftgewicht_data> 30 AND $ftgewicht_data <= 40) {
            $ftcomid = 97;
            }
            if ($ftgewicht_data> 40 AND $ftgewicht_data <= 70) {
            $ftcomid = 98;
            }
            if ($ftgewicht_data> 70) {
            $ftcomid = 99;
            } else {
            $ftcomid = 1;
            }

             }
                   function getGewicht($id) {
                     return $this->ft_gewicht[$id]['gewicht'];
             }
             }

             function getShippingLink() {

    return ' '.SHIPPING_EXCL.' <a target="_blank" href="'.xtc_href_link(FILENAME_POPUP_CONTENT, 'coID='.$ftcomid.'&KeepThis=true&TB_iframe=true&height=400&width=600').'" title="Information" class="thickbox">'.SHIPPING_COSTS.'</a>';
            }
     

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Versandkostenlink
    Antwort #3 am: 09. August 2010, 15:41:43
    du gibst die Variable nicht zurück

    Code: PHP  [Auswählen]
    return $ftcomid;
     
    zudem rufst du die Function gewicht nicht auf !

    bitte schau dir das mal an: http://php.net/manual/de/language.functions.php

    Hetfield

    • modified Team
    • Beiträge: 937
    Versandkostenlink
    Antwort #4 am: 09. August 2010, 15:43:14
    Probier mal so:

    Code: PHP  [Auswählen]
    function getShippingLink($pid='') {
                    if ($pid != '') {
                            $ftgewicht_query = xtDBquery("SELECT products_weight, products_id FROM ".TABLE_PRODUCTS." WHERE products_id = '".(int)$pid."'");
                    $ftgewicht = xtc_db_fetch_array($ftgewicht_query,true);
                            if ($ftgewicht['products_weight'] <= '0.011') {
                                    $ftcomid = 95;
                            } elseif ($ftgewicht['products_weight']> '0.011' AND $ftgewicht['products_weight'] <= '30') {
                                    $ftcomid = 96;
                            } elseif ($ftgewicht['products_weight']> '30' AND $ftgewicht['products_weight'] <= '40') {
                                    $ftcomid = 97;
                            } elseif ($ftgewicht['products_weight']> '40' AND $ftgewicht['products_weight'] <= '70') {
                                    $ftcomid = 98;
                            } elseif ($ftgewicht['products_weight']> '70') {
                                    $ftcomid = 99;
                            } else {
                                    $ftcomid = SHIPPING_INFOS;
                            }
                    } else {
                            $ftcomid = SHIPPING_INFOS;
                    }
                    return ' '.SHIPPING_EXCL.' <a target="_blank" href="'.xtc_href_link(FILENAME_POPUP_CONTENT, 'coID='.$ftcomid.'&KeepThis=true&TB_iframe=true&height=400&width=600').'" title="Information" class="thickbox">'.SHIPPING_COSTS.'</a>';
            }
    Du musst dann nur in der includes/classes/product.php, includes/modules/product_info.php usw. dem funtionsaufruf $main->getShippingLink() die products_id mitgeben. Also in der includes/classes/product.php würde das so aussehen:

    Code: PHP  [Auswählen]
    'PRODUCTS_SHIPPING_LINK' => $main->getShippingLink($array['products_id']),
    und in der includes/modules/product_info.php ungefähr so:
    Code: PHP  [Auswählen]
    $info_smarty->assign('PRODUCTS_SHIPPING_LINK',$main->getShippingLink($product->data['products_id']));
    usw.

    Ungetestet und wie immer auf eigene Gefahr!  ;)

    MfG Hetfield  8)

    Firsttrade

    • Neu im Forum
    • Beiträge: 34
    Versandkostenlink
    Antwort #5 am: 10. August 2010, 08:01:51
    Vielen Dank an GTB - werde mich in die Tiefen der Funktionen begeben um es mal zu verstehen.
    Meine letzten Programmier-Versuche waren 1988 und das war damals in BASIC ...

    Herzlichen Dank an Hetfield! Es funktioniert wunderbar! Bei jedem Artikel werden nun die wirklich anfallenden Versandkosten angezeigt. :-))

    Vielleicht hat ja noch jemand eine Idee, wie ich die numerische Versandkostenanzeige im Warenkorb bewerkstelligen kann. Meine Feststellung ist nämlich, dass viele Kunden dieses erwarten und wenn sie es nicht vorfinden ihre Bestellung abbrechen. :-(

    7 Antworten
    7728 Aufrufe
    03. September 2009, 17:27:53 von Tomcraft
    2 Antworten
    1787 Aufrufe
    14. August 2015, 09:31:48 von turbolino
    4 Antworten
    2575 Aufrufe
    17. Januar 2017, 17:54:21 von noRiddle (revilonetz)
               
    anything