Allroa ragazzi, mi scuso se il titolo non è molto esplicito
Premetto che uso il linguaggio SQL da soli 3 giorni, ma sono soddisfatto per i risultati che sto ottenendo.
Allora, ho tre tabelle con la seguente struttura:
ip_bands:
codice:
id int(5) auto_increment
name varchar(255)
genre text
formed_city varchar(63)
formed_date text
website varchar(63)
members varchar(255)
ip_bands_albums:
codice:
id int(5) auto_increment
id_band int(5)
name_album text
date_album int(4)
ip_bands_members:
codice:
id int(5) auto_increment
id_band int(5)
voice text
drum text
keyboard text
bass text
guitar_1 text
guitar_2 text
guitar_3 text
Ora, seleziono tutto con questa query:
Codice PHP:
$sql = 'SELECT band.*, album.*, members.*
FROM ip_bands AS band
JOIN ip_bands_albums AS album ON album.id_band=band.id
JOIN ip_bands_members AS members ON members.id_band=band.id
WHERE band.id=' . mysql_real_escape_string($_GET['id']);
Con questo elaboro i risultati per poi stamparli a video:
Codice PHP:
while ($row = $db->sql_fetchrow($result))
{
$band_id = $_GET['id'];
$band_name = $row['name'];
$genre_array = explode("/", $row['genre']);
foreach($genre_array as $genre)
{
$template->assign_block_vars('band_view_genre', array(
'BAND_GENRE' => $genre,
));
}
$band_city_formed = (!empty($row['formed_city'])) ? $row['formed_city'] : 'N.D.';
$band_date_formed = (!empty($row['formed_date'])) ? $row['formed_date'] : 'N.D.';
$band_name_album = (!empty($row['name_album'])) ? $row['name_album'] : 'N.D.';
$band_date_album = (!empty($row['date_album'])) ? $row['date_album'] : 'N.D.';
$band_website = (!empty($row['website'])) ? str_replace('http://', '', $row['website']) : 'N.D.';
$band_member_drum = (!empty($row['drum'])) ? $row['drum'] . '(' . $lang['Band_Drummer'] . ')' : '';
$band_member_voice = (!empty($row['voice'])) ? $row['voice'] . '(' . $lang['Band_Singer'] . ')' : '';
$band_member_keyboard = (!empty($row['keyboard'])) ? $row['keyboard'] . '(' . $lang['Band_Keyboarder'] . ')' : '';
$band_member_bass = (!empty($row['bass'])) ? $row['bass'] . '(' . $lang['Band_Bassist'] . ')' : '';
$band_member_guitar_1 = (!empty($row['guitar_1'])) ? $row['guitar_1'] . '(' . $lang['Band_Guitarist_1'] . ')' : '';
$band_member_guitar_2 = (!empty($row['guitar_2'])) ? $row['guitar_2'] . '(' . $lang['Band_Guitarist_2'] . ')' : '';
$band_member_guitar_3 = (!empty($row['guitar_3'])) ? $row['guitar_3'] . '(' . $lang['Band_Guitarist_3'] . ')' : '';
($board_config['url_rw'] == '1') || (($board_config['url_rw_guests'] == '1') && ($userdata['user_id'] == ANONYMOUS)) ? $view_band_url = append_sid(str_replace ('--', '-', make_url_friendly($band_name) . '-band-id' . $band_id . '.html')) : $view_band_url = append_sid('band.' . PHP_EXT . '?id=' . $band_id);
($userdata['user_level'] = ADMIN && $userdata['session_logged_in']) ? $url_band_edit = '[url="band.' . PHP_EXT . '?edit=' . $band_id . '"]' . $lang['Edit_delete_post'] . '[/url]' : $url_band_edit = '';
$template->assign_block_vars('band_view_album', array(
'BAND_ALBUM_NAME' => $band_name_album,
'BAND_ALBUM_DATE' => $band_date_album,
));
}
$template->assign_block_vars('band_view', array(
'BAND_ID' => $band_id,
'BAND_NAME' => $band_name,
'BAND_CITY' => $band_city_formed,
'BAND_DATE' => $band_date_formed,
'BAND_ALBUM_NAME' => $band_name_album,
'BAND_ALBUM_DATE' => $band_date_album,
'BAND_WEBSITE' => $band_website,
'BAND_MEMBER_DRUM' => $band_member_drum,
'BAND_MEMBER_VOICE' => $band_member_voice,
'BAND_MEMBER_KEYBOARD' => $band_member_keyboard,
'BAND_MEMBER_BASS' => $band_member_bass,
'BAND_MEMBER_GUITAR_1' => $band_member_guitar_1,
'BAND_MEMBER_GUITAR_2' => $band_member_guitar_2,
'BAND_MEMBER_GUITAR_3' => $band_member_guitar_3,
'U_VIEW_BAND' => $view_band_url,
'U_EDIT_BAND' => $url_band_edit,
));
Ogni gruppo ha un id UNICO nella prima tabella che lo identifica appunto. Relaziono i dati con le altre tabelle in base a id_band.
Ho due problemi:
Il primo:
Devo inserire diversi dati nei campi in ip_albums_bands quindi devo stampare a video tanti input quanti sono gli album inseriti, più quelli che vuole l'utente, in base ad un valore passato via POST.
Quindi, dovrei scrivere qualche condizione che mi conti i campi del DB poi ne aggiunga, mantenendo quelli già presenti del DB, quanti scelti.
Il secondo (è collegato al primo):
Per inserire i dati, devo abbinare ad ogni album la propria data (mi dovrò basare sul campo id della tabella ip_album_bands) ma non so come.
Cioè:
l'id 1 ha in name_album 'Prova' e in date_album '1990';
l'id 2 ha in name_album 'Prova2' e in date_album '1991;
Come posso realizzare la query in modo i dati inseriti non si mischino tra di loro, e ogni nome album e ogni data sia nello stesso ID a dove vengono scritti nel form?
Grazie in anticipo. Possibilmente se rispondete fatelo a prova di scemo perchè non conosco amncora molto beben la sintassi SQL