Autor Zpráva
Holy.day
Profil *
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
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 *
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
Procházet stovky textově zapsaných ID taky není nic moc.
sicario
Profil
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.
Holy.day
Profil *
Mno uvidím, Prozatím dík :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0