Umsetzungsprobleme

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Umsetzungsprobleme

    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:
    PHP-Code:
    $gender_paymentxtc_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

  • #2
    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?

    Kommentar


    • #3
      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

      Kommentar


      • #4
        Zusatzinfo

        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:
        PHP-Code:
             //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
        EDIT:
        zeilenumbrüche sponsored by kropff
        Zuletzt geändert von Kropff; 09.02.2009, 19:29.

        Kommentar


        • #5
          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

          Kommentar


          • #6
            Zuweisungsoperator != Vergleichsoperator.
            Freedom is a state of mind. Not a state in which we live.

            troxdev.ch | animefieber

            Kommentar


            • #7
              @ymmi
              code umbrechen. hier findet ja keiner mehr den antworten-button.

              und lies dir mal das hier durch.

              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar

              Lädt...
              X