Autor | Zpráva | ||
---|---|---|---|
Holy.day Profil * |
#1 · Zasláno: 14. 6. 2008, 14:02:37
Zdravím, zasekl jsem se na relativně primitivním problému, ale fakt už si nevím rady.
V DB, tabulce `Predmety` mám sloupečky jako `ID`, `Nazev`, `Druh`, `Cena`, `Kusy` a podobně. Pak mám tabulku `phpbb_users` s uživateli, kde je důležitý sloupeček `user_majetek`. Je typu "text" a zapisují se do něj (oddělena čárkami) ID předmětů z tabulky `Predmety`. Vypadá to třeba takto: 6,2,8,56,41,1,12,5 Na stránce si pomocí funkce while u konkrétního uživatele (v zobrazení jeho profilu) vypisuji jeho majetek tím, že IDčka ve sloupci `phpbb_users.user_majetek` propojím s názvy `Predmety.Nazev`. Výstup je zhruba následující: Vznešená zbroj, ochrana: 90/90/40/40 (kup. za 20500, prod. za 15375) Božná Innosova aura (kup. za 3000, prod. za 2250) Železný prut (kup. za 25, prod. za 18.75) Železný prut (kup. za 25, prod. za 18.75) Železný prut (kup. za 25, prod. za 18.75) Železný prut (kup. za 25, prod. za 18.75) Železný prut (kup. za 25, prod. za 18.75) Kvalitní meč, zranění: 35 (kup. za 8000, prod. za 6000) Panské lány (kup. za 55555, prod. za 41666.25) Ohnivý golem (kup. za 2900, prod. za 2175) Ohnivý golem (kup. za 2900, prod. za 2175) Ovšem tady je kámen úrazu. Já potřebuji takovýto výstup: Vznešená zbroj, ochrana: 90/90/40/40 (kup. za 20500, prod. za 15375) Božná Innosova aura (kup. za 3000, prod. za 2250) Železný prut 5x (kup. za 25, prod. za 18.75) Kvalitní meč, zranění: 35 (kup. za 8000, prod. za 6000) Panské lány (kup. za 55555, prod. za 41666.25) Ohnivý golem 2x (kup. za 2900, prod. za 2175) Pro jistotu ještě kód (vím, že je trošku prasáckej :D): $search = mysql_query("select * from `phpbb_users` WHERE phpbb_users.username LIKE '$uzivatel'");$nalezeny_zaznam = MySQL_Fetch_Array($search); $maj = $nalezeny_zaznam["user_majetek"]; // 1,5,10,16 $rozdel = StrTok($maj, ","); // 1 5 10 16 $prihlaseny_uzivatel = $userdata['username'];$sid = $userdata["session_id"]; $userid = $nalezeny_zaznam["user_id"]; if($maj=="") { $majetek .= "Nemá majetek.."; } /* jsme bezmajetní */ else { while($rozdel) { $hledani = mysql_query("select * from `Predmety` WHERE Predmety.ID LIKE '$rozdel'"); while($zaz = MySQL_Fetch_Array($hledani)){ $idcko = $zaz["ID"]; $nazev = $zaz["Nazev"]; $majetek .= "<a href=\"#\" onclick=\"window.open('forum/zobrazpredmet.php?id=$idcko&uzivatel=$pri hlaseny_uzivatel&sid=$sid', 'hudba', 'width=450, height=400, resizable=yes, menubar=yes, left=100, top=200, toolbar=yes, scrollbars=1')\">" . $zaz["Nazev"] . "</a><small>(kup. za " . $zaz["Cena"] . "$prodat za " . $zaz["Cena"] * 0.75 . ")</small><br>"; } $rozdel = StrTok(","); }} |
||
ShiraNai7 Profil |
#2 · Zasláno: 14. 6. 2008, 16:34:59
lepsi by bylo asi zaznamy majetku ukladat do dalsi tabulky a svazat je s id uzivatele, to bude o moc jednodussi a prehlednejsi
|
||
Holy.day Profil * |
#3 · Zasláno: 14. 6. 2008, 20:03:58
To jo, ale to by problém neřešilo. Leda bych pak měl v tabulce Majetek pro každý kousek majetku extra záznam, ale to by v pozdějších fázích mohlo dost zahltit databázi...
|
||
ShiraNai7 Profil |
#4 · Zasláno: 14. 6. 2008, 23:34:30 · Upravil/a: ShiraNai7
Procházet stovky textově zapsaných ID taky není nic moc.
|
||
sicario Profil |
#5 · Zasláno: 15. 6. 2008, 23:12:47
a. vytvorit spojovaci tabulku se sloupci uzivatel_id, predmet_id a pocet_predmetu
b. vytvorit spojovaci tabulku se sloupci uzivatel_id, predmet_id a zjistit si neco o GROUP BY (pouziti u SELECT) Postup (b.) je o neco univerzalnejsi. Umoznuje napriklad kazdemu predmetu definovat vlastni cenu nakupu a prodeje. |
||
Časová prodleva: 4 dny
|
|||
Holy.day Profil * |
#6 · Zasláno: 19. 6. 2008, 19:51:04
Mno uvidím, Prozatím dík :)
|
||
Časová prodleva: 16 let
|
0