Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Tworzenie odnośników dla nazw wszystkich tabel w bazie.
Forum PHP.pl > Forum > Przedszkole
flaa
Witam!
W bazie danych utworzyłem kilka tabel z nazwami zespołów, a w nich tytuły piosenek, tekst i inne tego typu dane. Zrobiłem więc funkcję, która generuje listę dostępnych piosenek wraz z odnośnikami do nich, po wybraniu nazwy zespołu.
  1.  
  2. $getzesp = $_GET['zespol'];
  3.  
  4. function szukajzespolu($getzesp){
  5. $zap_ilosc_wierszy = mysql_query("SELECT * FROM $getzesp");
  6. $iw = mysql_num_rows($zap_ilosc_wierszy);
  7.  
  8. $utwor = mysql_query("SELECT utwor FROM $getzesp");
  9. $adres = mysql_query("SELECT adres FROM $getzesp");
  10.  
  11. for($x = 0; $x<=$iw-1; $x++ ) { //pętla powtórzy się tyle razy, ile jest piosenek w tabeli zespołu
  12. while (($row = mysql_fetch_array($utwor, MYSQL_NUM)) && ($row2 = mysql_fetch_array($adres, MYSQL_NUM))) {
  13. echo "<a class=\"def\" href=\"interpretacje.php?zespol=$getzesp&utwor=$row2[$x]\">$row[$x]</a>";
  14. echo "<br>";
  15. } } }
  16.  
  17. if($getzesp == 'blacksabbath') //wywołanie funkcji, jeśli użytkownik kliknął w odnośnik prowadzący do zespołu Black Sabbath
  18. {
  19. szukajzespolu($getzesp);
  20. }


Jak widać po wybraniu zespołu Black Sabbath, funkcja zostanie wywołana i pojawi się lista piosenek. Nie wiem natomiast, w jaki sposób zrobić to dla wielu zespołów - mógłbym użyć instrukcji CASE, ale wtedy przy przy dodaniu każdego nowego zespołu do bazy, musiałbym zmieniać kod. Pytanie więc jak zrobić, by funkcja była wywoływana dla dowolnego zespołu, który jest w bazie(nazwa zespołu jest nazwą tabeli - w tym przypadku jest to 'blacksabbath') i do którego prowadzą linki na stronie?
Zastanawiałem się, czy jest to możliwe na przykład w taki sposób, że pobiorę nazwy wszystkich tabel z bazy i gdy któraś z nich będzie się zgadzać ze zmienną $getzesp (czyli wybranym odnośnikiem do zespołu) to funkcja wywoła się właśnie dla tej nazwy. Jeśli jednak jest coś takiego możliwe, to nie mam pojęcia w jaki sposób to zrobić : P

pozdrawiam
flaa
wiiir
omg


  1. $utwor = mysql_query("SELECT utwor FROM $getzesp");


no fajne zapytanie (masakra)

co do pytania
  1. if (!empty($getzesp)){
  2. szukajzespolu($getzesp);
  3. }


Lepiej popatrz na to co napisales... bo ogolnie calosc to masakra
flaa
Cytat(wiiir @ 10.03.2011, 21:38:57 ) *
Lepiej popatrz na to co napisales... bo ogolnie calosc to masakra

Przypominam w jakim dziale napisałem ten temat : ) Nie znam się prawie w ogóle na php i dopóki coś działa (a to działa) to nic mi nie przeszkadza. No chyba, że kod napisany w taki sposób będzie obrzydliwą skazą w świątyni internetu, wtedy z chęcią dowiem się jakie błędy popełniłem i jak je naprawić ; )

I wielkie dzięki za pomoc, faktycznie udało się to w ten sposób. Nie miałem pojęcia o takich bajerach i bez tego pewnie do nocy kombinowałbym nad jakimiś rozwiązaniami ; )
wiiir
zrob sobie jedna tabele ktora sie nazywa 'zespoly'

/Zespoly/
id int
nazwa varchar

a potem zrob zapytanie jesli chcesz szukac po nazwie (ale takie szukanie powinno odbywac sie po ID)

  1. SELECT * FROM zespoly WHERE zespoly.nazwa = $getzesp


Nie pisze sie tak jak ty to zrobiles bo jesli wpisze w pasku adresu np hasla to twoje zapytanie bedzie takie

  1. select * from hasla


Mysle ze zrozumiales swoj blad smile.gif
flaa
Okej, dzięki jeszcze raz :) Dobrze jest wiedzieć o takich rzeczach gdy kod jest jeszcze w stanie surowym ;)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.