Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z ustawieniem _GET ;|
Forum PHP.pl > Forum > Przedszkole
FliSs_tCv
Witam serdecznie na początku mojego skryptu dodaje:

  1. <?php
  2. $dzial = $_GET["action"];
  3.  
  4. if (!isset($dzial))
  5. {
  6. $dzial = "index.php?action=start";
  7. }
  8. require('module/wyloguj.php');
  9. ?>


No i szczerze powiem że jestem strasznie zdezorientowany dlaczego dzieje się w tej sposób że raz sprawdza _GET['action'] jeśli jest pusta to nadaje jej wartość a raz tego wg nie robi i nie mam zielonego pojęcia dlaczego może mam coś źle napisane ?

P.S Krótkie naprostowanie do czego to potrzebuje chodzi mi o menu gdzie zostaje wyróżniony buton dla danej podstrony poprzez ustawienie $GET['action'] no i jak wchodzę na stronę to wiadomo nie wpisuję index.php?... chciałbym automatycznie wyróżnić 1-szy button start winksmiley.jpg
webdice
isset" title="Zobacz w manualu PHP" target="_manual sprawdza czy zmienna istnieje, a nie czy ma jakąś wartość, tak więc warunek zostanie zpełniony dla np.

Kod
index.php?dzial
index.php?dzial=
index.php?dzial=cos
rybik
Cytat(FliSs_tCv @ 12.08.2008, 14:39:47 ) *
raz sprawdza _GET['action'] jeśli jest pusta to nadaje jej wartość


niby gdzie ?

przeciez nie przekazujesz $_GET['action'] przez referencje, więc zmiany na $dzial sa zmianami tylko na tej zmiennej, ktora poczatkowo posiada kopie wartosci z $_GET['dzial']


poprawnie:
  1. <?php
  2. if (!isset($_GET['action']) || $_GET['action']=='') {
  3. // gdy pusta lub brak - ustaw na start
  4. $_GET['action'] = 'start';
  5. } else {
  6. // gdy istnieje i niepusta - usun zbedne-szkodliwe znaki (walidacja danych od użytkownika)
  7. $_GET['action'] = htmlspecialchars(stripslashes($_GET['action']));
  8. }
  9.  
  10. // w dalszej części można wzglednie bezpiecznie używać $_GET['action']
  11. ?>
FliSs_tCv
Hmm nadal mi nie ustawia w pasku adresu index.php?action=start czyli nie przekierowuje jakby na dany adres:(
golaod
Sprecyzuj o co Ci chodzi bo to co piszesz jest jakąś dziwną abstrakcją którą tylko ty rozumiesz. Napisz co chcesz osiągnąć a odpowiedź będziesz miał w minutę.
rybik
ustawienie $_GET nie determinuje adresu, pytasz o ustawienie GET a nie o przekierowanie, jeżeli cały ambaras tylko po to żeby podświetlać przycisk to może łatwiej w podświetlaniu przycisku dodać drugi warunek i podświeltac go również gdy brak $_GET['action']
FliSs_tCv
być może będzie to lepszym zastosowaniem o którym piszesz rybik lecz nie mam pojecia jak to wykonać w takim bądź razie:( mam skrypt który zadziała dopiero w tym momencie gdy GET będzie miał ustawione pewne dane wtedy skrypt powiąże to z daną w array i podświetli dany button winksmiley.jpg

  1. <?php
  2.  
  3. $menu[start]=array("img/menu/menu_1_1.png", "img/menu/menu_1.png" );
  4. $menu[oferta]=array("img/menu/menu_2_2.png", "img/menu/menu_2.png" );
  5. $menu[produkty]=array("img/menu/menu_3_3.png", "img/menu/menu_3.png" );
  6. $menu[portfolio]=array("img/menu/menu_4_4.png", "img/menu/menu_4.png" );
  7. $menu[szablony]=array("img/menu/menu_5_5.png", "img/menu/menu_5.png" );
  8. $menu[kontakt]=array("img/menu/menu_6_6.png", "img/menu/menu_6.png" );
  9.  
  10.  echo '<script type="text/javascript"><!-- <![CDATA[';
  11.  
  12. foreach($menu as $klucz=>$wartosc) {
  13. if ($klucz==$dzial) {
  14. echo 'new Image().src="'.$menu[$klucz][0].'";'."\n";
  15. $menu[$klucz]="<img id=\"menu_img\" src=\"{$menu[$klucz][1]}\" border=\"0\"
  16. alt=\"{$menu[$klucz][2]}\" />";
  17. } else {
  18. echo 'new Image().src="'.$menu[$klucz][1].'";'."\n";
  19. $menu[$klucz]="<img id=\"menu_img\" src=\"{$menu[$klucz][0]}\" border=\"0\"
  20. alt=\"{$menu[$klucz][2]}\" onmouseover=\"this.src='{$menu[$klucz][1]}'\"
  21. onmouseout=\"this.src='{$menu[$klucz][0]}'\" />";
  22. }
  23. }
  24.  
  25. echo '// ]]> --></script>';
  26. ?>
  27.  
  28. <a href="index.php?action=start"><?=$menu[start]?></a>
  29. <a href="index.php?action=oferta"><?=$menu[oferta]?></a>
  30. <a href="index.php?action=produkty"><?=$menu[produkty]?></a>
  31. <a href="index.php?action=portfolio"><?=$menu[portfolio]?></a>
  32. <a href="index.php?action=szablony"><?=$menu[szablony]?></a>
  33. <a href="index.php?action=kontakt"><?=$menu[kontakt]?></a>


Oto skrypt tego menu będe wdzięczny za pomoc smile.gif
czajnikkoko
nie wiem czy dobrze rozuymiem o co ci chodzi,ale Twoj warunek nigdy nie bedzie spełniony poniewaz ta zmienna zawsze istnieje bo ją tworzysz:

  1. <?php
  2. $dzial = $_GET["action"];
  3. ?>




lepiej w warunku sprawdzaj czy jest pusta, czyli zmien warunek na taki

  1. <?php
  2. if (empty($dzial))
  3.    {
  4.    $dzial = "index.php?action=start";
  5.    }
  6. ?>
FliSs_tCv
niestety ale nie nadaje takiego adresu nie wiem czemu sad.gif
golaod
Mogę się spytać po co jakieś takie dziwne ceregiele? Rozumiem, że chodzi Ci o efekt taki:
Masz 5 przycisków które kierują do index.php/action=start/1/2/3/4 w zależności od tego co ktoś wybrał to ten przycisk jest wyłączony i zmienił kolor tak ? Jeśli tak to:
  1. <?php
  2. $dzial = (isset($_GET['action'])?'start':$_GET['action'];
  3. #przyciski
  4. echo ($dzial=='start')?'<img src="sciezka/do/buttona/podswietlonego.jpg" />':'<a target="_self" href="index.php?action=1"><img src="przycisk/do/buttona/niepodswietlonego.jpg" /></a>';
  5. #i teraz ctrl+c ctrl+v i robisz tak z innymi przyciskami
  6. ?>
FliSs_tCv
Powiem szczerze że nie rozumiem Twojego przykładu golaod smile.gif wczytałem sobie te kod do swojego pliku i wywala błędy z 1 sobie poradziłem chodziło o niespodziewany ';' a drugi to 'Parse error: syntax error, unexpected T_ECHO in (ścieżka) on line 3' i nie wiem co to tam może być źle pierwszy raz takie coś widzę ;P nie chodzi o błąd lecz o kod czyli jak został on napisany he ;]
golaod
No bo jak już poprawiasz błędy po mnie to sprawdzaj dokładnie.
Przypatrz się jak jest napisany warunek dla zmiennej $dzial;
(isset($_GET['action']) --przypatrz się czy wszystko na pewno jest. A średnik ma być gdzie był !
Ech ja nie wiem...kiedy się ludzie nauczą patrzeć na kod znak po znaku.
FliSs_tCv
Przepraszam ale nie każdy jest ideałem ;P ja na przykład cały czas się uczę w wolnych chwilach tego php i wg;) jest to dla mnie czarna magia na co dzień zajmuje się grafiką dlatego może moje trudności z php winksmiley.jpg na prawdę nie wiem co mam tu zauważyć lepiej było by się uczyć na pewnym przykładzie wtedy mógłbym przestudiować ten kod i dowiedziałbym się co on robi smile.gif tak z ciemnego w ciemniejsze się pcham ;P mam nadzieje że rozumiesz winksmiley.jpg
golaod
przykład warunek:
  1. <?php
  2. if(cos>cos2)
  3. {
  4.  kod
  5. }
  6. else
  7. {
  8. kod2
  9. }
  10. ?>

wersja skrócona:
  1. <?php
  2. (cos>cos2)?kod:kod2;
  3. ?>

Teraz jak wiadomo używamy funkcji isset by sprawdzić czy zmienna $_GET['action'] istnieje w ogóle.
Funkcja wygląda tak:
  1. <?php
  2. isset($zmienna)
  3. ?>

Teraz proszę Cię o trochę samodzielności, podstaw do siebie wszystko lecąc od dołu (poza normalnym ifem) i znajdź sam błąd smile.gif
FliSs_tCv
wybacz ale naprawdę nie rozumiem jest to dla mnie za czarna magia no nic ale i ta dziękuje za pomoc smile.gif może mi się uda to jakoś zrobić sad.gif pozdrawiam winksmiley.jpg


EDIT ----------------------->

Kolega mi pomógł teraz nie ma błędów wyświetla obrazek ale nie pokazuje po najechaniu zmiany obrazka:( co tam jest nie tak ?
golaod
Ech...brakowało ZAMKNIĘCIA NAWIASU. Grałeś ty kiedyś w gry przygodowe co snitch.gif ? Przyznaj się ;]
Poprawnie: (isset($_GET['action']))

@EDIT
A nic nie było mowy, żebym Ci w skrypcie jeszcze jakiś hover dopisywał. Ja z tego co zrozumiałem to miało być tak, że jak jest się na podstronie do której prowadził przycisk to ten przycisk nie działa i wygląda inaczej. Rozumiem, że chodziło Ci o coś innego ?
FliSs_tCv
Witam jednak mi to nie działa pokazuje wszystkie podświetlone przyciski sad.gif chyba że coś źle napisałem o to kod:

  1. <?php
  2. $dzial = (isset($_GET['action'])'start' : $_GET['action']);
  3. echo ($dzial=='start')?'<img src="img/menu/menu_1_1.png" />':'<a target="_self" href="index.php?action=start"><img src="img/menu/menu_1.png" /></a>';
  4.  
  5. $dzial = (isset($_GET['action'])'oferta' : $_GET['action']);
  6. echo ($dzial=='oferta')?'<img src="img/menu/menu_2_2.png" />':'<a target="_self" href="index.php?action=oferta"><img src="img/menu/menu_2.png" /></a>';
  7.  
  8. $dzial = (isset($_GET['action'])'produkty' : $_GET['action']);
  9. echo ($dzial=='produkty')?'<img src="img/menu/menu_3_3.png" />':'<a target="_self" href="index.php?action=produkty"><img src="img/menu/menu_3.png" /></a>';
  10.  
  11. $dzial = (isset($_GET['action'])'portfiolio' : $_GET['action']);
  12. echo ($dzial=='portfolio')?'<img src="img/menu/menu_4_4.png" />':'<a target="_self" href="index.php?action=portfolio"><img src="img/menu/menu_4.png" /></a>';
  13.  
  14. $dzial = (isset($_GET['action'])'szablony' : $_GET['action']);
  15. echo ($dzial=='szablony')?'<img src="img/menu/menu_5_5.png" />':'<a target="_self" href="index.php?action=szablony"><img src="img/menu/menu_5.png" /></a>';
  16.  
  17. $dzial = (isset($_GET['action'])'kontakt' : $_GET['action']);
  18. echo ($dzial=='kontakt')?'<img src="img/menu/menu_6_6.png" />':'<a target="_self" href="index.php?action=kontakt"><img src="img/menu/menu_6.png" /></a>';
  19. ?>


a tu to testuje winksmiley.jpg kliknij tutaj;)
golaod
  1. <?php
  2. $dzial = (!isset($_GET['action']))'start' : $_GET['action'];
  3. echo ($dzial=='start')?'<img src="img/menu/menu_1_1.png" />':'<a target="_self" href="index.php?action=start"><img src="img/menu/menu_1.png" /></a>';
  4.  
  5. echo ($dzial=='oferta')?'<img src="img/menu/menu_2_2.png" />':'<a target="_self" href="index.php?action=oferta"><img src="img/menu/menu_2.png" /></a>';
  6.  
  7. echo ($dzial=='produkty')?'<img src="img/menu/menu_3_3.png" />':'<a target="_self" href="index.php?action=produkty"><img src="img/menu/menu_3.png" /></a>';
  8.  
  9. echo ($dzial=='portfolio')?'<img src="img/menu/menu_4_4.png" />':'<a target="_self" href="index.php?action=portfolio"><img src="img/menu/menu_4.png" /></a>';
  10.  
  11. echo ($dzial=='szablony')?'<img src="img/menu/menu_5_5.png" />':'<a target="_self" href="index.php?action=szablony"><img src="img/menu/menu_5.png" /></a>';
  12.  
  13. echo ($dzial=='kontakt')?'<img src="img/menu/menu_6_6.png" />':'<a target="_self" href="index.php?action=kontakt"><img src="img/menu/menu_6.png" /></a>';
  14. ?>
FliSs_tCv
Witam mam pewien problem w czasie tworzenia dalszego skryptu gdzie GET-em było przesyłane tylko coś takiego

  1. index.php?action=6


teraz mam troszkę inaczej ponieważ w linku przekazuje jeszcze to p.s. patrz na to &idk=1

  1. index.php?action=6&idk=1


i jak mam zrobione

  1. <?php
  2. echo ($dzial=='6&idk=1')?'<img src="img/menu/menu_19_19.png" />':'<a target="_self" href="index.php?action=6"><img src="img/menu/menu_19.png" /></a>';
  3. ?>


to mi nie wyróżnia danej podstrony i podkreśla mi wszystkie.
W podstronie 6 wczytuje dane z bazy próbowałem jeszcze tak:

  1. <?php
  2. echo ($dzial=='6' + '&idk=' + '1')?'<img src="img/menu/menu_19_19.png" />':'<a href="index.php?action=6&idk=1"><img src="img/menu/menu_19.png" /></a>';
  3. ?>


niestety nie bardzo mi to działa tongue.gif nie wiem co mam zrobić kombinuje i kombinuje ale wysiadam więc napisałem tutaj może mi pomożecie.

Pozdrawiam
golaod
A niby dlaczego ma Ci dzialac skoro &idk to jest kolejna zmienna czyli $_GET['idk'] która nie zawiera się w zmiennej $dzial.
Poczytaj może trochę o GET i POST ?
FliSs_tCv
niestety ale nadal nie wiem jak to wykonać próbowałem coś tam zmieniać ale nie wiem mógłby mi ktoś pomóc zrozumieć jak to trzeba robić ? pozdrawiam
tomekpl
tu masz switch:
  1. <?php
  2.  
  3. switch( isset($_GET['page']) ? $_GET['page'] : NULL)
  4. {
  5.  
  6. case 'strona':
  7. $strona="strony/strona.php";
  8. break;
  9. case 'strona2':
  10. $strona="strony/strona2.php";
  11. break;
  12.  
  13. default:
  14. $strona="strony/home.php";
  15. break;
  16. }
  17. include("$strona");
  18.  
  19. ?>
  20.  
  21. A tak może Get wyglądać:
  22.  
  23. <?php
  24. if($_GET['action'] == "konstrukcje" or $_GET['action'] == "stacje" or $_GET['action'] == "stanowiska" ) { 
  25.  
  26. $action= $_GET['action'];
  27.  
  28. // dalesza część kodu
  29.  
  30. }
  31. else{
  32. echo" Niestety, ale taki dział nie istnieje!! ";
  33. }
  34. ?>


W taki sposób możesz dodać tylko takie kategorie jakie mają być

Ktoś wpisze:
strona.php?action=konstrukcje : wyświetli dalszą część kodu


strona.php?action=bleble
strona.php?action=
strona.php?action=0
strona.php?action=http://www.strona.pl/zlosliwykod.php

: wyświetli "Niestety, ale taki dział nie istnieje!!"

------------
Możesz dodawac kolejne warunki np
jezeli get"id" nie jest większe od 0 i są to tylko liczby to zle, jesli tak to pokaz

action=konstrukcje&id=1 : ok

action=konstrukcje&id=fdsfd : zle

itp
bmL
Kod
index.php?action=6&idk=1

Daje Ci taki wynik, że w masz 2 zmienne:
action=6
idk=1
czyli jeżeli chcesz sprawdzić czy taki przypadek wystąpił musisz sprawdzić 2 zmienne oddzielnie.
Jeżeli dalej nie rozumiesz to poważnie musisz poczytać smile.gif

Cytat(czajnikkoko @ 12.08.2008, 23:57:41 ) *
nie wiem czy dobrze rozuymiem o co ci chodzi,ale Twoj warunek nigdy nie bedzie spełniony poniewaz ta zmienna zawsze istnieje bo ją tworzysz:

  1. <?php
  2. $dzial = $_GET["action"];
  3. ?>

lepiej w warunku sprawdzaj czy jest pusta, czyli zmien warunek na taki

  1. <?php
  2. if (empty($dzial))
  3. {
  4. $dzial = "index.php?action=start";
  5. }
  6. ?>

Pozwolę sobie wtrącić małą dygresję: jeżeli $_GET["action"]; nie istnieje to tak samo $dzial nie istnieje.
Przykład:
  1. <?
  2. $test = $_GET['test'];
  3.  
  4. if(!isset($test))
  5. echo 'jednak nie istnieje ;]';
  6. else
  7. echo 'a jednak się mylę? :|';
  8. ?>

wyświetla:
Kod
jednak nie istnieje;]

No chyba, że ktoś wywoła coś takiego:
index.php?test [...]

bmL, dobranoc winksmiley.jpg
FliSs_tCv
ehh ja cały czas myślałem że muszę coś zrobić w tym warunku aby mi 2 zmienne get załapało:

  1. <?php
  2. $dzial = (isset($_GET['action'])'start' : $_GET['action']);
  3. ?>


dopiero po pewnym czasie myślenia doszedłem do jakże prostej i dobrej decyzji jak i pomysłu he aby zrobić to tak:

  1. <?php
  2. $dzial = (isset($_GET['action'])'1' : $_GET['action']);
  3. $dzial_2 = (isset($_GET['kat'])'1' : $_GET['kat']);
  4.  
  5. echo ($dzial == '1' & $dzial_2 == '1')
  6. ?>


Dziękuje wszystkim za wypowiedzi na pewno dużo mi pomogły w dojściu do rozwiązania mojego małego problemu ;P winksmiley.jpg
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.