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: Ein Feld aus Tabelle Products bei Orders auslesen und anzeigen

    Clever

    • Schreiberling
    • Beiträge: 257
    Moinsen...

    Zur Arbeitserleichterung wollte ich uns bei den erfolgten Bestellungen zu den jeweiligen Artikeln auch eine interne nummer anzeigen lassen.

    diese ist in der Tabelle "products" hinterlegt, wird aber ja nicht mit in die "orders_products" übernommen.

    Da aber die "products_model" bei orders_products und products identisch ist, dachte ich man kann das auslesen und anzeigen:

    Code: PHP  [Auswählen]
                    $zusatz_query = xtc_db_query("SELECT
                                                                    op.orders_id,
                                                                    op.products_model,
                                                                    p.products_model,
                                                                    p.Zusatzfeld1,         
                                                                    FROM "
    .TABLE_ORDERS_PRODUCTS." op
                                                                     left join "
    .TABLE_PRODUCTS." p
                                                    on (op.products_model = p.products_model)
                                                                    WHERE orders_id='"
    .$oID."'");
           
                    $zusatzfeld = array ($zusatz_query['Zusatzfeld1']);

    Aber die Anzeige weiter unten:
    Code: PHP  [Auswählen]
                    echo '            </td>'."\n".'            <td class="dataTableContent" valign="top">';

                    if ($order->products[$i]['model'] != '') {
                            echo $order->products[$i]['model'];

                    } else {
                            echo '<br />';
                    }

                    // attribute models
                    if (sizeof($order->products[$i]['attributes']) > 0) {
                            for ($j = 0, $k = sizeof($order->products[$i]['attributes']); $j < $k; $j ++) {

                                    $model = xtc_get_attributes_model($order->products[$i]['id'], $order->products[$i]['attributes'][$j]['value'],$order->products[$i]['attributes'][$j]['option']);
                                    if ($model != '') {
                                            echo $model.'<br />';
                                    } else {
                                            echo '<br />';
                                    }
                                                    echo '&nbsp;</td>'."\n".'            <td class="dataTableContent" valign="top">';

                            echo $zusatzfeld;
    bleibt leer....
    nur irgendwie finde ich meinen Denkfehler grad nicht - jemand hier eine Idee ?
    DANKE

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

    webald

    • modified Team
    • Beiträge: 2.791
    Re: Ein Feld aus Tabelle Products bei Orders auslesen und anzeigen
    Antwort #1 am: 30. Oktober 2013, 14:45:42
    1. Wo willst Du das machen?
    2. In welcher Datei steht Dein Code?
    3. In Deiner Abfrage sind mehrere Fehler ("," und Felder die es in der Tabelle im Standard nicht gibt). Hast Du mal versucht die Abfrage in phpmyadmin auszuführen?

    Clever

    • Schreiberling
    • Beiträge: 257
    Re: Ein Feld aus Tabelle Products bei Orders auslesen und anzeigen
    Antwort #2 am: 30. Oktober 2013, 16:49:40
    Hallo Webald.

    Also ich möchte im Admin bei den Bestellungen (also der admin/orders.php) unsere interne Lagernummer mit anzeigen lassen - diese wurde im extra angelegten Feld (Zusatzfeld1)in der tabelle products  hinterlegt.

    Code: PHP  [Auswählen]
    //                              while ($zusatz_values = xtc_db_fetch_array($zusatz_query)) {
                    $zusatz_query = xtc_db_query("SELECT
                                                                    p.products_model,
                                                                    p.Zusatzfeld1,
                                                                    op.orders_id
                                                                    FROM  "
    .TABLE_PRODUCTS."
                                                                    left join "
    .TABLE_ORDERS_PRODUCTS." op
                                                                    WHERE p.products_model='"
    .$order_data_values['products_model']."' AND op.orders_id='".$oID."'");
           
                    $zusatz = array ();
                                    while ($zusatz_values = xtc_db_fetch_array($zusatz_query)) {
           
                            $zusatz_1[] = array ('ZUSATZFELD1' => $zusatz_values['Zusatzfeld1'], 'PRODUCTS_MODEL' => $zusatz_values['products_model']);
                    }
                   
           
    hab ich nun versucht - fürchte aber das die wherebedingungen wieder Stolperstein sind

    denn:
    Code: PHP  [Auswählen]
                                                    echo '&nbsp;</td>'."\n".'            <td class="dataTableContent" valign="top">';
                    if ($zusatz_values['Zusatzfeld1'] != '') {
                            echo $zusatz_values['Zusatzfeld1'] ;
                    } else {
                            echo '9999999';
                    }              
    zeigt immer den Wert 9999999 - ist also leer :(

    webald

    • modified Team
    • Beiträge: 2.791
    Re: Ein Feld aus Tabelle Products bei Orders auslesen und anzeigen
    Antwort #3 am: 30. Oktober 2013, 17:13:01
    Probier mal Deine Abfrage
    Code: SQL  [Auswählen]
    SELECT
                                                                    p.products_model,
                                                                    p.Zusatzfeld1,
                                                                    op.orders_id
                                                                    FROM  ".TABLE_PRODUCTS."
                                                                    LEFT JOIN ".TABLE_ORDERS_PRODUCTS." op
                                                                    WHERE p.products_model='".$order_data_values['products_model']."' AND op.orders_id='".$oID."'"

    in phpmyadmin auszuführen. Natürlichmußt da die richtigen Tabellennamen und gültige Werte für die Parameter eingeben. Geht das? Ich glaube nein.

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Ein Feld aus Tabelle Products bei Orders auslesen und anzeigen
    Antwort #4 am: 30. Oktober 2013, 19:35:07
    Warum so umständlich?

    Einfach nach der products_id suchen:

    Code: PHP  [Auswählen]
    $zusatz_query = xtc_db_query("
                      SELECT Zusatzfeld1
                      FROM   "
    .TABLE_PRODUCTS."
                      WHERE products_id = "
    .(int)$order->products[$i]['id']."
                    "
    );

                    $zusatz = xtc_db_fetch_array($zusatz_query);
                    $order->products[$i]['Zusatzfeld1'] = $zusatz['Zusatzfeld1'];
     

    Zu verwenden mit:

    Code: PHP  [Auswählen]
    echo $order->products[$i]['Zusatzfeld1']

    Richtiger wäre es aber, den Wert gleich in die table_orders_products zu schreiben, damit ältere Bestellungen bei einer Änderung nicht mit betroffen sind.

    Clever

    • Schreiberling
    • Beiträge: 257
    Re: Ein Feld aus Tabelle Products bei Orders auslesen und anzeigen
    Antwort #5 am: 31. Oktober 2013, 10:53:14
    Hi Web0null

    Normal geb ich Dir recht, das es sinnvoller wäre den Wert mit zu übergeben, allerdings dient diese Nummer nur der Auftragserfassung.

    SOLLTE nun ein Kunde diesen Artikel nach Wochen oder monaten erneut bestellen wollen - und er ist mitlerweile nicht mehr verfügbar, soll eben die 9999999 erscheinen - sogesehen ist es also gewollt.

    ABER Deine Lösung liefert mir auch ein leeres Resultat :(

    habe die Abfrage schon um die products_id erweitert, aber auch dies bringt keine Abhilfe.

    auch ein Umbau auf:
    Code: PHP  [Auswählen]
    $zusatz_query = xtc_db_query("
                     SELECT Zusatzfeld1,
                                                    products_id
                     FROM   "
    .TABLE_PRODUCTS."
                     WHERE products_id = '"
    .$order_data_values['products_id']."'");
     
                    $zusatz = xtc_db_fetch_array($zusatz_query);
                    $order->products[$i]['Zusatzfeld1'] = $zusatz['Zusatzfeld1'];
    Code: PHP  [Auswählen]
                    if ($order->products[$i]['Zusatzfeld1'] != '') {
                                echo $order->products[$i]['Zusatzfeld1'];
                    } else {
                            echo '9999999';
                    }              
    das besagte Feld "Zusatzfeld1 ist nie leer, da die Daten im Shop mittels CSV übertragen wurden und in allen Artikeln der Wert übergeben wurde - das habe ich auch geprüft.

    So - hatte wieder Deine Lösung genutzt aber das mal an anderer Stelle platziert - funzt zwar auch nicht, aber die MYSQL Fehlermeldung war interessant:
    ...where products_id = 0 ... für ihn ist also der Wert WHERE products_id = ".(int)$order->products[$i]['id']. =0

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Ein Feld aus Tabelle Products bei Orders auslesen und anzeigen
    Antwort #6 am: 31. Oktober 2013, 12:25:33
    Mein Code ist für die admin/orders.php "letzte Version", Abschnitt "ORDER BLOCK".
    ... und da geht er auch.
    Dein "$order_data_values..." gibt es in der Datei nicht.
    Anscheinend setzt du den Code in einer anderen Datei ein, da ich aber leider keine :glaskugel: habe, kann man dir auch nicht weiterhelfen.

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Ein Feld aus Tabelle Products bei Orders auslesen und anzeigen
    Antwort #7 am: 31. Oktober 2013, 13:02:03
    Zitat
    So - hatte wieder Deine Lösung genutzt aber das mal an anderer Stelle platziert - funzt zwar auch nicht, aber die MYSQL Fehlermeldung war interessant:

    Ach ja, und an welche stelle,  :glaskugel:
    Du bist doch wohl nicht der Meinung das man "Code" einfach irgendwo einsetzen kann, oder doch?

    Einen Rat gebe ich dir noch mit.
    Gib einfach in Zukunft an, was du in welcher Datei einsetzen willst, in welcher Datei du es probiert hast, welche Shopversion du verwendest, usw. usw.. ;-) ;-)

    Clever

    • Schreiberling
    • Beiträge: 257
    Re: Ein Feld aus Tabelle Products bei Orders auslesen und anzeigen
    Antwort #8 am: 31. Oktober 2013, 13:33:16
    Danke der Hinweis war gut ^^

    Ich hatte eine etwas ältere Version verwendet, weil da zahlreiche Codeschnipsel vom Vorgänger drin waren die nützlich sind.

    Es funktioniert nun super - hatte die DB Abfrage falsch positioniert ... vielen Dank
    rechtstexte für onlineshop
    6 Antworten
    4196 Aufrufe
    28. April 2011, 09:51:14 von hendrik
    2 Antworten
    2274 Aufrufe
    15. April 2015, 13:27:20 von webald
    4 Antworten
    2323 Aufrufe
    29. Januar 2017, 22:03:09 von awids