yummi Posted February 4, 2009 Report Share Posted February 4, 2009 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 More sharing options...
John Steed Posted February 4, 2009 Report Share Posted February 4, 2009 Was mache ich falsch? SELECT address_book.entry_gender liest halt nur das Geschlecht aus. Wenn Du den ganzen Datensatz haben willst, musst Du schon nach SELECT *[/code] fragen Cheers, IaN Link to comment Share on other sites More sharing options...
yummi Posted February 4, 2009 Author Report Share Posted February 4, 2009 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 More sharing options...
yummi Posted February 5, 2009 Author Report Share Posted February 5, 2009 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.