Autor | Zpráva | ||
---|---|---|---|
Brutuska Profil |
#1 · Zasláno: 20. 2. 2011, 22:38:43
Dobrý den,
Mám vytvořený takový menší systém pro naše prodejce kde si můžou přečíst své privátní zprávy, kouknout na PDF ceníky, katalogy a objednávky. A právě řeším rozšíření objednávek o jich detail. V současnosti se můžou podívat pouze na obecná data jako datum přijetí, spedice atd... Ale nemohou se podívat co bylo objednáváno. Bylo to tvořeno za účelem pouze informovat o stavu objednávky, ale rád bych to rozšířil. proto se ptám o názor / radu jak nejlépe navrhout schéma a provázanost databází. Podotýkám, že data budu přepisovat z objednávek do systému já - nejedná se o on-li objednávání. V současnosti mám databázi "uzivatele" a "objednavky" propojené jsou pomocí pole login. Přemýšlím o vytvoření další databáze "objednavky_detail", která by indexovala na tabulky s obsahem objednávek. Prosím o názory jak tuto věc obecně nejlépe vyřešit. Jedná se mi o zvolení nejlepšího principu. Díky |
||
tiso Profil |
#2 · Zasláno: 20. 2. 2011, 22:49:59
produkty(id, ...)
uzivatele(id, ...) objednavky(id, id_uzivatele, ...) objednavky_produkty(id_objednavky, id_produktu, cena, mnozstvi) |
||
Časová prodleva: 7 dní
|
|||
Brutuska Profil |
#3 · Zasláno: 28. 2. 2011, 08:13:37
Mám trochu problém. Při výpisu detailu objednávek mi vypisuje všechny data z tabulky které se shodují - viz níže. Tzn. Mám od jednoho uživatele třeba 3 objednávky, které obsahují deset položek. Teď mi to vypisuje ke každé objednávce všechny položky - neroztřizuje to podle aktuálně otevřeného detailu.
SELECT * FROM orders,orders_details,products WHERE login='{$_SESSION['SESS_LOGIN']}' AND order_ID_detail=order_id AND product_ID_detail=product_ID" PHP volání sql : while ($order_detail_list = mysql_fetch_assoc($vypis_orders_details)) { echo "<TABLE> <TR> <TD style='padding-left:5px;width:150px'>".$order_detail_list['polozka']."</TD> <TD style='padding-left:5px;width:200px'>".$order_detail_list['popis']."</TD> <TD style='text-align:center;width:105px'>" .$order_detail_list['mnozstvi']. "</TD> <TD style='text-align:center;width:110px'>".$order_detail_list['cena']."</TD> </TR> </TABLE>"; } Nevím jak mu říct, aby prováděl vypis detailů z aktuální rozkliknuté objednávky a ne všechny detaily najednou... Díky za rady |
||
Brutuska Profil |
#4 · Zasláno: 28. 2. 2011, 11:56:01
Aspoň obecně prosím. Jestli mám chybu v SELECT z databáze nebo mi v php chybí proměné.
Tohle je zápis, který odkazuje na detaily : while ($orders_list = mysql_fetch_assoc($vypis_list)) { echo " <TABLE cellspacing='4' > <TR style='vertical-align:top; padding:3px 0px 3px 0px'> <TD width='20px'>"; if ($orders_list['uzavreno'] == 'ne') { echo "<IMG SRC='obrazky/nevykryto_icon.jpg'>"; } else {echo "<IMG SRC='obrazky/vykryto_icon.jpg'>"; } echo "</TD> <TD style='width:80px;'>".$orders_list['datum_prijeti']."</TD> <TD style='width:100px;padding-left:5px'>".$orders_list['objednavka_cislo']."</TD> <TD style='width:250px;padding-left:5px'>".$orders_list['stav']."</TD> <TD style='width:100px;'>".$orders_list['datum_odeslani']."</TD> <TD style='width:50px;text-align:center'>".$orders_list['spedice']."</TD> <TD style='width:100px;padding-left:5px'>"; if ($orders_list['spedice'] == 'PPL' and $orders_list['cislo_zasilky'] != 'nepřiděleno' ) echo "<a href='http://www.ppl.cz' target='_blank'>".$orders_list['cislo_zasilky']."</a>"; else if ($orders_list['spedice'] == 'DHL' and $orders_list['cislo_zasilky'] != 'nepřiděleno') echo "<a href='http://www.dhl.cz/cs/express/sledovani_zasilek.html' target='_blank'>".$orders_list['cislo_zasilky']."</a>"; else echo $orders_list['cislo_zasilky']; echo " </TD> <TD style='padding-left:30px'><a href='order-details.php' target='_self'>detail</TD> // tady to odkazuje na detaily objednávky </TR> </TABLE>"; } |
||
panther Profil |
#5 · Zasláno: 28. 2. 2011, 12:00:30
Brutuska:
„tady to odkazuje na detaily objednávky“ musíš předávat i ID objednávky, pravděpodobně v GETu. Když máš u každé obednávky odkaz na order-details.php , jak má script na této stránce vědět, jakou objednávku chceš ukázat?
|
||
Brutuska Profil |
#6 · Zasláno: 1. 3. 2011, 11:04:10
Chlapi, jsem pitomec. Pořád nemůžu přenést informaci objednávky order_ID a vypsat v dalším souboru order_details.php její konkrétní detaily. Můžete mi poradit i s kódem...Předem díky
|
||
jenikkozak Profil |
#7 · Zasláno: 1. 3. 2011, 11:12:54
Přenese se pomocí GET, jak uvedl panther, např. pomocí odkazu:
<a href="order_details.php?order_ID=50">Detail 50. objednávky</a> V dotazu na databázi pak bude mimo jiné podmínka: WHERE order_ID_detail='".$_GET['order_ID']."' |
||
Brutuska Profil |
#8 · Zasláno: 1. 3. 2011, 18:52:29
Tak, už doufám naposledy...Dal jsem to do kupy - už mi to správně odkazuje. Nový problém mi ale vyvstal při výpisu detailů a to : výpis položky/položek v detailu se opakuje tolikrát kolik má zákazník celkem objednávek. Tzn mám třeba pět objednávek, chci si vypsat jednu s jednou objednanou položkou, ale ta se mi vypíše 5x za sebou.
$qry_vypis_orders_details = "SELECT * FROM orders,orders_details,products WHERE login='{$_SESSION['SESS_LOGIN']}' AND order_ID_detail='".$_GET['order_ID']."' AND product_ID_detail=product_ID" <TD style='padding-left:30px'><a href='order-details.php?order_ID=".$orders_list['order_id']."' target='_self' >Detail</TD> LIMITem to omezit je myslím nesmysl. A nic dalšího mě nenapadá. Slibuju, že už dám pokoj ;) |
||
Časová prodleva: 7 dní
|
|||
Brutuska Profil |
#9 · Zasláno: 8. 3. 2011, 17:43:55
pořád na to nemůžu přijít. Chlapi nemůžete mi poradit ? Prostě detail objednávky opakuje záznamy tolikrát dokola kolik má uživatel vložených objednávek. Nevím jak to upravit v SELECTU (předpokládám, že tam je ta chyba).
|
||
Kcko Profil |
#10 · Zasláno: 8. 3. 2011, 17:49:06
Brutuska:
Tvůj SQL dotaz vytváří kartézský součin, tj. všechny kombinace se vším. Přečti si nějaký článek o spojování tabulek. |
||
Časová prodleva: 7 dní
|
|||
Brutuska Profil |
#11 · Zasláno: 15. 3. 2011, 08:23:06
Prostě nejsem schopen správně sestavit dotaz. Pořád mě to vypisuje v detailech objednávky položku tolikrát, kolik má uživatel celkem objednávek. Zápis je :
SELECT * FROM orders_details INNER JOIN orders ON order_ID_detail='".$_GET['order_ID']."' INNER JOIN products ON product_ID_detail=product_ID WHERE orders.login='{$_SESSION['SESS_LOGIN']}' "; Chápu, že už to všechny otravuje, ale zkuste se na to ještě mrknout. Předem MOC díky |
||
Kajman_ Profil * |
#12 · Zasláno: 15. 3. 2011, 09:06:15
ON order_ID_detail='".$_GET['order_ID']."' AND orders.order_ID=orders_details.order_ID_detail |
||
Brutuska Profil |
#13 · Zasláno: 15. 3. 2011, 09:43:23
Už to funguje - aneb jak si laik malou administraci udělal a naučil se spoustu věcí. Děkuji všem kteří mi poradili. Klidně bych platil i členské příspěvky za používání tohoto fóra :)
|
||
Kcko Profil |
#14 · Zasláno: 15. 3. 2011, 13:24:21
Kajman:
Ta podmínka vypadá divně. Neměla by část s $_GETem být až ve WHERE? |
||
Kajman_ Profil * |
#15 · Zasláno: 15. 3. 2011, 14:19:37
Kcko:
Já bych ji tam asi taky dal, ale výsledek bude stejný. Tipnul bych, že i explain bude totožný. |
||
Časová prodleva: 13 let
|
0