Do autorów postów z odpowiedziami:
Chłopak napisał, że dopiero zaczyna uczyć się php, a wy mu wyjeżdżacie z MVC, gdzie nawet nie o co tutaj chodzi..
I do autora

Prost ci opiszę prosty sposób, na początek dobry, po jakimś czasie zobaczysz, że jest naprawdę banalny.
W 1 poście napisałeś, że chcesz mieć zespoły i albumy, a w tych albumach piosenki z tekstami. Trochę pracy trzeba będzie wykonać.
DODAJ ZESPÓŁBaza danych:
Kod
Zespol
- id (auto_increment, int)
- nazwa (varchar)
Tworzysz najpierw plik
dodaj_muzyka.php - Formularz:
nazwa zespołu, możesz dodać inne pola, jak opis zespołu, datę powstania, tu już jak chcesz. Ja oprę się tylko na Nazwie zespołu.
Robisz funkcję odpowiedzialną za odebranie danych coś na zasadzie:
<?php
if(isset($_POST['nazwa_submita_wyslij'])){ // To jest warunek, kiedy kliknąłeś na przycisk wyślij o name=nazwa_submita_wyslij Tutaj dajesz kod odpowiedzialny za otrzymywanie danych
$nazwa=$_POST['nazwa'];
if(!empty($nazwa)){ // sprawdza czy zmienna nie jest przypadkiem pusta, czyli, ze nic nie wpisalismy w nazwe
jezeli jest ok to dodaje do bazy zapytaniem sql
@mysql_query("INSERT INTO Zespol(id,zespol) VALUES('','$nazwa')"); echo "Dodano nowy rekord";
}//empty
}// isset post
?>
Tutaj formularz sobie robimy
// koniec pliku dodaj_zespol.php
DODAJ ALBUMBaza danych:
Kod
Album
- id (auto_increment, int)
- nazwa (varchar)
- id_zespolu(int)
Plik dodaj_album.php
Tutaj trzeba będzie już wykonać dwa zapytania tj. odczytać z bazy wykonawców i dodać album przynależny do id zespołu
Odbieranie danych będzie takie samo, tylko że dopiszemy jedną zmienną
id_zespoluFormularz:
Trzeba odczytać w <select> wszystkie zespoły jakie dodałeś do bazy.
Robisz formularz z nazwami:
Wybierz zespół:
<?php
echo"<select name='id_zespolu'>";
$sql= "SELECT * FROM Zespoly ";
echo"<option value='".$read['id']."'>".$read['name']."</option>"; }// zamyka while
?>
Wyświetli nam wszystkie zespoły w polu select do wyboru.
Pod spodem robimy pole input gdzie wpiszesz nazwę Albumy
// Koniec dodawania albumu. To jest bardzo prosty przykład. Ty go wykonujesz, więc nie będziesz sobie psuł stron złym kodem wpisanym do formularza. Na końcu napiszę podstawowe funkcje formatowania tekstu odebranego z <form>
Dodajemy PiosenkęBaza
Kod
Piosenki
- id (auto_increment, int)
- nazwa (varchar)
- tekst(text)
- id_zespolu(int)
- id_albumu(int)
Tutaj problem jest jeszcze bardziej skomplikowany. Bo musimy dodać piosenkę do odpowiedniego albumu, który należy do odpowiedniego zespołu.
Nie chcę Ci zawracać głowy ajaxem i js. Podam prosty przykład, jak można takie coś obejść,
Robisz plik dodaj_piosenke.php
Formularz:
- Tytul(input)
- Tekst(textarea)
- id_zespolu
- id_albumy z id_zespolu
Struktura:
Wybierz zespół(pole select) i kliknij dalej
Wysyła ci w $_POST['id_zespolu'], który użyjesz do odczytania albumów należących do tych zespołów
<?php
if($_GET['akcja']=="dodaj"){ // tutaj zrobimy takie cos, ze jak wejdzie w dodaj_piosenke.php?akcja=dodaj to dopiero ci wyswieli :) to jest potrzebne do daleszego kroku
if(isset($_POST['id_zespolu_wyslij']){// sprawdza czy klknieto na wyslij name=id_zespolu_wyslij
// tutaj musimy odczytac wyslane id oraz zrobic kolejne wczytywanie:)
$id_zespolu=$_POST['id_zespolu'];
echo"<form method='post' action='dodaj_piosenke.php?akcja=dodaj_piosenke'> <select name='id_albumu'>";
$sql= "SELECT * FROM Albumy WHERE id_zespolu='$id_zespolu' ";
echo"<option value='".$read['id']."'>".$read['name']."</option>"; }// zamyka while
<input type='hidden' name='id_zespolu' value='".$id_zespolu."' /> // Tutaj ukryjemy id zespolu bo bedzie nam potrzebny jeszcze
<input type='submit' name='id_albumu_wyslij' />
</form>
}else{
// tutaj formularz z id zespołów
echo"<form method='post' action='dodaj_piosenke.php?akcja=dodaj'>
<select name='id_zespolu'>";
$sql= "SELECT * FROM Zespoly ";
$query = mysql_query($select);
while($read=mysql_fetch_array($query2)){
echo"<option value='".$read['id']."'>".$read['name']."</option>";
}// zamyka while
echo"</select>
<input type='submit' name='id_zespolu_wyslij' />
</form>
";
}// isset id_zespolu_wyslij
}// zamykamy GETakcja==dodaj
?>
To na górze już zostawimy teraz dalszy etap.Mamy już id_albumu należącego do id_zespołu

if($_GET['akcja']=="dodajpiosenke"){ jezeli GET akcja = dodajpiosenke
if(isset($_POST['zapisz_piosenke'])){// sprawdza czy klknieto na wyslij name=zapisz_piosenke
$id_zespolu=$_POST['id_zespolu'];
$id_albumu=$_POST['id_albumu'];
$tytul=$_POST['tytul'];
$tekst=$_POST['tekst'];
// tutaj mozesz ustawic sprawdzanie czy są pole pełne
// i dodajesz do bazy
@mysql_query("INSERT INTO Piosenki(id,tytul,tekst,id_zespolu,id_albumu) VALUES('','$tytul','$tekts','$id_zespolu','$id_albumu')");
echo "Dodano nową piosnkę";
}else{
$id_zespolu=$_POST['id_zespolu'];
$id_albumu=$_POST['id_albumu'];
// Tuaj piszemy formularz
Tytuł Piosenki
Tekst
możesz użyć polecenie SELECT do odczytu nazw kategorii, żeby ci się nie myliło
Coś takiego:
$sql= "SELECT nazwa FROM Zespoly WHERE id='$id_zespolu' ";
$query = mysql_query($select);
$read=mysql_fetch_array($query);
$sql2= "SELECT nazwa FROM AlbumyWHERE id='$id_albumu' ";
$query2 = mysql_query($select2);
$read2=mysql_fetch_array($query2);
echo"
Dodajesz do: ".$read['name']." > ".$read2['name']."
<form method='post' action='dodaj_piosenke.php?akcja=dodajpiosenke'>
tytuł: <input name='tytul' value='' />
tekst: <taxtarea name='tekst'></textarea>
<input type='hidden' name='id_zespolu' value='".$id_zespolu."' /> // Tutaj ukryjemy id zespolu
<input type='hidden' name='id_albumu' value='".$id_albumu."' /> // Tutaj ukryjemy id albumu
<input name='zapisz_piosenke' value='Zapisz' />
</form>
";
}// zamyka name=zapisz_piosenke
}// zamyka GET = dodajpiosenke
Troszkę się rozpisałem. to i tak jest mało optymalny kod. działasz po swojej stronie, więc nie dawałem zabezpieczeń, ale zawsze można dać filtrowanie tekstów itp
strip_tag($_POST['pole']) - wycina ci taki i zawartość <scrip>costam</scritp> - wyniik: costam
trim - usuwa białe znaki, czyli spacje, na początku i na końcu
htmlspecialchars - zamienia znaczniki html na ich odpowiedniki znaków specjalnych np. > na >
Również dawaj warunki, jeżeli pole jest puste to wyświetl wynik, że jest źle.
Pozdrawiam.