Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Nietypowy problem ze zmienną "globalna"
bladykiel
post 22.04.2013, 23:35:13
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.07.2012

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


Witam, otóż spotkalem się właśnie z dziwnym problemem.. Próbowałem na wiele sposobów, jednak bezskutecznie.

  1. //$zmienna=$_POST['koszt'];
  2. $GLOBALS['bla']=$_POST['koszt'];
  3.  
  4.  
  5. if($action==""){
  6.  
  7. $main_content.='jakis text '.$bla;
  8.  
  9. $main_content.= '<br><a href="?subtopic=sprzedaj&action=tak">Tak </a>';
  10. }
  11.  
  12. if($action=="tak")
  13. {
  14. $main_content.='text '.$bla';
  15. }
  16.  
  17. }

Pytanie brzmi, dlaczego w żaden sposób w tym ifie
  1. if($action=="tak")
nie widzi zmiennej $bla ? Próbowałem już na wiele sposobów, czy to przez global, czy normlanymi zmiennymi, to jednak ciąglę nie mogę odwołać się do zmiennej
  1. $_POST['koszt']
Jakieś propozycje ?

Ten post edytował bladykiel 22.04.2013, 23:39:09
Go to the top of the page
+Quote Post
Szymciosek
post 22.04.2013, 23:40:15
Post #2





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


  1. $GLOBALS['bla']='bla bla bla';
  2.  
  3. var_dump($GLOBALS['bla']);


Raczej coś w ten sposób.

http://www.roseindia.net/tutorial/php/php-...les-global.html
http://forum.codecall.net/topic/35041-howt...obal-variables/

Tutaj jeszcze znalazłem jakieś informacje, które mogą Ci się przydać.
Go to the top of the page
+Quote Post
bladykiel
post 22.04.2013, 23:46:53
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.07.2012

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


Jeśli chodzi o rozwiązania z linków, robiłem już to wcześniej, również nie działa.

Natomiast odnośnie var_dump($GLOBALS['bla']), oczywiście stosując go w pierwszym ifie
  1. if($action=="")
zwraca to co miał zwracać. Natomiast gdy stosuję go w ifie drugim
  1. if($action=="tak")
nie zwraca już niczego.
Go to the top of the page
+Quote Post
Szymciosek
post 22.04.2013, 23:59:37
Post #4





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Co zwraca $action?
Może po prostu ten warunek nigdy nie zostaje spełniony?
Go to the top of the page
+Quote Post
bladykiel
post 23.04.2013, 00:02:19
Post #5





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.07.2012

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


  1. $main_content.= '<br><a href="?subtopic=sprzedaj&action=tak">Tak </a>';
  2.  
  3. }


masz napisane.
jesli klikniesz w TAK ma sie wykonac if z action=="tak".
Co więcej, wykonuje się on, tyle że nie widzi zmiennych.

Co również masz tu napisane:
  1. $main_content.='text '.$bla';

dla uproszczenia $main_content to tak jakby echo. bo wywołaniu się tego ifa, wyświetla "text " i tyle. Zmiennej jakby nie było.

Ten post edytował bladykiel 23.04.2013, 00:04:37
Go to the top of the page
+Quote Post
Szymciosek
post 23.04.2013, 00:04:16
Post #6





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Hmmm a próbowałeś zamiast
if (...) zrobić elseif (...)?
Go to the top of the page
+Quote Post
bladykiel
post 23.04.2013, 00:05:46
Post #7





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.07.2012

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


Owszem, aczkolwiek nie składnia jest problemem, gdyż w innym przypadku, wszystko działa bez zarzutu.
Go to the top of the page
+Quote Post
Szymciosek
post 23.04.2013, 00:09:22
Post #8





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Zrobiłem wstępnie:
  1. //$zmienna=$_POST['koszt'];
  2. $GLOBALS['bla']=' nowy koszt';
  3. $action = 'tak';
  4.  
  5.  
  6. if($action==""){
  7.  
  8. $main_content.='jakis text '.$bla;
  9.  
  10. $main_content.= '<br><a href="?subtopic=sprzedaj&action=tak">Tak </a>';
  11. }
  12.  
  13. if($action=="tak")
  14. {
  15. $main_content.='text '.$bla;
  16. }
  17.  
  18. echo $main_content;


I muszę Ci powiedzieć, że w obu przypadkach, gdy $action jest puste '' lub 'tak' zwraca coś. Więc jeden i drugi warunek działa.
Go to the top of the page
+Quote Post
bladykiel
post 23.04.2013, 00:11:15
Post #9





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.07.2012

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


Jeśli tak to napiszesz to owszem smile.gif

problemem jest gdy bedziemy chcieli zmiennej bla przypisac wartość z formularza.

  1. $GLOBALS['bla']=$_POST['koszt'];


wtedy następuje problem, gdyż w drugim ifie nie widzi owej zmiennej.
Go to the top of the page
+Quote Post
Szymciosek
post 23.04.2013, 00:14:20
Post #10





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


No to zostaje mi tylko postawić na to, że z formularza masz coś nie tak, a tego nie podałeś.

Zawsze powinieneś też sprawdzić co zwraca sama tablica $_POST.
W tym celu:
var_dump($_POST);
Go to the top of the page
+Quote Post
bladykiel
post 23.04.2013, 00:16:20
Post #11





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.07.2012

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


Niestety, tu także się mylisz. Gdyby było coś źle napisane, to w pierwszym ifie, odwołując się do zmiennej $bla nie zwróciło by prawidłowej wartości, a jednak ją zwraca.
Go to the top of the page
+Quote Post
Szymciosek
post 23.04.2013, 00:17:55
Post #12





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Dobra, to pokaż więcej kodu i będziemy sprawdzać co tam masz takiego.

Najlepiej wydziel tylko formularz + php.
Go to the top of the page
+Quote Post
bladykiel
post 23.04.2013, 10:12:39
Post #13





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.07.2012

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


Sam formularz w najprostszej psotaci wygląda tak:

  1. <form action="?subtopic=sprzedaj" method="post">
  2. <input name="koszt" value='.$eq['koszt'].' type="hidden" />
  3. <input type="submit" value="sprzedaj"/></form>


Z kolei najprostszy przykład miejsca wysłania formularza miałeś podany w pierwszym poście.

Ktoś ma jeszcze jakieś sugestie ?
Go to the top of the page
+Quote Post
nospor
post 23.04.2013, 10:22:50
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




facepalmxd.gif
Tyle postów w tym prostym temacie...

Przecież o to:
if($action=="tak")
jest odpalane gdy ktoś kliknie na linka
$main_content.= '<br><a href="?subtopic=sprzedaj&action=tak">Tak </a>';

No a przecież klikając na linka nie przesyłacie zadnych danych postem, wiec o to:
$GLOBALS['bla']=$_POST['koszt'];
logiczne ze bedzie mialo pustą wartosc bo POST nie istnieje....


GLOBALS działa w ramach jednego ządania. Jak chcesz dane przekazywać między żadaniami to masz używać sesji.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bladykiel
post 23.04.2013, 10:28:59
Post #15





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.07.2012

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


Dobrze, tylko jest taki problem smile.gif
Zmienna w pierwszym ifie dziala, i pomimo tego, że wartość $_POST['koszt'] została przypisana NORMALNEJ zmiennej, drugi if jej nie widzi.
przykladowo
  1. $zmienna=$_POST['koszt'];
  2.  
  3.  
  4. if(action="")
  5. {
  6. $main_content.=$zmienna; //tu zmienna widzi
  7. $main_content.= '<a href="?subtopic=sprzedaj&action=tak">Tak </a>';
  8. }
  9.  
  10. if(action="tak")
  11. {
  12. $main_content.=$zmienna; //tu juz jej nie widzi
  13. }
Go to the top of the page
+Quote Post
nospor
post 23.04.2013, 10:30:04
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




I ze niby oba IFy wykonują się w jednym żądaniu??


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
!*!
post 23.04.2013, 10:31:36
Post #17





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Zacznij od podstaw:
http://pl.wikibooks.org/wiki/PHP
http://pl.wikibooks.org/wiki/PHP/Formularze

Nie rozumiem dlaczego uznałeś że &action jest równie $action. Wypadałoby to ustalić

  1. $action = $_GET['action'];

A pierw sprawdzić czy formularz w ogóle został wysyłany i czy zmienne istnieją przez isset


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
bladykiel
post 23.04.2013, 10:32:18
Post #18





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.07.2012

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


1. if wykonuje się, gdy wyślemy formularz z innej podstrony. Natomiast drugi, gdy klikniemy na link "TAK".
Jednak, o ile rozumiem dlaczego global moze nie dzialać, nie mogę zrozumieć, dlaczego normalna zmienna
  1. $zmienna=$_POST['koszt'];
nie chce dzialac.

$up, jak już mowiłem, jest to NAJPROSTSZY przykład ilustrujący ten przykład smile.gif Pierwszy raz, spotykam się, aby normalna zmienna, do której była przypisana wartośc _POST nie była widziana w całej podstronie.

Ten post edytował bladykiel 23.04.2013, 10:33:43
Go to the top of the page
+Quote Post
nospor
post 23.04.2013, 10:33:37
Post #19





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Rany julek.... przecież w pierwszym moim poście w tym temacie właśnie dokładnie to ci wyjaśniłem.... przeczytaj ten post jeszcze raz....

ps: przenosze na przedszkole


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
!*!
post 23.04.2013, 10:36:06
Post #20





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(bladykiel @ 23.04.2013, 11:32:18 ) *
$up, jak już mowiłem, jest to NAJPROSTSZY przykład ilustrujący ten przykład smile.gif Pierwszy raz, spotykam się, aby normalna zmienna, do której była przypisana wartośc _POST nie była widziana w całej podstronie.


Masło maślane. Przecież robisz jakąś kompletną bzdurę jeśli chodzi o przesył danych.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 14.08.2025 - 06:56