Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Podstrony
Forum PHP.pl > Forum > Przedszkole
Fei
Mam stronę z podstronami(każda podstrona to oddzielny plik php). Na każdej podstronie lista 5 wyników z bazy.
Chciałbym, żeby po kliknięciu na link, wczytywała się strona ze szczegółami jednego wyniku.
Np. mam strone mojastrona.pl/komedie/ - tu jest lista wyników z bazy
klikam na więcej i wtedy przenosi mnie na stronę mojastrona.pl/komedie/tutaj+jakis+adres/ - tutaj pokazują się szczegóły dotyczące jedengo wyniku.
Nie mam pojęcie jak się za to zabrać, proszę o pomoc.
johny_s
w "tutaj+jakis+adres" wstawiasz sobie id albo jakis unikalny element na podstawie ktorego bedziesz sobie mogl zidentyfikowac odpowiedni rekord
Fei
No ok mam tam id. Klikam na link i przenosi mnie do strony np.
mojastrona.pl/komedie/54/
Tylko co zrobić, żeby tam załadować szczegóły dot. tego jednego rekordu.
Myślałem, żeby zrobić coś jak
if(isset($_GET['tytul']))
{
wyciągam to inf. o jednym rekordzie z bazy
{

echo <<<wyjscie

Wypisuje to co chce na stronie
wyjscie;
}
Ale to błędny tok myślenia.
johny_s
aby skorzystac z $_GET['tytul'] musial bysc miec cos takiego w linku mojastrona.pl/komedie?tytul=54 ew. przemapowac sobie dane za pomoca rewrite

dla tego: mojastrona.pl/komedie/54/
albo wykorzystasz rewrite albo $_SERVER['REQUEST_URI'] explode po / i wyciagnac to co potrzeba
Fei
mam rewrite i mojastrona.pl/komedie/54/ jest jak mojastrona.pl/?page=komedie&tytul=54


Próbowałem czegoś takiego:
w index php:
  1. else if(isset($_GET['tytul']))
  2. include("movie.php");

w jednej z podstron
  1. <a href="/akcja/$id/" alt="Szczegóły filmu> Więcej</a>

w .htaccess
RewriteRule ^/?(.*)/(.*)/$ index.php?page=$1&tytul=$2 [NC,L]

Ale nie działa

odświeżam
johny_s
a co masz przed else? pokaz caly kod
Fei
index.php
  1. <div id="menu">
  2. <ul>
  3. <li><a href="/glowna/">Ăłwna</a></li>
  4. <li><a href="/komedie/">Komedie</a></li>
  5. <li><a href="/horrory/">Horrory</a></li>
  6. <li><a href="/obyczajowe/">Obyczajowe</a></li>
  7. <li><a href="/akcja/">Akcja</a></li>
  8. <li><a href="/animacja/">Animacja</a></li>
  9. <li class="wiecej"><a href="#"><div id="najechane">WiÄcej >></div></a>
  10. <ul class="submenu">
  11. <li><a href="/thriller/">Thriller</a></li>
  12. <li><a href="/fantasy/">Fantasy</a></li>
  13. <li><a href="/dramat/">Dramat</a></li>
  14. <li><a href="/wojenne/">Wojenne</a></li>
  15. <li><a href="/sci-fi/">Sci-Fi</a></li>
  16. </ul>
  17. </li>
  18. </ul>
  19.  
  20. </div>

[...]
  1. <?php
  2. if(($_GET['page'] == glowna) || !isset($_GET['page']))
  3. include("glowna.php");
  4. else if($_GET['page'] == komedie)
  5. include("komedie.php");
  6. else if($_GET['page'] == horrory)
  7. include("horrory.php");
  8. else if($_GET['page'] == obyczajowe)
  9. include("obyczajowe.php");
  10. else if($_GET['page'] == akcja)
  11. include("akcja.php");
  12. else if($_GET['page'] == animacja)
  13. include("animacja.php");
  14. else if($_GET['page'] == dodaj)
  15. include("dodaj.php");
  16. else if($_GET['page'] == panel)
  17. include("panel.php");
  18. else if($_GET['page'] == kontakt)
  19. include("kontakt.php");
  20. else if($_GET['page'] == regulamin)
  21. include("regulamin.php");
  22. else if($_GET['page'] == thriller)
  23. include("thriller.php");
  24. else if($_GET['page'] == fantasy)
  25. include("fantasy.php");
  26. else if($_GET['page'] == dramat)
  27. include("dramat.php");
  28. else if($_GET['page'] == wojenne)
  29. include("wojenne.php");
  30. else if($_GET['page'] == sci-fi)
  31. include("sci-fi.php");
  32. else if($_GET['page'] == test)
  33. include("test.php");
  34. else if(isset($_GET['tytul']))
  35. include("movie.php");
  36. else
  37. include("glowna.php");
  38. ?>

i jedna z podstron:
  1. $sql = "SELECT * FROM `filmy` WHERE `akceptacja` = 1 AND `gatunek` REGEXP 'akcja' ORDER by `data` DESC, `czas` DESC LIMIT $strona, 5";
  2. $wynik = mysql_query($sql) or die(mysql_error());
  3. $suma = mysql_num_rows($wynik);
  4. while($row = mysql_fetch_array($wynik))
  5. {
  6.  
  7. $tytul = $row['tytul'];
  8. $gatunek = $row['gatunek'];
  9. $opis2 = $row['opis'];
  10. $opis = nl2br($opis2);
  11. $data = $row['data'];
  12. $nick = $row['nick'];
  13. $mirror = $row['mirror'];
  14. $mirror2 = $row['mirror2'];
  15. $zdjecie = $row['zdjecie'];
  16. $glosy = $row['glosy'];
  17. $id = $row['id'];
  18.  
  19. $nazwaLinku = parse_url($mirror, PHP_URL_HOST);
  20. $nazwaLinku2 = parse_url($mirror2, PHP_URL_HOST);
  21. $opis = shortString($opis, 500);
  22. $wyrazy = explode(" ", $tytul);
  23. $gett = implode("+", $wyrazy);
  24.  
  25. if(isset($mirror2) && !empty($mirror2))
  26. {
  27. $link2 = "Oraz <a href=\"$mirror2\" alt=\"$tytul\" TARGET=\"_BLANK\" />$nazwaLinku2</a>";
  28. }
  29. echo <<<wyjscie
  30. <div id="include">
  31. <h1>$tytul</h1>
  32. <span id="nick">Dodał: <strong>$nick</strong></span> <span id="data">Dnia <i>$data</i></span><br />
  33. <div id="filminfo"><img src="$zdjecie" alt="$tytul" />
  34. <p id="opis">$opis <a href="/akcja/$id/" alt="Szczegóły filmu"> Więcej</a></p></div>
  35. </div>
  36. wyjscie;
  37.  
  38. }
CuteOne
1. Używaj switch zamiast tych ifów a juz w ogóle cudownie by było gdybyś użył do tego routera
2. Używaj apostrofów
3.
  1. $modules = array(
  2. 'komedie' => 'komedie.php',
  3. 'romanse' => 'romase.php'
  4. );
  5.  
  6. if(isset($modules[$_GET['page']])) {
  7.  
  8. if(!isset($_GET['tytul'])) {
  9.  
  10. include $modules[$_GET['page']];
  11. }
  12. else {
  13.  
  14. include("movie.php");
  15. }
  16. }
  17. else {
  18.  
  19. echo 'Taka strona nie istnieje';
  20. }
Fei
Ok. Zamieniłem if na switch:
  1. switch($_GET['page'])
  2. {
  3. case 'glowna':
  4. include('glowna.php');
  5. break;
  6. case 'komedie':
  7. include('komedie.php');
  8. break;
  9. case 'horrory':
  10. include('horrory.php');
  11. break;
  12. case 'akcja':
  13. include('akcja.php');
  14. break;
  15. case 'obyczajowe':
  16. include('obyczajowe.php');
  17. break;
  18. case 'animacja':
  19. include('animacja.php');
  20. break;
  21. case 'thriller':
  22. include('thriller.php');
  23. break;
  24. case 'fantasy':
  25. include('fantasy.php');
  26. break;
  27. case 'dramat':
  28. include('dramat.php');
  29. break;
  30. case 'wojenne':
  31. include('wojenne.php');
  32. break;
  33. case 'sci-fi':
  34. include('sci-fi.php');
  35. break;
  36. default:
  37. include('glowna.php');
  38. break;
  39. }


A co to tego:
  1. $modules = array(
  2. 'komedie' => 'komedie.php',
  3. 'romanse' => 'romase.php'
  4. );
  5.  
  6. if(isset($modules[$_GET['page']])) {
  7.  
  8. if(!isset($_GET['tytul'])) {
  9.  
  10. include $modules[$_GET['page']];
  11. }
  12. else {
  13.  
  14. include("movie.php");
  15. }
  16. }
  17. else {
  18.  
  19. echo 'Taka strona nie istnieje';
  20. }

Wrzucam do indexu to działa, ale dodatkowe informacje pojawiają się pod dotychczasowymi wynikami, zamiast osobno.
CuteOne
Kod, który podałem jest zamiast tych switchów/ifów
Fei
Aaa. Teraz wszystko śmiga. Dzięki wielkie za pomoc.

PS
To jest ten router o którym wspominałeś, czy to jeszcze coś innego?
Mephistofeles
Dokumentacja routera Symfony
Elastyczny, dobry router.
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.