Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php]Podmiana zmiennej w zależności od zmiennej w linku strony
Sheshelo
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.06.2016

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


Robię stronę i chciałbym aby wartość zmiennej $x zmieniala się w zależności od podstrony w której się znajdujemy. Myślę, że zaoszczędziłoby to trochę miejsca, a przy tym bym się czegoś nauczył. Niestety mam pewien problem.

  1. <a href="index.php?s=1">Pierwsza Strona</a> <br>
  2. <a href="podstrona.php?s=2">Druga Strona</a> <br>
  3. <?php
  4. $s = $_GET['s'];
  5. if($s==1){$x = ":)";}
  6. if($s==2){$x = ":(";}
  7. ?>


Na początek pobieram zmienną z linku strony, potem nadaję zmiennej $x wartość w zależności od tego ile jest warta zmienna s. Niestety nie wiem jak sprawić aby przy pierwszym uruchomieniu strony zmienna już się tam znajdowała i wyskakuje mi błąd mówiący że zmienna s nie istnieje :/ Nie mam pomysłu jak to zrobić. Może ktoś poradzić?
Go to the top of the page
+Quote Post
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Zmienna $s istnieje zawsze. Nie istnieje indeks 's' w tablicy $_GET.
Skoro nie istnieje to dodaj tam warunek if, który obsłuży ten przypadek.
Go to the top of the page
+Quote Post
Sheshelo
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.06.2016

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


W jaki sposób? Wybacz, ale nie za bardzo to rozumiem :/ mam dodać warunek do tych istniejących czy gdzieś w tym GET?
Go to the top of the page
+Quote Post
markonix
post
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Przed przypisaniem wartości do $s musisz sprawdzić czy $_GET['s'] w ogóle istnieje.

Ten post edytował markonix 21.06.2016, 00:23:29
Go to the top of the page
+Quote Post
lukash82
post
Post #5





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

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


Po co chcesz rozbijać każdą podstronę do osobnego pliku? W przyszłości jak Ci się uzbiera kilkanaście kolejnych podstron to zmiana czegokolwiek będzie wymagała za każdym razem edycji każdego pliku...

Nie lepiej zrobić to powiedzmy na index.php i includować to co potrzebne w danym momencie po tych zmiennych s=coś tam. Dzięki temu mod-rewrite w htaccess obskoczysz +- jedną linijką...

Wrzucam to tak do przemyślenia zanim Ci się kod rozrośnie;)
Go to the top of the page
+Quote Post
Sheshelo
post
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.06.2016

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


Tak, mniej więcej o to mi chodziło, ale trochę źle to napisalem (IMG:style_emoticons/default/haha.gif) Ale tak czy siak dziękuję za radę (IMG:style_emoticons/default/smile.gif)
EDIT:
Teraz znowu mam problem (IMG:style_emoticons/default/haha.gif)
mógłby mi ktoś w najprostszy sposób wytłumaczyć jak wstawić na przykład isset tak aby nie wyskakiwał mi dalej ten błąd?

Ten post edytował Sheshelo 21.06.2016, 10:52:11
Go to the top of the page
+Quote Post
viking
post
Post #7





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


http://php.net/manual/en/migration70.new-f...ull-coalesce-op

Poza tym ja bym tu zastosował switch.

Ten post edytował viking 21.06.2016, 11:40:19
Go to the top of the page
+Quote Post
Sheshelo
post
Post #8





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.06.2016

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


Zrozumiałem, że
  1. $username = $_GET['user'] (IMG:style_emoticons/default/questionmark.gif) 'nobody';
to to samo co
  1. $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

czyli musiałbym zamienić te 'user' na 's', ale co z 'nobody'? Dziękuję, że chce wam się tyle mi odpowiadać (IMG:style_emoticons/default/wink.gif)

Ten post edytował Sheshelo 21.06.2016, 11:49:22
Go to the top of the page
+Quote Post
viking
post
Post #9





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Tak, to to samo. Pomyśl troszkę. Co chcesz tam mieć? Pusty string, wartość domyślną np. 1? Później to podstaw.
Go to the top of the page
+Quote Post
Sheshelo
post
Post #10





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.06.2016

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



  1. <?php
  2.  
  3. $s = isset($_GET['s']) ? $_GET['s'] : '1';
  4. if($s==1){$x = ":)";}
  5. if($s==2){$x = ":(";}
  6.  
  7. echo "$x";
  8. ?>


Napisalem to tak, i mi nie wyskakuje żaden error, a jak nie ma niczego w linku to pokazuje że zmienna $x to wesoła buźka, dobrze to zrobiłem? Potem oczywiście podmienię te zmienne na nazwy plików a potem użyję include (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
viking
post
Post #11





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Teraz jeszcze poczytaj czym się w PHP różni == od === i dlaczego jak zamienisz w linii czwartej == na === będzie warunek niespełniony.
I niech ci do głowy nie przyjdzie podstawiać nazwę pliku do include bezpośrednio z $_GET

Ten post edytował viking 21.06.2016, 12:48:30
Go to the top of the page
+Quote Post
Sheshelo
post
Post #12





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.06.2016

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


=== jest pozytywnywtedy kiedy dwie liczby są tego samego typu i są równe, tak? Czyli powinienem jakoś zmienić typ którejś ze zmiennych?

Ten post edytował Sheshelo 21.06.2016, 12:51:23
Go to the top of the page
+Quote Post
viking
post
Post #13





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


W 4 linii sprawdzasz integer a co ustawiłeś w 3?
Go to the top of the page
+Quote Post
Sheshelo
post
Post #14





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.06.2016

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


Chyba stringa, w jaki sposób mogę zrobić z niego inta?
Go to the top of the page
+Quote Post
viking
post
Post #15





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Naucz się korzystać z dokumentacji http://php.net/manual/pl/language.types.integer.php
Go to the top of the page
+Quote Post
Sheshelo
post
Post #16





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.06.2016

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


  1. $s = isset($_GET['s']) ? $_GET['s'] : 1;
  2. if($s===1){$x = ":)";}
  3. if($s===2){$x = ":(";}

zauwazyłem, że napisałem przy jedynce '1', zamieniłem to, ale nadal mam błąd :/

Undefined variable: x
Go to the top of the page
+Quote Post
viking
post
Post #17





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Chociaż sporo się nauczysz a może nawet zrozumiesz na przyszłość (IMG:style_emoticons/default/smile.gif)
var_dump($_GET);

http://php.net/manual/en/reserved.variables.get.php

A rzutowanie miałeś opisane w linku o integerach.

Czytaj zawsze dokumentację ze szczególnym uwzględnieniem zwracanych typów. Większość osób które tu piszą nie ma o tym pojęcia więc liczę że coś wyniesiesz z tej lekcji.
Go to the top of the page
+Quote Post
Sheshelo
post
Post #18





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.06.2016

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


Jeżeli dobrze zrozumiałem, to mam to wkleić pomiędzy $s = [...] a ifami? Mam to jakoś jeszcze modyfikować?
Go to the top of the page
+Quote Post
viking
post
Post #19





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


$_GET jest zmienną globalną dostępną wszędzie, nie ma znaczenia gdzie to wkleisz. Chodzi żebyś zrozumiał na jakich typach danych pracujesz.

Z dokumentacji Note:
The GET variables are passed through urldecode().

urldecode - Returns the decoded string.
Go to the top of the page
+Quote Post
Sheshelo
post
Post #20





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.06.2016

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


Czyli równie dobrze mogłem to zrobić w taki sposób? (IMG:style_emoticons/default/haha.gif) Kompletnie o tym nie pomyślałem

  1. $s = isset($_GET['s']) ? $_GET['s'] : '1';
  2. if($s==='1'){$x = ":)";}
  3. if($s==='2'){$x = ":(";}
Go to the top of the page
+Quote Post
viking
post
Post #21





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Albo zostawić == (IMG:style_emoticons/default/smile.gif)

A teraz myk który może się jeszcze wiele razy przydać:
  1. $a = (int) '';
  2. $b = (int) '1';
  3.  
  4. var_dump($a, $b);
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 17.09.2025 - 09:14