| 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: 7 let
|
|||
0