Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML] Tworzenie 'podstron'
flaa
post 24.07.2009, 13:16:30
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 31.03.2009

Ostrzeżenie: (0%)
-----


Witam!

Zajmuję się robieniem strony o muzyce. Mam zamiar umieścić na niej spis albumów danych zespołów, wraz z piosenkami. Zarówno samych zespołów, jak i albumów wyjdzie dosyć sporo, więc bez sensu byłoby tworzenie osobnego pliku html dla każdej z piosenek.
Link do strony: http://rock.htw.pl/lzalbumy/ledzeppelin.htm
Chciałbym, by po kliknięciu w dany link do piosenki tworzyła się dla niej osobna podstrona, w której będę mógł umieścić tekst utworu itd. Czy w php jest możliwość zrobienia czegoś takiego? Sam ledwo znam php i kombinowałem z $_GET, ale bez konkretnych rezultatów.

Z góry dziękuję za wszystkie wskazówki

pozdrawiam
flaa


--------------------
Interpretacje tekstów piosenek, ciekawostki muzyczne o wykonawcach i ich piosenkach, tłumaczenia tekstów - sprawdź http://songfacts.pl!
Go to the top of the page
+Quote Post
Fifi209
post 24.07.2009, 13:22:36
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


W php można bardzo wiele zrobić, wcale nie musisz zapisywać czegoś do plików .html ja bym wszystko do bazy wrzucił i przez dane z geta odpowiednio formułował zapytanie.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
muniekw
post 24.07.2009, 13:28:59
Post #3





Grupa: Zarejestrowani
Postów: 243
Pomógł: 22
Dołączył: 1.06.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ewentualnie możesz użyć jakiegoś darmowego systemu CMS, który będzie już sam generował podstrony. Ale tak czy inaczej baza to dobry pomysł.
Go to the top of the page
+Quote Post
flaa
post 24.07.2009, 14:26:56
Post #4





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 31.03.2009

Ostrzeżenie: (0%)
-----


Masz na myśli wrzucenie tekstu od razu do bazy, a później automatyczne utworzenie nowej podstrony poprzez $_GET? Tylko jak zrobić odnośnik do tej piosenki na poziomie htmlu?


--------------------
Interpretacje tekstów piosenek, ciekawostki muzyczne o wykonawcach i ich piosenkach, tłumaczenia tekstów - sprawdź http://songfacts.pl!
Go to the top of the page
+Quote Post
osl
post 24.07.2009, 15:07:51
Post #5





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

Ostrzeżenie: (0%)
-----


wszystko najlepiej do bazy (oprócz plików oczywiście), będziesz miał kilka relacji w niej...
Automatyczne utworzenie podstrony przez $_GET - można to tak nazwać, choć właściwsze było by określenie generowanie strony - nigdzie jej nie zapisujesz (chyba że dorzucasz system cache).
Tworzenie URLi - to już kwestia tego jaki skryp napiszesz, jak chciałbyś, żeby wyglądały i tak dalej...
Go to the top of the page
+Quote Post
InosU31
post 24.07.2009, 19:23:30
Post #6





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


moze tak:

Robisz formularz i w nim ustawiasz pola : tyluk, textarea - do napisania slow piosenki, autor, itp. Pozniej wysylasz to albo do bazy danych albo tez do pliku txt - lepsza baza na pewno i wiecej masz mozliwosci ale tak czy siak musisz poczytac o zapisywaniu do bazy lub pliku i cos troche o php;-) jesli chodzi o tego html'a - to mozesz umiescic kod "wewnatrz" html'a :
  1.  
  2. tu jest html
  3. <?php
  4. echo "tu jest kod php";
  5. ?>
  6. i tu znow html



ale lepiej chyba odzielac php i html'a pozatym mozesz miec przeciez cos takiego : www.jakasstrona.php?zspol=id_zespolu&lista_piosenek&piosenka=id_piosenki

pozdrawiam

Ten post edytował InosU31 24.07.2009, 19:26:39
Go to the top of the page
+Quote Post
Asmox
post 24.07.2009, 21:16:23
Post #7





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

Ostrzeżenie: (0%)
-----


flaa zależy w jaki sposób chcesz zarządzać tymi artystami.
  • Jeśli ma być tylko artysta, utwór i tekst piosenki, a dodatkowy kod PHP nie jest potrzebny, to podpisuję się pod propozycjami innych forumowiczów.
  • Natomiast jeżeli dla niektórych stron musisz dodać coś ekstra, zastanowiłbym się nad plikami, zwłaszcza MVC
Ale wydaje mi się, że dla Ciebie będzie lepsza pierwsza opcja. Jeśli tak, to postaraj się, aby zapytania do bazy były jak najprostsze, ponieważ taki sposób budowania stron mocno obciąża serwer i może skutkować wolniejszym ładowaniem stron.


--------------------
Go to the top of the page
+Quote Post
flaa
post 24.07.2009, 23:14:56
Post #8





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 31.03.2009

Ostrzeżenie: (0%)
-----


Dzięki wszystkim za odpowiedzi smile.gif

Na teraz wygląda to tak: zrobiłem w bazie danych dwa pola: id oraz teksty (wiadomo: id = 1 -> tekst pierwszy, id = 2 -> tekst drugi itd). Z wyciągnięciem tekstu z bazy nie mam problemów.
Link 'babe im gonna leave you' w spisie jest teraz aktywny, przechodzi do form.php gdzie wyciągnięty jest tekst z id = 2 z bazy. Nie wiem tylko w jaki sposób zrobić tak, by przy każdej piosence było inne id i po wejściu w odpowiedni link pojawił się inny tekst piosenki...


--------------------
Interpretacje tekstów piosenek, ciekawostki muzyczne o wykonawcach i ich piosenkach, tłumaczenia tekstów - sprawdź http://songfacts.pl!
Go to the top of the page
+Quote Post
tomekpl
post 25.07.2009, 02:15:16
Post #9





Grupa: Zarejestrowani
Postów: 134
Pomógł: 5
Dołączył: 9.08.2008
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


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 smile.gif
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:

  1. <?php
  2. if(isset($_POST['nazwa_submita_wyslij'])){ // To jest warunek, kiedy kliknąłeś na przycisk wyślij o name=nazwa_submita_wyslij
  3. Tutaj dajesz kod odpowiedzialny za otrzymywanie danych
  4.  
  5. $nazwa=$_POST['nazwa'];
  6.  
  7. if(!empty($nazwa)){ // sprawdza czy zmienna nie jest przypadkiem pusta, czyli, ze nic nie wpisalismy w nazwe
  8.  
  9. jezeli jest ok to dodaje do bazy zapytaniem sql
  10. @mysql_query("INSERT INTO Zespol(id,zespol) VALUES('','$nazwa')");
  11. echo "Dodano nowy rekord";
  12.  
  13. }//empty
  14.  
  15.  
  16. }// isset post
  17. ?>


Tutaj formularz sobie robimy smile.gif

// koniec pliku dodaj_zespol.php



DODAJ ALBUM

Baza 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_zespolu

Formularz:
Trzeba odczytać w <select> wszystkie zespoły jakie dodałeś do bazy.
Robisz formularz z nazwami:

Wybierz zespół:

  1. <?php
  2. echo"<select name='id_zespolu'>";
  3.  
  4.            $sql= "SELECT * FROM Zespoly ";
  5.            $query = mysql_query($select);
  6.  
  7.            while($read=mysql_fetch_array($query2)){
  8. echo"<option value='".$read['id']."'>".$read['name']."</option>";
  9. }// zamyka while
  10.  
  11. echo"</select>";
  12. ?>


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


  1. <?php
  2. 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
  3.  
  4. if(isset($_POST['id_zespolu_wyslij']){// sprawdza czy  klknieto na wyslij name=id_zespolu_wyslij
  5.  
  6. // tutaj musimy odczytac wyslane id oraz zrobic kolejne wczytywanie:)
  7.  
  8. $id_zespolu=$_POST['id_zespolu'];
  9.  
  10. echo"<form method='post' action='dodaj_piosenke.php?akcja=dodaj_piosenke'>
  11. <select name='id_albumu'>";
  12.  
  13.            $sql= "SELECT * FROM Albumy WHERE id_zespolu='$id_zespolu' ";
  14.            $query = mysql_query($select);
  15.  
  16.            while($read=mysql_fetch_array($query2)){
  17. echo"<option value='".$read['id']."'>".$read['name']."</option>";
  18. }// zamyka while
  19.  
  20. echo"</select>
  21. <input type='hidden' name='id_zespolu' value='".$id_zespolu."' /> // Tutaj ukryjemy id zespolu bo bedzie nam potrzebny jeszcze
  22. <input type='submit' name='id_albumu_wyslij' />
  23. </form>
  24.  
  25.  
  26. }else{
  27. // tutaj formularz z id zespołów
  28.  
  29. echo"<form method='post' action='dodaj_piosenke.php?akcja=dodaj'>
  30. <select name='id_zespolu'>";
  31.  
  32.            $sql= "SELECT * FROM Zespoly ";
  33.            $query = mysql_query($select);
  34.  
  35.            while($read=mysql_fetch_array($query2)){
  36. echo"<option value='".$read['id']."'>".$read['name']."</option>";
  37. }// zamyka while
  38.  
  39. echo"</select>
  40. <input type='submit' name='id_zespolu_wyslij' />
  41. </form>
  42.  
  43. ";
  44. }// isset id_zespolu_wyslij
  45.  
  46. }// zamykamy GETakcja==dodaj
  47. ?>




To na górze już zostawimy teraz dalszy etap.
Mamy już id_albumu należącego do id_zespołu smile.gif


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 &gt;

Również dawaj warunki, jeżeli pole jest puste to wyświetl wynik, że jest źle.


Pozdrawiam.

Ten post edytował tomekpl 25.07.2009, 02:18:00
Go to the top of the page
+Quote Post
flaa
post 25.07.2009, 22:07:08
Post #10





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 31.03.2009

Ostrzeżenie: (0%)
-----


Wielkie dzięki wszystkim za pomoc, szczególnie dla tomekpl za takie rozpisanie się ; )

Jutro już coś z tym dalej pokombinuję, przy tylu podpowiedziach na pewno dam radę happy.gif

pozdrawiam
flaa


--------------------
Interpretacje tekstów piosenek, ciekawostki muzyczne o wykonawcach i ich piosenkach, tłumaczenia tekstów - sprawdź http://songfacts.pl!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 04:58