Jump to content
xt:Commerce Community Forum

Brauche mal Hilfe bei einer sql Anfrage


yummi

Recommended Posts

Hallo Ihr,

ich hoffe hier sind einige sql freaks unterwegs, die mir auf die Sprünge helfen können. Ich habe eine Bestellung, dass heisst ich kenne die orders_id aus der Tabelle orders (nehmen wir mal an 2719). Dieser Kunde hat schon öfters mit unterschiedlichen Empfangsadressen bestellt. Ich möchte jetzt aus der DB per sql Anfrage rausfinden, welchen Geschlechts die Empfangsadresse ist.

Dazu habe ich folgende Anfrage erstellt

SELECT address_book.entry_gender

FROM orders INNER JOIN address_book ON orders.customers_id = address_book.customers_id

WHERE (((orders.delivery_name) =(address_book.entry_firstname+' '+address_book.entry_lastname)) AND orders.orders_id = 2719);

Als Ergebnis erhalte ich jetzt nicht wie gewünscht die eine Zeile, die die Bestellung 2719 betrifft, sondern die entry_gender von dem Kunden und von allen seinen unterschiedlichen Empfangsaddressen.

Was mache ich falsch?

Erst wenn ich die richtige Anfrage habe lohnt es sich, darüber nachzudenken wie ich das progtechnisch umsetzen kann.

Das Ziel ist die Anrede der Empfangsadresse in der Rechnung.

Ich hoffe ihr könnt mir helfen

yummi

Link to comment
Share on other sites

Hallo John,

ich will ja auch nur den gender haben. Ich habe aber jetzt gesehen, woran es lag:

SELECT address_book.entry_gender

FROM orders INNER JOIN address_book ON orders.customers_id = address_book.customers_id

WHERE

(

((orders.delivery_firstname) = (address_book.entry_firstname)) AND

((orders.delivery_lastname) = (address_book.entry_lastname)) AND

((orders.orders_id) = 2719)

);

so funzt es. So bekomme ich das Geschlecht der Empfangsadresse der Bestellung Nr 2719 heraus.

Jetzt beginnt der Teil, wo ich das Ganze dann auch umsetzen will.

Ich habe in der general.php folgendes ergänzt:

//--------my new functions--------------------------------------------------------

// xtc_get_payment_adress_gender

// input variable: order_number

// the function caculate the gender of the person who gets the bill

function xtc_get_payment_address_gender($oID) {

$gender = xtc_db_query("SELECT address_book.entry_gender

FROM orders INNER JOIN address_book ON orders.customers_id = address_book.customers_id

WHERE

(

((orders.delivery_firstname) = (address_book.entry_firstname)) AND

((orders.delivery_lastname) = (address_book.entry_lastname)) AND

((orders.orders_id) = $oID)

));

if ($gender = 'f')

return "Frau";

elseif ($gender = 'm'")

return "Herrn";

else

return "Firma";

}

Ich weiß aber noch nicht, ob das alles so richtig ist bzw. ob das in der general überhaupt verankert werden muss.

Nach weiterern Recherchen habe ich jetzt gefunden, das ich in der print_order.php eine smarty Zuweisung machen muss (Wie auch immer?), damit ich dann in der print_order.html auf die entsprechnede Variable zugreifen kann und diese dann als Anrede ausgeben kann.

Ich hoffe, dass meine Überlegungen richtig sind. Falls nicht, wäre es klasse wenn ihr mir auf die Sprünge helfen könntet.

Ich bin für jeden Tip dankbar.

yummi

Link to comment
Share on other sites

Hallo Ihr,

ich habe mir mal das Smarty Handbuch zu gemüte geführt und bin auch etwas weiter gekommen. Um in der Rechnung die Anrde der Empfangsadresse rein zu bekommen habe ich in der print_order.php eine zusätzliche Variable eingeführt.

 $gender_payment= xtc_db_query("SELECT TABLE_ADDRESS_BOOK.entry_gender 

FROM ".TABLE_ORDERS." INNER JOIN ".TABLE_ADDRESS_BOOK." ON TABLE_ORDERS.customers_id = TABLE_ADDRESS_BOOK.customers_id 

WHERE 

(

((TABLE_ORDERS.delivery_firstname) = (TABLE_ADDRESS_BOOK.entry_firstname)) AND 

((TABLE_ORDERS.delivery_lastname) = (TABLE_ADDRESS_BOOK.entry_lastname)) AND 

((TABLE_ORDERS.orders_id) = "'".(int)$_GET['oID']."'")

);

if ($gender_payment = "f") 

$smarty->assign('gender_payment, "Frau");

elsif ($gender_payment = "m") 

$smarty->assign('gender_payment, "Herrn");

else 

$smarty->assign('gender_payment, "Firma");

Wenn ich mir die Variable gender_payment in print_order.html ausgeben lassen möchte, dann bekomme ich folgende Fehlermeldung

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /.../admin/print_order.php on line 117

Zeile 117 ist die 1. Zeile des dagestellten Codes.

Bitte helft mir

yummi

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...