Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Podstrony, jak się za to zabrać
Fei
post 13.06.2012, 15:26:57
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 26.05.2012
Skąd: Wielkopolska

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


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.
Go to the top of the page
+Quote Post
johny_s
post 13.06.2012, 15:39:08
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


w "tutaj+jakis+adres" wstawiasz sobie id albo jakis unikalny element na podstawie ktorego bedziesz sobie mogl zidentyfikowac odpowiedni rekord
Go to the top of the page
+Quote Post
Fei
post 14.06.2012, 15:29:29
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 26.05.2012
Skąd: Wielkopolska

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


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.
Go to the top of the page
+Quote Post
johny_s
post 14.06.2012, 15:41:20
Post #4





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


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
Go to the top of the page
+Quote Post
Fei
post 15.06.2012, 16:33:37
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 26.05.2012
Skąd: Wielkopolska

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


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
Go to the top of the page
+Quote Post
johny_s
post 15.06.2012, 16:43:11
Post #6





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


a co masz przed else? pokaz caly kod
Go to the top of the page
+Quote Post
Fei
post 15.06.2012, 17:29:39
Post #7





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 26.05.2012
Skąd: Wielkopolska

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


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. }
Go to the top of the page
+Quote Post
CuteOne
post 15.06.2012, 17:42:06
Post #8





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


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. }


Ten post edytował CuteOne 15.06.2012, 17:44:12
Go to the top of the page
+Quote Post
Fei
post 15.06.2012, 18:45:35
Post #9





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 26.05.2012
Skąd: Wielkopolska

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


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.
Go to the top of the page
+Quote Post
CuteOne
post 16.06.2012, 11:21:05
Post #10





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Kod, który podałem jest zamiast tych switchów/ifów
Go to the top of the page
+Quote Post
Fei
post 16.06.2012, 12:53:03
Post #11





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 26.05.2012
Skąd: Wielkopolska

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


Aaa. Teraz wszystko śmiga. Dzięki wielkie za pomoc.

PS
To jest ten router o którym wspominałeś, czy to jeszcze coś innego?
Go to the top of the page
+Quote Post
Mephistofeles
post 16.06.2012, 20:04:11
Post #12





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Dokumentacja routera Symfony
Elastyczny, dobry router.
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: 9.05.2024 - 14:26