Avatar billede maabjerg Nybegynder
08. december 2006 - 15:48 Der er 3 kommentarer

Har brug for at kunne søge i 2 tabeller men ved ik lige hvordan?

Hejsa

Jeg sidder og er igang med at lave en søgning af ordrer i et system.

Det er bygget således op at der er noget info som godt kan høre til flere ordre på én gang. Det info ligger i tabellen: Orderinfo.

Derudover er der "selve ordrene" som ligger i tabellen: Orderlines. Hvis der er flere ordre med samme info, har de det samme ordrenummer. Og sorteres med phpkode således de får et bogstav efter nummeret. ex: XC34034A og XC34034B..C..D..E..F.. er der kun én ordre får den ikke noget bogstav.

Her er koden lige.. bare stil nogle spørgsmål :-).
Det er lidt af en tænke opgave.


$this->xcomp = new xcomp;
                       
            //Lister søgningen ud
            $sqlOrderLines = $this->mysql->Query("select * from orderlines where orderno like '".$_POST["XC"]."%'");
            while($rsOrderLines = $this->mysql->Record($sqlOrderLines))
            {
                //Tjekker i tabellen ud fra det forrige while om de enkelte ordre, om der findes flere eller kun en.
                $sqlOrderLineNum = $this->mysql->Query("select * from orderlines where orderno='".$rsOrderLines["orderno"]."'");
                $num = $this->mysql->NumRows($sqlOrderLineNum); //Tæller Rows i søgningen efter orderno
                if($num == 1)
                {
                    //Hvis der kun er én ordre med det orderno (XC*** uden **ABC) kører alt nedenfor her:
                   
                    //Henter data fra Orderinfo tabellen i database til denne row
                    $sqlOrderInfo = $this->mysql->Query("SELECT * FROM orderinfo WHERE orderno='".$rsOrderLines["orderno"]."'");
                    $rsOrderInfo = $this->mysql->Record($sqlOrderInfo);
                               
                            //Udskriver rækkerne
                            $letter = ""; //Er ingenting fordi der kun var én række af orderno
                            $text .= "<tr style=\"background-color: $bgcolor; height: 20px;\">";
                            $text .= "<td><a href=\"?action=orderinfo&id=".$rsOrderLines["id"]."\">".$this->xcomp->GetOrderTag($rsOrderInfo["tagid"], "tag").$rsOrderLines["orderno"].$letter."</a></td>
                                    <td>".$this->xcomp->GetCustomerInfo($rsOrderInfo["customerid"], "company")."</td>
                                    <td>".$this->xcomp->GetBrandInfo($rsOrderLines["brand"], "brand")."</td>
                                    <td>".$rsOrderInfo["custorderno"]."</td>
                                    <td>".$rsOrderLines["styleno"]."</td>
                                    <td>".$rsOrderLines["description"]."</td>
                                    <td>".$rsOrderLines["type"]."</td>
                                    <td>".$rsOrderLines["qty"]."</td>
                                    <td>".$rsOrderInfo["orderdate"]."</td>
                                    <td>".$rsOrderInfo["deliverydate"]."</td>";
                            if($rsOrderInfo["expecteddate"] == "0000-00-00")
                            $text .= "<td>Date not defined</td>";
                            else
                            $text .= "<td>".$rsOrderInfo["expecteddate"]."</td>";
                            $text .= "</tr>";
                }
                else
                {
                    $i=1; //Fordi A i ABCaddon har arrayid = 1;
                   
                    //Kører en while på forrige forspørgsel om hvor mange orderno er er i tabellen, fordi der er mere end 1.
                    while($rsOrderLineNum = $this->mysql->Record($sqlOrderLineNum))
                    {
                        $letter = $this-ABCaddon($i); //Henter bogstavet fra ABCaddon();
                        if($rsOrderLineNum["id"] == $rsOrderLines["id"]) //Når den finder den rigtige ordre efter søgningen, placerer den det rigtige bogstav på.
                        {                   
                            //Henter data fra Orderinfo tabellen i database til denne row
                            $sqlOrderInfo = $this->mysql->Query("SELECT * FROM orderinfo WHERE orderno='".$rsOrderLines["orderno"]."'");
                            $rsOrderInfo = $this->mysql->Record($sqlOrderInfo);
                               
                            //Udskriver rækkerne                           
                            $text .= "<tr style=\"background-color: $bgcolor; height: 20px;\">";
                            $text .= "<td><a href=\"?action=orderinfo&id=".$rsOrderLines["id"]."\">".$this->xcomp->GetOrderTag($rsOrderInfo["tagid"], "tag").$rsOrderLines["orderno"].$letter."</a></td>
                                    <td>".$this->xcomp->GetCustomerInfo($rsOrderInfo["customerid"], "company")."</td>
                                    <td>".$this->xcomp->GetBrandInfo($rsOrderLines["brand"], "brand")."</td>
                                    <td>".$rsOrderInfo["custorderno"]."</td>
                                    <td>".$rsOrderLines["styleno"]."</td>
                                    <td>".$rsOrderLines["description"]."</td>
                                    <td>".$rsOrderLines["type"]."</td>
                                    <td>".$rsOrderLines["qty"]."</td>
                                    <td>".$rsOrderLines["orderdate"]."</td>
                                    <td>".$rsOrderInfo["deliverydate"]."</td>";
                            if($rsOrderInfo["expecteddate"] == "0000-00-00")
                            $text .= "<td>Date not defined</td>";
                            else
                            $text .= "<td>".$rsOrderInfo["expecteddate"]."</td>";
                            $text .= "</tr>";
                        }
                        $i++;
                    }
                }
            }
            $key[] = "data";
            $val[] = $text;
           
            $key[] = "orderno";
            $val[] = $this->string["orderno"];
            $key[] = "customer";
            $val[] = $this->string["customer"];
            $key[] = "brand";
            $val[] = $this->string["brand"];
            $key[] = "customerno";
            $val[] = $this->string["customer_orderno"];
            $key[] = "styleno";
            $val[] = $this->string["styleno"];
            $key[] = "description";
            $val[] = $this->string["description"];
            $key[] = "type";
            $val[] = $this->string["type"];
            $key[] = "quantity";
            $val[] = $this->string["qty"];
            $key[] = "orderdate";
            $val[] = $this->string["orderdate"];
            $key[] = "deliverydate";
            $val[] = $this->string["deliverydate"];
            $key[] = "expected_send_date";
            $val[] = $this->string["expected_send_date"];
            echo $this->template->hent_template($key, $val, "list_running_orders");
           
        }
Avatar billede maabjerg Nybegynder
08. december 2006 - 15:49 #1
BEMÆRK: Har kun valgt lige indtil videre at søge efter orderno, som ligger i den tabel den søger i. Men på en eller anden måde skal man også kunne søge efter kunde, som ligger i orderinfo tabellen.
Avatar billede b_ Nybegynder
08. december 2006 - 17:22 #2
Lav en join mellem de to tabeller, og derefter en concat af orderno og kunde
Avatar billede maabjerg Nybegynder
11. december 2006 - 15:44 #3
Kan du hjælpe.. er ik så hård i det avancerede mySQL.?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester