Autor | Zpráva | ||
---|---|---|---|
Flek Profil |
#1 · Zasláno: 28. 4. 2012, 07:58:43 · Upravil/a: Flek
Dobrý den,
mám následující dvě tabulky: awards (Tabulka vytvořených ocenění) -> id, name, icon_name u_awards (Tabulka zaznamenávající uživatele kteří ocenění získali) -> id, award_id, user_id, description =================================== Tabulky z databáze vytahuju pomocí DIBI klasickým způsobem. Mám tedy dvě proměnné pojmenované podle tabulek naplněné 'awards' a 'u_awards'. A já teď nemůžu pořádně zkloubit funkci, která mi bude vracet čisté html s obrázkem (tagem img). ====================== Zde je to co jsem napatlal, ale vrací mi to 4 stejné ikonky i když je v databázi u uživatele uložena pouze jedna. function getUserAwards($user_id) { return $this->db->select('*') ->from('u_awards') ->where('u_id = %i', $user_id) ->fetch(); } function getAward() { return $this->db->select('*') ->from('awards') //->where('id = %i', $award_id) ->fetch(); } function getUsersBadges($user_id) { //$badges = array(); $user_awards = $this->getUserAwards($user_id); $award_data = $this->getAward(); $badges = ''; foreach ($user_awards as $award) { $badges.= '<img src="/img/awards/'.$award_data[1]['icon_name'].'">'; } return $badges; } Tak jsem to nakonec vyřešil. function getUserAwards($user_id) { return $this->db->select('*') ->from('u_awards') ->where('u_id = %i', $user_id) ->fetchAll(); } function getAward($award_id) { return $this->db->select('*') ->from('awards') ->where('id = %i', $award_id) ->fetch(); } function getUsersBadges($user_id) { $users_awards = $this->getUserAwards($user_id); $data = ''; foreach ($users_awards as $user_award) { $award = $this->getAward($user_award['award_id']); $data.= '<img src="/img/awards/'.$award['icon_name'].'" />'; } return $data; } |
||
Keeehi Profil |
#2 · Zasláno: 29. 4. 2012, 17:51:26
Flek:
Lepší by bylo to spojení uživatel - odznaky nechat udělat už databázi: function getUsersBadges($user_id) { $db_data = $this->db->select('*') ->from('u_awards') ->leftJoin('awards')->on('u_awards.award_id = awards.id') ->where('u_awards.user_id = %i', $user_id); $data = ''; foreach ($db_data as $row) { $data.= '<img src="/img/awards/'.$row['icon_name'].'" />'; } return $data; } Netestováno. Pravděpodobně bude potřeba správně pojmenovat názvy sloupců a zjistit si, co přesně obsahuje proměnná $row. |
||
Časová prodleva: 12 let
|
0