rechtstexte für onlineshop
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: Dropdownfeld in admin/specials.php reagiert auf keine Änderung

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Ich sitze hier jetzt mittlerweile fast 1 Stunde an zwei Zeilen Code und nichts ändert sich.

    Eigentlich wollte ich mir hinter dem Preis für das Sonderangebot im Dropdownfeld noch die Artikelnummer anzeigen lassen. Normalerweise kein Problem, also schnell die SELECT-Queries erweitert, das Array erweitert und los geht's. Doch es passiert nichts. Null, nada, niente.

    Diese Zeile macht mir zu schaffen:

    Code: PHP  [Auswählen]
    <td class="main"><?php echo ($sInfo->products_name) ? $sInfo->products_name . ' <small>(' . $xtPrice->xtcFormat($price,true). ')</small>' : xtc_draw_products_pull_down('products_id', 'style="font-size:10px"', $specials_array); echo xtc_draw_hidden_field('products_price', $sInfo->products_price); ?></td>

    Selbst wenn ich daraus:

    Code: PHP  [Auswählen]
    <td class="main"><?php echo ($sInfo->products_name) ? $sInfo->products_name : xtc_draw_products_pull_down('products_id', 'style="font-size:10px"', $specials_array); echo xtc_draw_hidden_field('products_price', $sInfo->products_price); ?></td>

    oder

    Code: PHP  [Auswählen]
    <td class="main"><?php echo ($sInfo->products_name) ? $sInfo->products_name . ' <small>(' . $xtPrice->xtcFormat($price,true). ')</small>' : xtc_draw_products_pull_down('products_id', 'style="font-size:10px"', ''); echo xtc_draw_hidden_field('products_price', $sInfo->products_price); ?></td>

    mache, ändert sich rein gar nichts. Nicht einmal eine Fehlermeldung wird produziert.

    Drehe ich an der falschen Schraube?

    Gruß
    Ronny

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

    web28

    • modified Team
    • Beiträge: 9.404
    Hallo Ronny,

    Du drehts tatsächlich an der falschen Schraube.

    Richtig wäre diese Funktion in admin/includes/functions/general.php zu erweitern:

    function xtc_draw_products_pull_down ...

    Falls die Art-Nr an anderen Stellen stören sollte, könnte man einen zusätzlichen Funktions Parameter hinzufügen:

    Code: PHP  [Auswählen]
    function xtc_draw_products_pull_down($name, $parameters = '', $exclude = '', $show_pmodel = false) {

    Der Aufruf in specials.php sähe dann so aus:

    Code: PHP  [Auswählen]
    xtc_draw_products_pull_down('products_id', 'style="font-size:10px"', $specials_array, true)

    Gruss Web28

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Hmm, das wäre mir zu global.

    Denn ich habe im neuen Shop auch Liveshopping laufen und die Datei liveshopping.php aus dem Backend hat ja die specials.php als Grundlage.

    Hier habe ich auch diese Zeile erweitert:
    Code: PHP  [Auswählen]
    echo xtc_draw_hidden_field('products_price', $sInfo->products_price);
        echo ($sInfo->products_name) ? $sInfo->products_name . ' <small>(' . $xtPrice->xtcFormat($price, true) . ')</small><b>(Art.-Nr.: ' . $sInfo->products_model . ')</b>' : xtc_draw_pull_down_menu('products_id', $ls_array, $default = '', $parameters = 'style="font-size:10px;max-width:350px;"');
     
    und es funktioniert.

    Meine Logik reicht einfach nicht so weit, dass ich mir nicht erklären kann, wieso ich $specials_array erweitert habe, aber nichts passiert.

    Gruß
    Ronny

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo Ronny,

    hast Du es mal so probiert:

    Code: PHP  [Auswählen]
    <td class="main">
      <?php
        if ($sInfo->products_name){
          echo $sInfo->products_name . ' <small>(' . $xtPrice->xtcFormat($price,true) . ')</small>';
        } else {
          echo xtc_draw_products_pull_down('products_id', 'style="font-size:10px"', $specials_array);
          echo xtc_draw_hidden_field('products_price', $sInfo->products_price);
        }
       ?>
    </td>

    Viele Grüße

    Franky

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Hallo Franky, das habe ich auch probiert, ohne Erfolg. Ist das nicht auch nur die Schönschreibweise von der besagten Zeile in der specials.php?

    Gerade bin ich noch deprimierter, weil ich defintiv weiß, dass in dem SELECT-Query die Artikelnummer enthalten ist.

    Bisher habe ich folgende Änderungen vorgenommen:
    Code: PHP  [Auswählen]
    $specials_query = xtc_db_query("
      select
        p.products_id,
        p.products_model
      from
        "
    . TABLE_PRODUCTS . " p,
        "
    . TABLE_SPECIALS . " s
      where s.products_id = p.products_id
    "
    );
     
    Also einfach nur p.products_model hinzugefügt.

    Aus dem
    Code: PHP  [Auswählen]
    while ($specials = xtc_db_fetch_array($specials_query)) {
      $specials_array[] = $specials['products_id'];
    }
     

    habe ich das gemacht
    Code: PHP  [Auswählen]
    while ($specials = xtc_db_fetch_array($specials_query)) {
      $entry = array(
        'id' => $specials['products_id'],
        'text' => $specials['products_name'] . ' (' . xtc_round($specials['products_price'], PRICE_PRECISION) . ')' . '<b>(Art.-Nr.: ' . $specials['products_model'] . ')</b>'
    );
      $specials_array[] = $entry;
    }
     

    Somit sollte $specials_array für das <select>-Feld befüllt sein. Aber es ändert sich nichts.

    Nun kommt noch die Krönung. Wenn ich ein print_r($specials_array) mache wird auch noch alles richtig ausgegeben.
    Zitat
    Array (
    • => Array ( [id] => 310 [text] => (0)(Art.-Nr.: 11049) ) )
    Weiß gerade echt nicht weiter? Kann es sein, dass die ganze specials.php einen Knacks hat?

    Gruß
    Ronny

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo Ronny,

    ja ich hatte gedacht das es evtl. an einer Klammer oder so liegen könnte darum die Schönschreibweise.

    Aber ich sehe jetzt Dein Problem! :)

    Wo sagst Du denn der Funktion "xtc_draw_products_pull_down" das Sie ein Mehrdimensionales Array auslesen soll anstatt ein "Einsimensionales"?

    Viele Grüße

    Franky

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Nirgendwo, das stimmt schon.
    Dann frage ich mich aber, wieso diese Zeile aus der live_shopping.php im Backend wunderbar funktioniert.
    Code: PHP  [Auswählen]
    echo ($sInfo->products_name) ? $sInfo->products_name . ' <small>(' . $xtPrice->xtcFormat($price, true) . ')</small>' : xtc_draw_pull_down_menu('products_id', $ls_array, $default = '', $parameters = 'style="font-size:10px;max-width:350px;"');
     

    Das einzige was mir hier als Unterschied aufgefallen ist, ist die Reihenfolge der Angaben in der Funktion.

    Gruß
    Ronny

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo R0nny,

    wie wird denn dieses Array befüllt?
    Code: PHP  [Auswählen]
    $ls_array

    Viele Grüße

    Franky

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Franky, das $ls_arry wird folgendermaßen befüllt.
    Code: PHP  [Auswählen]
    $sql = sprintf("-- admin/live_shopping.php
                            SELECT
                                    p.products_id,
                                    p.products_model,
                                    pd.products_name,
                                    p.products_tax_class_id,
                                    p.products_price
                            FROM %s p
          INNER JOIN %s pd ON p.products_id = pd.products_id
          WHERE pd.language_id = '%u'
          AND products_status %s
          ORDER BY products_name"
    , TABLE_PRODUCTS, TABLE_PRODUCTS_DESCRIPTION, $_SESSION['languages_id'], $selected);
        $res = xtc_db_query($sql);
        $ls_array = array();
        while ($ls = xtc_db_fetch_array($res)) {
          if (in_array($ls['products_id'], $exclude)) {
            continue;
          }
          $tax_rate = xtc_get_tax_rate($ls['products_tax_class_id']);
          if (PRICE_IS_BRUTTO == 'true') {
            $ls['products_price'] = xtc_round($ls['products_price']*((100+$tax_rate) /100), PRICE_PRECISION);
          }
          $entry = array(
                                    'id' => $ls['products_id'],
                                    'text' => $ls['products_name'] . ' (' . xtc_round($ls['products_price'], PRICE_PRECISION) . ')' . '<b>(Art.-Nr.: ' . $ls['products_model'] . ')</b>' );
          $ls_array[] = $entry;
        }

     

    franky_n

    • Experte
    • Beiträge: 4.950
    Hallo Ronny,

    mach mal eine print_r Ausgabe am Ende der Datei.
    Der Einbau ist ja genauso wie der in der live_shopping.php kann es ja nur sein das dieses Array überschrieben wird oder Dir der Cache einen Strich durch die Rechnung macht.

    An der Ausführung Deines Einbaus ist ansonsten nichts zu mäkeln. :)

    Viele Grüße

    Franky

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Dropdownfeld in admin/specials.php reagiert auf keine Änderung
    Antwort #10 am: 11. Februar 2012, 21:55:39
    Also ein print_r($specials_array) in der specials.php ergibt
    Code: PHP  [Auswählen]
    Array ( [0] => Array ( [id] => 310 [text] => (0)(Art.-Nr.: 11049) ) )
     

    und ein print_r($ls_array) in der live_shopping.php ergibt
    Code: PHP  [Auswählen]
    Array ( [0] => Array ( [id] => 420 [text] => (12.9)(Art.-Nr.: 11438) ) [1] => Array ( [id] => 394 [text] => Abendkleid (34.9)(Art.-Nr.: 12426-014-005) ) [2] => Array ( [id] => 427 [text] => Abendkleid (46.9)(Art.-Nr.: 12439) )
     

    In der live_shopping.php werden so alle Artikel ausgeben.

    So langsam sehe ich wenigstens, dass etwas mit dem Array in der specials.php nicht stimmen kann.

    franky_n

    • Experte
    • Beiträge: 4.950
    Re: Dropdownfeld in admin/specials.php reagiert auf keine Änderung
    Antwort #11 am: 11. Februar 2012, 22:11:45
    Hallo Ronny,

    also ich sehe eigentlich das in der specials das Array korrekt geschlossen wird aber in der live_shopping nicht...

    specials.php
    Code: PHP  [Auswählen]
    Array ( [0] => Array (
                          [id] => 310
                          [text] => (0)(Art.-Nr.: 11049)
                         )
          )

    live_shopping.php
    Code: PHP  [Auswählen]
    Array (
            [0] => Array (
                          [id] => 420
                          [text] => (12.9)(Art.-Nr.: 11438)
                         )
            [1] => Array (
                          [id] => 394
                          [text] => Abendkleid (34.9)(Art.-Nr.: 12426-014-005)
                         )
            [2] => Array (
                          [id] => 427
                          [text] => Abendkleid (46.9)(Art.-Nr.: 12439)
                         )

    Schon komisch ...

    Viele Grüße

    Franky

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Dropdownfeld in admin/specials.php reagiert auf keine Änderung
    Antwort #12 am: 11. Februar 2012, 22:16:02
    Ich hänge mal einfach beide Dateien als .zip dran. So irgendwie stehe ich gerade davor den Mist in die Tonne zu schmeißen. Komme mir gerade so vor, als wenn zwei das Gleiche tun, es aber doch nicht das Selbe ist.

    Gruß
    Ronny

    franky_n

    • Experte
    • Beiträge: 4.950
    Re: Dropdownfeld in admin/specials.php reagiert auf keine Änderung
    Antwort #13 am: 11. Februar 2012, 22:29:17
    Hallo Ronny,

    die liva_shopping.php ist wohl die falsche aber ich könnte mir jetzt vorstellen warum.

    Die xtc_draw_pull_down_menu im Frontend:
    Code: PHP  [Auswählen]
    function xtc_draw_pull_down_menu($name, $values, $default = '', $parameters = '', $required = false) {
    ist anders als die im Backend:
    Code: PHP  [Auswählen]
    function xtc_draw_products_pull_down($name, $parameters = '', $exclude = '') {

    Könnte da das Problem liegen?

    Viele Grüße

    Franky
     

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Dropdownfeld in admin/specials.php reagiert auf keine Änderung
    Antwort #14 am: 11. Februar 2012, 22:39:42
    Leider nein, Franky. Das ist schon die live_shopping.php für das Backend. Habe sie eben noch einmal mit der Originaldatei aus dem Moduldownload verglichen.

    Ich habe in meiner Version lediglich des altbackenen js-Calendar gegen einen modifiziertes jQuery Datepicker Plugin ersetzt.

    Gruß
    Ronny
    15 Antworten
    2846 Aufrufe
    23. Mai 2020, 17:43:31 von Tomcraft
    11 Antworten
    7843 Aufrufe
    15. Dezember 2010, 21:32:07 von Tomcraft
    7 Antworten
    2565 Aufrufe
    08. Januar 2021, 11:21:10 von Timm
               
    anything