Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] $_GET
marczak
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 1.03.2007

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


Witam,

Mam pewien problem.

Mam strone zrobionąna smartach i potrzebuje pewnej pomocy.

mam adres index.php?action=pomoc

i chce zrobić, żebym mógł robić jeszcze podstrony w tym action,

Chciałbym, żeby link wyglądał tak:

index.php?action=pomoc&nr=1

Jak mam to zrobic (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Z tym, że jak się wpisze np index.php?action=pomoc&nr=33 a nie będzie takiej podstrony to wypisze błąd, że nie ma takiej podstrony.

Proszę o szybką odpowiedź,

Pozdrawiam,
marczak

Ten post edytował marczak 27.09.2008, 20:34:40
Go to the top of the page
+Quote Post
piaseq
post
Post #2





Grupa: Zarejestrowani
Postów: 161
Pomógł: 25
Dołączył: 6.09.2008
Skąd: Warszawa

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


  1. <?php
  2. $_GET['action'] i $_GET['nr']
  3. ?>


Tzn. sprawdzasz czy action jest ustawiony i czy jest to pomoc, następnie sprawdzasz czy jest ustawiony nr i czy taka podstrona istnieje. Jeżeli jest ustawione i jest prawidłowe ładujesz odpowiedni szablon smarty np.
  1. <?php
  2. $action=$_GET['action'];
  3. $nr=$_GET['nr'];
  4.  
  5. if( isset($action)&&$action=='pomoc')
  6. {
  7.   if( isset($action)&&//tutaj sprawdzasz czy ma poprawną wartość)
  8.      {
  9.         $smarty->display(tutaj odpowiedni template);
  10.      }
  11. }
  12. ?>


Ten post edytował piaseq 27.09.2008, 19:27:09
Go to the top of the page
+Quote Post
marczak
post
Post #3





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 1.03.2007

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


z tym, ze ja mam na smartach tego action zrobione jeszcze w innym pliku:

w index.php mam

case 'pomoc':
$to_display[] = 'pomoc.tpl';
break;

potem w pomoc.tpl mam: {include_php file="pomoc.php"}

i dopiero w pomoc.php musze wstawić jakis kod.

no dobra, tylko mam to dodac w index.php, czy w tym pomoc.php (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
blooregard
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Zawsze jeszcze możesz sobie sprawdzać w samym szablonie i w zależności od tego drugiego parametru z GET wyświetlać co tam chcesz:

{if $smarty.get.nr == 1}

...

{/if}

itd.
Go to the top of the page
+Quote Post
marczak
post
Post #5





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 1.03.2007

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


a nie można tego zrobic nie ruszajac nic w smartach (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) tylko do tego pliku pomoc.php co jest ond odpalany index.php?action=pomoc wstawić jakiś kod (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) zeby tworzylo index.php?action=pomoc&nr=1 itp (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
blooregard
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




No to tylko w tym pomoc.php sprawdzaj $_GET['nr'], 

jak bedziesz mial url-a:

index.php?action=pomoc&nr=10

to index.php wczyta Ci pomoc.php+pomoc.tpl, a w pomoc.php sprawdzasz 

if ($_GET['nr'] == jakas_tam_oczekiwana_wartosc) {

 ...akcja...

}

itd.



Aha, przy okazji: waliduj sobie zmienne przekazywane GET-em, zeby Ci ktos kuku nie zrobil (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
marczak
post
Post #7





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 1.03.2007

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


blooregard waliduj tzn ?
Go to the top of the page
+Quote Post
piaseq
post
Post #8





Grupa: Zarejestrowani
Postów: 161
Pomógł: 25
Dołączył: 6.09.2008
Skąd: Warszawa

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


Cytat(marczak @ 27.09.2008, 21:11:31 ) *
blooregard waliduj tzn ?


Tzn. nie wstawiaj na ślepo w kodzie zmiennych w postaci $_GET['costam'], tylko sprawdź wcześniej czy ta zmienna jest ustawiona, czy jest odpowiedniego typu, czy posiada wartość jakiej oczekujesz itp.
Go to the top of the page
+Quote Post
marczak
post
Post #9





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 1.03.2007

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


acha rozumiem,

Dobra zrobilem coś takiego:

  1. <?php
  2. if(empty($_GET['nr']) or $_GET['nr']=="news1")
  3. {
  4. include("pomoc/index.html");
  5. }
  6.  
  7. if($_GET['nr']=="1"){
  8. include("pomoc/1.html");
  9. }
  10. if($_GET['nr']=="2"){
  11. include("pomoc/2.html");
  12. }
  13. if($_GET['nr']=="3"){
  14. include("pomoc/3.html");
  15. }
  16. ?>



Jak zrobić, żeby jak się wpisze np &&nr=4 wywalilo, że podstrona nie istnieje (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował marczak 27.09.2008, 20:37:57
Go to the top of the page
+Quote Post
batman
post
Post #10





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Co się dzisiaj dzieje? Plaga ludzi, którzy nie używają bbcode?

@marczak popraw bbcode!
Go to the top of the page
+Quote Post
marczak
post
Post #11





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 1.03.2007

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


poprawione.


~batman
Gdzie?
Na pewno nie w tym poście.
Go to the top of the page
+Quote Post
piaseq
post
Post #12





Grupa: Zarejestrowani
Postów: 161
Pomógł: 25
Dołączył: 6.09.2008
Skąd: Warszawa

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


Cytat(marczak @ 27.09.2008, 21:31:16 ) *
Jak zrobić, żeby jak się wpisze np &&nr=4 wywalilo, że podstrona nie istnieje (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Jeżeli chcesz korzystać z if możesz zrobić coś takiego
  1. <?php
  2. if($_GET['nr']==&#092;"1\")
  3. {
  4.  include(&#092;"pomoc/1.html\");
  5. }elseif($_GET['nr']==&#092;"2\")
  6. {
  7.  include(&#092;"pomoc/2.html\");
  8. }elseif($_GET['nr']==&#092;"3\")
  9. {
  10.  include(&#092;"pomoc/3.html\");
  11. }else
  12.  echo 'nie ma takiej strony';
  13. ?>

Możesz też skorzystać ze switch( to będzie chyba trochę czytelniejsze)
  1. <?php
  2. switch($_GET['nr'])
  3. {
  4.  case 1<span style="color: #007700":
  5.     include ('pomoc/1.html');
  6.      break;
  7.  case 2<span style="color: #007700":
  8.      include ('pomoc/1.html');
  9.       break;
  10.  defaul:
  11.     echo 'nie ma strony';
  12.      break;
  13. }
  14. ?>


Ten post edytował piaseq 27.09.2008, 20:45:12
Go to the top of the page
+Quote Post
marczak
post
Post #13





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 1.03.2007

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


no dobra, ale zeby jak sie wchodzilo na index.php?action=pomoc nie wywalalo komunikatu o btaku strony, tylko jak sie wpisze bledny &nr=
Go to the top of the page
+Quote Post
piaseq
post
Post #14





Grupa: Zarejestrowani
Postów: 161
Pomógł: 25
Dołączył: 6.09.2008
Skąd: Warszawa

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


Cytat(marczak @ 27.09.2008, 21:44:59 ) *
no dobra, ale zeby jak sie wchodzilo na index.php?action=pomoc nie wywalalo komunikatu o btaku strony, tylko jak sie wpisze bledny &nr=

No ale w czym jest problem. Action i nr to dwie oddzielne zmienne GET, więc możesz w zależności od tego jaką mają wartość dowolnie sterować działaniem strony.

Np. jeżeli jest ustawione tylko action równe pomoc wyświetlasz ogólną stronę pomocy. Jeżeli jest ustawione action równe pomoc i poprawne nr, wyświetlasz odpowiednią podstronę, a jeżeli jest action = pomoc i niewłaściwy nr dajesz komunikat o braku strony.

Jak już napisałem to dwie zupełnie oddzielne zmienne, więc to jak zareaguje na nie twoja strona zależy tylko od warunków, które napiszesz.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 02:14