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: Bestellmenge eines Artikels in ein array speichern und summieren

    DonToni

    • Neu im Forum
    • Beiträge: 9
    Moin,

    ich versuche gerade die Bestellmenge eines Produktes abzufragen, in ein array zu speichern, die Bestellmengen zu summieren und diese Summe dann weiter zu nutzen.
    Leider funktioniert es nicht so wie ich es versucht habe.

    Code: PHP  [Auswählen]
    $pid=$product->data['products_id'];

    $bestellungen_DBabfrage="SELECT orders_products.products_quantity FROM ".TABLE_ORDERS."
    INNER JOIN "
    .TABLE_ORDERS_PRODUCTS." on orders.orders_id=orders_products.orders_id
    where orders.date_purchased >= now() - INTERVAL 5000 DAY and orders_products.products_id="
    .$pid."";

    $bestellungen = xtDBquery($bestellungen_DBabfrage);
    $test=xtc_db_fetch_array($bestellungen,true);

    $summe_bestellungen = array_sum($test);
     

    Die SQL Abfrage funktioniert soweit.

    freundliche Grüße und vielen Dank schon mal

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

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Du mußt das Array (xtc_db_fetch_array()) in einem while-Loop bilden, denn du hast nicht nur ein enziges Ergebnis aus deiner Query. Definiere vorher ein leeres Array und fülle es dann im while-Loop. Auf dieses Array wendest du dann array_sum() an.

    Beispiel (mit lesbarerem Code und 'nem kleinen Kommentar ;-)):
    Code: PHP  [Auswählen]
    <?php
    $pid = $product->data['products_id'];

    $bestellungen_DBabfrage = "SELECT op.products_quantity
                                 FROM "
    .TABLE_ORDERS." o
                                 JOIN "
    .TABLE_ORDERS_PRODUCTS." op
                                   ON op.orders_id = o.orders_id
                                WHERE o.date_purchased >= now() - INTERVAL 5000 DAY
                                  AND op.products_id = "
    .(int)$pid;
    //echt jetzt ?, 13,7 Jahre zurück ?

    $bestellungen = xtc_db_query($bestellungen_DBabfrage);

    $qty_array = array();

    while($test = xtc_db_fetch_array($bestellungen)) {
        $qty_array[] = $test['products_quantity'];
    }

    $summe_bestellungen = array_sum($qty_array);

    Ich würde auch nicht die Cache-Funktionen verwenden
    - also xtc_db_query() anstelle von xtDBquery() und ohne den Parameter true in xtc_db_fetch_array() -
    denn ich bezweifele, daß sich bei der Query cachen lohnt. Du bekommst ja ständig andere/neue Ergebnisse.

    Gruß,
    noRiddle

    DonToni

    • Neu im Forum
    • Beiträge: 9
    Vielen Dank für die Antwort. Leider hat es nicht funktioniert.
    hier nochmal mein geänderter Quellcode mit kleiner Testabfrage.

    Code: PHP  [Auswählen]
    $pid=$product->data['products_id'];
     
    $bestellungen_DBabfrage= "SELECT op.products_quantity
                              FROM "
    .TABLE_ORDERS." o
                              INNER JOIN "
    .TABLE_ORDERS_PRODUCTS." op
                              ON o.orders_id=op.orders_id
                              where o.date_purchased >= now() - INTERVAL 700 DAY
                              and op.products_id= "
    .(int)$pid;
     

    $bestellungen = xtc_db_query($bestellungen_DBabfrage);

    $qty_array=array();

    while($test=xtc_db_fetch_array($bestellungen))
    {
      $qty_array[]=$test['products_quantity'];
    }

    $summe_bestellungen = array_sum($qty_array);


    echo "<script type='text/javascript'>alert('$summe_bestellungen');</script>";

    if (!empty($summe_bestellungen))
    {
        echo "<script type='text/javascript'>alert('geht');</script>";
    }
     else {
      echo "<script type='text/javascript'>alert('satz mit x');</script>";
    }
     

    UPDATE!!!!!!!!
    ok jetzt scheint es zu funktionieren aber keine Ahung warum, hab nix weiter geändert

    webald

    • modified Team
    • Beiträge: 2.791
    Warum nicht nur SQL?

    Code: PHP  [Auswählen]
    $bestellungen_DBabfrage= "SELECT SUM(op.products_quantity) Summe
                              FROM "
    .TABLE_ORDERS." o
                              INNER JOIN "
    .TABLE_ORDERS_PRODUCTS." op
                              ON o.orders_id=op.orders_id
                              where o.date_purchased >= now() - INTERVAL 700 DAY
                              and op.products_id= "
    .(int)$pid;

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Sehr gut.
    Ich hatte allerdings nur seine Frage beantwortet warum es nicht geht wie er's probiert hat (ohne Loop).

    Gruß,
    noRiddle

    DonToni

    • Neu im Forum
    • Beiträge: 9
    Warum nicht nur SQL?

    Code: PHP  [Auswählen]
    $bestellungen_DBabfrage= "SELECT SUM(op.products_quantity) Summe
                              FROM "
    .TABLE_ORDERS." o
                              INNER JOIN "
    .TABLE_ORDERS_PRODUCTS." op
                              ON o.orders_id=op.orders_id
                              where o.date_purchased >= now() - INTERVAL 700 DAY
                              and op.products_id= "
    .(int)$pid;

    Das ist natürlich auch eine sehr gute Idee  :thx: :lol:
    Managed Server
               
    anything