Autor Zpráva
Apacuka
Profil
Zdravím,
mám tabulky a řádky

kapely - id_k, nazev_k
alba - id_a, nazev_a, kapela_id, rok, schvaleno

pomocí
$result2 = mysql_query("SELECT * from alba WHERE kapela_id=$id AND schvaleno=1 ORDER BY rok DESC");
zjistím a pak vypíši všechna alba, která náleží k té kapele.

Pomocí jakého dotazu docílím toho, aby mi to vypsalo všechno co normálně
+ název té kapely co vyhledávám se dal do proměnné,
touto prommenou by se projely vsechny alba kapely s id_k=3 a a pokud by nějaké album obsahovalo název(retezec) té první kapely
tak by se vypsaly vsechny ty alba k te první kapele podle toho rok DESC.

Je to nějaký zapeklitý, až sem se do toho zamotal.

Prostě ... když vytvořím album, přiřadím ho k nějaké kapele.
Pokud to album je split (2 kapely) přiřadím ke kapele split.

Výsledek aby byl, že vypíše (všechny alba od té kapely + všechny alba od kapely split, která obsahují název té kapely) ORDER BY rok DESC.

Snad se to z toho dá pochopit.
Prosím pomoc ... velké + u mě budete mít schovaný :)
tiso
Profil
Príklad nejakého toho splitu by nebol? Myslím konkrétny názov albumu a kapiel...
Apacuka
Profil
Davová Psychóza - album1
Split - Zeměžluč / Davová Psychóza
tiso
Profil
Tak to vyzerá že treba zmeniť vzťah tabuliek kapely:alba z 1:n na m:n a teda vytvoriť spojovaciu tabuľku...
Apacuka
Profil
spojovaci?

jakoze tabulku split
s řádkama kapela1 kapela2 ?
Joker
Profil
Apacuka:
Pokud to album je split (2 kapely) přiřadím ke kapele split.
Tohle je špatně.
Pokud autorem alba jsou dvě kapely, má být autor ty dvě kapely.
Tzn. ještě další tabulka třeba "Autoři": id_alba, id_kapely.

Při párování autorů podle řetězce:
1. Jak se zajistí, že v názvu alba bude ten řetězec napsaný vždycky stejně (kolika různými způsoby se píše třeba Björk Guðmundsdóttir - to sice není kapela, ale pro ilustraci)?

2. Co když stejný řetězec bude v albu, které nemá s názvem kapely nic společného? Co když název kapely bude součástí názvu jiné kapely, nebo budou dokonce stejné? Například "Kiss" - existuje víc skupin i alb s tímhle názvem a ještě další skupiny a alba, která slovo "kiss" v názvu obsahují.
Apacuka
Profil
takže to pro mě znamená úplně překopat přidávací skript + xx podmínek navíc :-/
Proto jsem přišel pro radu, jestli to nejde nejak pomocí spojených dotazů.

1. proto jse uvedl jako příklad "Davová Psychóza", že v tom albu by se ta kapela vyskytla ve stejným složení (malý velký písmena), aby to vyhledávání bylo jednodušší. Pokud by v tom názvu splitu bylo třeba "Davova Psychoza" tak by se to album nevypsalo.

2. Jedná se o CZ / SK kapely, takže bych tam problém neviděl tak velkej ... pokud nebude teda album třeba s názvem "Houba ...."
To bych pak asi začal řešit tu třetí tabulku, pokud by to nešlo přes ten spojenej dotaz.
Joker
Profil
Apacuka:
takže to pro mě znamená úplně překopat přidávací skript + xx podmínek navíc :-/
Lepší to udělat při vývoji, než pak buď s daleko většími problémy později, nebo pak záplatovat nějaké nečekané situace.
Navíc tohle není tak hrozná změna.

proto jse uvedl jako příklad "Davová Psychóza", že v tom albu by se ta kapela vyskytla ve stejným složení (malý velký písmena), aby to vyhledávání bylo jednodušší.
Jenže tohle se dá dost těžko zařídit.
Ve chvíli, kdy do toho nějak zasáhne člověk, například se budou přidávat nová alba anebo skupiny, nelze se na to spolehnout.

2. Jedná se o CZ / SK kapely, takže bych tam problém neviděl tak velkej ... pokud nebude teda album třeba s názvem "Houba ...."
Dobrý příklad. Dá se spolehnout, že žádné album nebude obsahovat text "houba"? A není tak málo skupin jmenujících se jedním poměrně běžným slovem- Kabát, Lucie,...
...a co teprv kdyby se nějaká skupina jmenovala třeba jedním písmenem (teď mě zrovna žádná nenapadá)
Apacuka
Profil
Každá věc, která se mi povede rozběhat (funkčně bez chyb) je u mě velká změna.
Toto teda bude mega bomba :) (teda pokud se to povede). :-/

Teoreticky mám už nápad jak na to teda, akorát nevím jak vybrat tolik kapel :-/
a na tom zase ztroskotam na týden .... ach.

To jste mě moc nepotěšili :(
Ale i tak díky za radu.
Joker
Profil
Apacuka:
Vždyť je to vcelku jednoduché...

Pokud by album mohla udělat jen jedna kapela (= stávající struktura):
SELECT sloupec FROM album WHERE id_kapely = něco

Pokud více kapel - přidám tabulku třeba "autori" - id_alba, id_kapely a dotaz bude:
SELECT a.sloupec FROM album a JOIN autori u ON a.id=u.id_alba WHERE u.id_kapely = něco
Apacuka
Profil
to ano, výpis bude v pohodě ... přemýšlím jak udělat zápis
Joker
Profil
Apacuka:
to ano, výpis bude v pohodě ... přemýšlím jak udělat zápis
Když budu předpokládat album k existující kapele, tak na dva dotazy:
1. Vložím album
2. zjistím jeho ID (mysql_insert_id())
3. vložím záznam do spojovací tabulky
Apacuka
Profil
tohle je ta jednodussi cast stale :)

do te tabulky musim neco vkladat ale napred ...

form 1 - vybrat
- singl
- vice kapel // pokud vice napsat pocet kolik

- pokud singl zobrazi se normalni formular
- pokud vice kapel, zobrazi oken podle zadaneho poctu

no a tady u toho poctu prave končím...

mám funkci, ktera mi vypise vsechny kapely
<select><option value=\"".$zaznam["id_k"]."\" selected>".$zaznam["nazev_k"]."</option></select>
a id te vybrane kapely zapisu do db.

Nevim ovsem jak udelat, aby se mi to zobrazilo tolikrat kolik sem zadal + kazda musi mit jinou promennou, abych kazdou mohl zapsat do toho sloupce.

Teda nic lepsiho me nenapada jak to udelat.
Apacuka
Profil
Prosím teda ještě o jednu radu, když to mám rozdělaný.

pomocí tohoto si vypíši seznam kapel co mám v db
function naplnseznam ($zvoleno=0)
{
$options="";
$vysledek=mysql_query("select id_k, nazev_k from kapely order by nazev_k",$GLOBALS["link"]);
while ($zaznam=MySQL_Fetch_Array($vysledek)):
if ($zaznam["id_k"]==$zvoleno)
$options.="<option value=\"".$zaznam["id_k"]."\" selected>".$zaznam["nazev_k"]."</option>\n";
else
$options.="<option value=\"".$zaznam["id_k"]."\">".$zaznam["nazev_k"]."</option>\n";
endwhile;
return $options;
}

<select name="zaradit_kapela"><?php echo naplnseznam($_POST["zaradit_kapela"])?></select>

když budu mít ten formulář kde vyberu kolik kapel bude na tom albu, dejme tomu že 4.
rozkopíruje se ta funkce na 4 odlišné?
function naplnseznam1 ($zvoleno=0) { ... }
function naplnseznam2 ($zvoleno=0) { ... }
function naplnseznam3 ($zvoleno=0) { ... }
function naplnseznam4 ($zvoleno=0) { ... }

a pak ještě
<select name="zaradit_kapela1"><?php echo naplnseznam1($_POST["zaradit_kapela1"])?></select>
<select name="zaradit_kapela2"><?php echo naplnseznam2($_POST["zaradit_kapela2"])?></select>
<select name="zaradit_kapela3"><?php echo naplnseznam3($_POST["zaradit_kapela3"])?></select>
<select name="zaradit_kapela4"><?php echo naplnseznam4($_POST["zaradit_kapela4"])?></select>

Nebo se mám vykašlat na nějaký rozmnožování fce a udělat jeden základní formulář na přidání, kde bude stabilně vše co mám + třeba 8 polí na zadání kapely?
Ale to se mi zdá jako blbost teda.
Apacuka
Profil
nikdo nevi? :-/

na některých splitech sou 2 kapely, někde 4
Joker
Profil
Apacuka:
když budu mít ten formulář kde vyberu kolik kapel bude na tom albu, dejme tomu že 4.
rozkopíruje se ta funkce na 4 odlišné?

Proč? Od toho jsou funkce, aby se volaly opakovaně.
<select name="zaradit_kapela_1"><?php echo naplnseznam($_POST["zaradit_kapela_1"])?></select>
<select name="zaradit_kapela_2"><?php echo naplnseznam($_POST["zaradit_kapela_2"])?></select>
<select name="zaradit_kapela_3"><?php echo naplnseznam($_POST["zaradit_kapela_3"])?></select>
<select name="zaradit_kapela_4"><?php echo naplnseznam($_POST["zaradit_kapela_4"])?></select>


A na proměnlivý počet těch výběrů máme cykly:
for($i=1; $i <= $pocet_kapel; $i++){
  $id = "zaradit_kapela_".$i;
  echo('<select name="'.$id.'">');
  naplnseznam($_POST["id"]);
  echo('</select>');
}

...akorát bych v tom případě nedělal v té funkci ten databázový dotaz - udělal bych ho jednou, výsledek si uložil do proměnné a tu potom procházel. Je zbytečné třeba pro 4 skupiny vybírat 4x to samé z databáze.

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: