php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Umsetzungsprobleme


 
yummi
06-02-2009, 12:56 
 
Hallo Ihr,

ich hoffe ihr könnt mir helfen. Ich habe 2 Tabellen:

1. Tabelle orders mit den benötigten Feldern orders_id, address_book_id und delivery_name
2.Tabelle adress_book mit den benötigten Feldern address_book_id, entry_gender, entry_firstname und entry_lastname.

Ich möchte dann einen Datensatz aus der 1. Tabelle aus auslesen und suche dann mit der erhaltenen address_book_id in der 2. Tabelle und muss dann noch den delivery_name mit entry_firstname+ ' ' + entry_lastname vergleichen. Bei Gleichheit interessiert mich der entry_gender.

Wenn ich diesen Wert gefunden habe, will ich einer Variablen einen Wert zuweisen, den ich als Anrede im html File benutzen möchte.

Soweit zur Theorie, ich habe es so probiert:
$gender_payment= xtc_db_query("SELECT address_book.entry_gender
FROM orders
INNER JOIN address_book ON orders.customers_id = address_book.customers_id
WHERE (
((address_book.entry_firstname+' '+address_book.entry_lastname) = (orders.delivery_name) )
AND (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");


Das Problem das ich jetzt habe ist folgendes. Zu der herausgefundenen address_book_id existieren 3 Einträge mit unterschiedlichen Namen. Ich bekomme aber nicht wie erwartet einen Datensatz als Ergebnis sondern alle 3.
Liegt mein Fehler jetzt in der Abfrage (und wenn ja wo?) oder muss ich das ganze aufteilen in 2 Abfragen, deren Ergebnisse ich dann vergleichen muss. Ich komme einfach nicht weiter, ich hoffe ihr könnt mir helfen. Meine php grundkenntnisse stoßen an Ihre Grenzen.

yummi

 
krel
06-02-2009, 13:15 
 
die Abfrage sollte so hinhauen, aber das DB-Design scheint mir murks zu sein. Wieso gibt es denn zu einer address_book_id mehrere einträge?

 
yummi
06-02-2009, 13:34 
 
Hallo Krel,

es ist so, dass eine Kundin auch mit abweichender Lieferanschrift bestellen kann. Die abweichenden Lieferanschriften werden dieser Kundin, die ja die Rechugsadresse ist zugeordnet, daher können unter ein und der selben address_book_id mehrere Kunden gefunden werden.

Bei der oben beschriebenden Abfrage ist es gleich, ob ich den Vergleich des Namens in der Abfrage habe oder nicht, ich bekomme in beiden Fällen das gleiche Ergebnis, nämlich alle Datensätze dieser address_book_id.

Daher meine Idee, das in 2 Anfragen zu machen, die dann miteinander verglichen werden, ich weiß nur leider nicht wie ich das umsetzen kann.

gruß
yummi

 
yummi
06-02-2009, 15:49 
 
Hallo Ihr,

ich habe inzwischen den Fehler in der Abfrage gefunden, so dass wenn ich die Abfrage direkt in der DB mache, ich auch das gewünschte Ergebnis bekomme:
//new functions
//you get all the datas which have the same addressbook id then the actually customer and the same name then the delivery name
$gender_payment_query = "";
$gender_payment_query = xtc_db_query("SELECT address_book.entry_gender FROM orders
INNER JOIN address_book ON orders.customers_id = address_book.customers_id WHERE ((address_book.entry_firstname = orders.delivery_firstname)
AND (address_book.entry_lastname = orders.delivery_lastname) AND ((orders.orders_id) = ".(int)$_GET['oID']."))");

$gender_payment_value = xtc_db_fetch_array($gender_payment_query);
if ($gender_payment_value = 'm')
$smarty->assign('gender_payment', "Herrn");
elseif ($gender_payment_value = 'f')
$smarty->assign('gender_payment', "Frau");
else
$smarty->assign('gender_payment', "Firma");


Wenn ich mir jetzt allerdings den Wert von $gender_payment_value ausgeben lasse, so ist dieser leer. Bei der if Anweisung schlägt dann immer der 1. Fall zu.

Wie bekomme ich jetzt den richtigen Wert, den meine Abfrage in der DB ja auch liefert heraus so dass ich ihn auch nutzen kann?

Das Ergenis was meine Abfrage liefert ist eine Tabelle mit einer Zeile und einer Spalte (entry_gender)

Das kann doch nur noch eine Kleinigkeit sein, ich komme aber nicht drauf.
Danke für Eure Hilfe
yummi
zeilenumbrüche sponsored by kropff

 
krel
06-02-2009, 17:57 
 
fetch_array, liefert dir wahrscheinlich ein Array, lass dir $gender_payment_value mal mir print_r($gender_payment_value) ausgeben, dann siehst du wo du es herbekommst.
Bitte noch den Code noch umbrechen, da muss man ja horizontal scrollen ohne Ende :)

 
TroX
06-02-2009, 18:10 
 
Zuweisungsoperator != Vergleichsoperator.

 
Kropff
06-02-2009, 19:57 
 
@ymmi
code umbrechen. :teach: hier findet ja keiner mehr den antworten-button.

und lies dir mal das hier (http://www.peterkropff.de/tutorials/php_mysql_fehler/unerklaerlich.htm) durch.

peter


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:54 Uhr.