Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] $_GET
Forum PHP.pl > Forum > PHP
marczak
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 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
piaseq
  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. ?>
marczak
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 questionmark.gif
blooregard
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.
marczak
a nie można tego zrobic nie ruszajac nic w smartach questionmark.gif tylko do tego pliku pomoc.php co jest ond odpalany index.php?action=pomoc wstawić jakiś kod questionmark.gif zeby tworzylo index.php?action=pomoc&nr=1 itp questionmark.gif
blooregard
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 smile.gif
marczak
blooregard waliduj tzn ?
piaseq
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.
marczak
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 questionmark.gif
batman
Co się dzisiaj dzieje? Plaga ludzi, którzy nie używają bbcode?

@marczak popraw bbcode!
marczak
poprawione.


~batman
Gdzie?
Na pewno nie w tym poście.
piaseq
Cytat(marczak @ 27.09.2008, 21:31:16 ) *
Jak zrobić, żeby jak się wpisze np &&nr=4 wywalilo, że podstrona nie istnieje 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. ?>
marczak
no dobra, ale zeby jak sie wchodzilo na index.php?action=pomoc nie wywalalo komunikatu o btaku strony, tylko jak sie wpisze bledny &nr=
piaseq
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.
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.