Autor | Zpráva | ||
---|---|---|---|
XolyCZ Profil |
Ahoj, potřebuju poradit s tím, jak zapsat do už vytvořeného pole z prvního dotazu další prvek. V prvním dotazu si zjistím všechny základní věci a v druhém je potřebuju doplnit o něco dalšího. Nevím taky jestli na to jdu dobře s tou funkcí foreach, jestli se to tak dělá nebo ne, protože kolem toho nemůžu na netu nic najít. Poradí mi prosím někdo?
function showOverviewTournaments() { $spojeni = mysqli_connect('...'); if (!$spojeni) die('Spojení s MySQL databází se nezdařilo.'); mysqli_set_charset($spojeni,"utf8"); $sql_select = "SELECT * FROM tournaments ORDER BY tournament_id DESC"; $sql_select = mysqli_query($spojeni, $sql_select, MYSQLI_USE_RESULT); while($sql_select_array = mysqli_fetch_array($sql_select, MYSQLI_ASSOC)){ $tournaments[] = $sql_select_array; } foreach($tournaments as $tournament){ $sql_select = "SELECT tournament_type FROM tournament_types WHERE tournament_type_id=" . $tournament['tournament_type_id']; $sql_select = mysqli_query($spojeni, $sql_select, MYSQLI_USE_RESULT); while($sql_select_array = mysqli_fetch_array($sql_select, MYSQLI_ASSOC)){ $tournaments['tournamet_type'] = $sql_select_array; /*tady to potřebuju nějak zapsat*/ } } return $tournaments; mysqli_close($spojeni); } Asi se bude jednat o to vícerozměrné pole nebo jak se tomu říká, ale já to nemůžu pořád pořádně pochopit. Nebo spíš jak to teď zapsat. V prvním dotazu jsem si zjistil tournament_type_id a teď potřebuju druhý dotaz do další tabulky, kde podle toho id najdu tournament_type, což je název toho typu turnaje. Potom když to budu vypisovat, tak asi použiju $tournaments = showOverviewTournaments(); foreach ($tournaments as $tournament => $detail){ echo("<div class='tournaments'> <h3>" . htmlspecialchars($tournament['tournament_name']) . "</h3> <ul><li><span>Hraje se:</span> " . htmlspecialchars(Date( "d. m. Y", StrToTime($tournament['tournament_date']))) . "</li> <li><span>Typ hry:</span> " . htmlspecialchars($tournament['tournament_type']) . "</li></ul>"); /* a tady nevím..*/ } A kdysi mi tu někdo říkal, že se nemám ve funkci pořád připojovat a odpojovat od databáze. Zná někdo nějaké stránky kde je to hezky popsané, jak se to má teda dělat? Děkuji moc..:) |
||
T-fon Profil |
#2 · Zasláno: 30. 8. 2018, 13:51:33
XolyCZ:
„A kdysi mi tu někdo říkal, že se nemám ve funkci pořád připojovat a odpojovat od databáze. Zná někdo nějaké stránky kde je to hezky popsané, jak se to má teda dělat? Děkuji moc..:)“ Stačí si řádek $spojeni = mysqli_connect('...'); vyhodit ven z těch funkcí, připojit se do databáze někde na začátku scriptu a pak voláš každou funkci s parametrem (což je ta proměnná s připojením do databáze), např. showOverviewTournaments($spojeni). |
||
XolyCZ Profil |
#3 · Zasláno: 30. 8. 2018, 13:53:11
T-fon:
A odpojování od té databáze mám potom hodit kam? |
||
T-fon Profil |
#4 · Zasláno: 30. 8. 2018, 14:00:36
Ideálně na konec scriptu, až ho nebudeš potřebovat :). A když ho tam nedáš, nic se nestane.
Jen tak v rychlosti sem kouknul na ten výpis z databáze. Takže každej turnaj má svoje ID a dle toho je v jiné tabulce přiřazenej typ? Proč neuděláš jeden dotaz s JOIN té druhé tabulky? |
||
XolyCZ Profil |
#5 · Zasláno: 30. 8. 2018, 14:06:55
No každý má svoje ID a potom ještě ID toho jaký je to typ turnaje. Potom ta druhá tablka obsahuje právě to ID toho typu a k tomu něco dalšího. No protože jsem to nevěděl nebo spíš to neznám. Podívám se a kdyžtak se ještě ozvu, zatím díky :)
|
||
Keeehi Profil |
#6 · Zasláno: 30. 8. 2018, 14:47:40
Tvůj dotaz by šel zapsat takto:
foreach($tournaments as $key =>$tournament){ $sql_select = "SELECT tournament_type FROM tournament_types WHERE tournament_type_id=" . $tournament['tournament_type_id']; $sql_select = mysqli_query($spojeni, $sql_select, MYSQLI_USE_RESULT); while($sql_select_array = mysqli_fetch_array($sql_select, MYSQLI_ASSOC)){ $tournaments[$key]['tournamet_type'] = $sql_select_array; } } |
||
XolyCZ Profil |
#7 · Zasláno: 31. 8. 2018, 16:44:41
Tak jsem z toho vytvořil tohle, je to delší na zápis, ale funguje to přesně jak jsem chtěl..Díky moc :)
function showOverviewTournaments($spojeni) { $sql_select = "SELECT tournaments.tournament_id, tournaments.season_id, tournaments.tournament_name, tournaments.tournament_max_players, tournaments.tournament_date, tournaments.tournament_basic_games, tournaments.tournament_finally_games, tournaments.tournament_description, tournament_types.tournament_type FROM tournaments INNER JOIN tournament_types ON tournaments.tournament_type_id = tournament_types.tournament_type_id ORDER BY tournament_id DESC"; $sql_select = mysqli_query($spojeni, $sql_select, MYSQLI_USE_RESULT); while($sql_select_array = mysqli_fetch_array($sql_select, MYSQLI_ASSOC)){ $tournaments[] = $sql_select_array; } return $tournaments; } |
||
Časová prodleva: 6 let
|
0