Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Zmienna globalna
bladykiel
post
Post #1





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

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


Mam taki dziwny problem..
mam sobie zmienna $boh="a"; która jest zadeklarowana na początku dokumentu.
Potem mam kilka ifów i w zależności który if jest "poprawny" to:
  1. global $boh;
  2. $boh = 'blabla';

i na końcu dokumentu wywołując zmienną $boh dsotaję "a". Jaka jest tego przyczyna ? Jak to napisać aby zmienna $boh przyjęła wartość jaka jest przypisana tej zmiennej w ifie ?
Go to the top of the page
+Quote Post
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Pokaż SSCCE.

Ten post edytował Crozin 4.08.2012, 14:44:21
Go to the top of the page
+Quote Post
markonix
post
Post #3





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

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


Podaj więcej kodu bo piszesz bzdury.
Global ma znaczenie w przypadku funkcji czy klas, a nie ma zastosowania w przypadku normalnego przepływu kodu (np. konstrukcje warunkowe) jeżeli zadeklarowałeś zmienną u góry dokumentu to na jego "dole" będzie miała taką samą wartość chyba że ją po prostu nadpiszesz.

Ten post edytował markonix 4.08.2012, 14:45:30
Go to the top of the page
+Quote Post
bladykiel
post
Post #4





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

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


To jak ją nadpisać? Próbowałem na wiele sposobów i nie mogę ..
dla uproszczenia mam coś takiego:
  1. $boh ="a";
  2. // kod kod
  3. if (cos tam cos tam)
  4. tu bym chciał zmienić wartość zmiennej $boh
  5. //kod kod kod
  6.  
  7. echo $boh;


Ten post edytował bladykiel 4.08.2012, 14:49:51
Go to the top of the page
+Quote Post
markonix
post
Post #5





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

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


Przecież to się nawet nie nadaje na przedszkole tylko jakiś żłobek..

Nadpisujesz tak samo jak przypisujesz wartość zmiennej.

A to, że wartość się nie zmienia to oczywistym faktem jest, że warunek nie jest spełniany..
Go to the top of the page
+Quote Post
bladykiel
post
Post #6





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

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


No włąśnie jak by tak było to bym nie pisał takiego bezsensownego tematu, racja ?
  1. $boh ="a";
  2. $main_content .= "<form method='POST'>";
  3. if(($_POST["nacja"])=="Xor"){
  4. //----------kodyyyy
  5. $boh = 'Xor';
  6. }
  7. if(($_POST["nacja"])=="Bel"){
  8. //----------kodyyyy
  9. $boh = 'bel';
  10. }
  11. $main_content .= '<input type="submit" name="wygeneruj1" value="wygeneruj"/></form>';
  12. if(isset($_POST['wygeneruj1'])){
  13. //kody kody
  14. echo $boh;
  15. }

Mniej więcej chodzi o coś takiego. Warunek NA PEWNO jest poprawny gdyż reszta kodów działa poprawnie..

Ten post edytował bladykiel 4.08.2012, 15:18:20
Go to the top of the page
+Quote Post
markonix
post
Post #7





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

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


W tej papce beznadziejnego kodu nie widzę nigdzie deklaracji owej "nacji".
Go to the top of the page
+Quote Post
bladykiel
post
Post #8





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

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


"nacja" jest zmienna w innym pliku (dokłądniej w formularzu)
  1. '<form action="jakis tam plik.php" method="POST">xxx:
  2. <select name="nacja">
  3. <optgroup label="Inferno">
  4. <option value="Xor">x</option>
  5. <option value=Gar>g</option>
  6. <option value=Kal>k</option>
  7. <option value=Bel>b</option>
  8. </optgroup>


Ale jak już mówiłem WARUNEK NIE JEST PROBLEMEM.
Nie wiem dlaczego zmienna w IFie nie zmienia swej wartości.. I to jest tylko mój problem.


edit.. btw przypuszczam, iż ma to związak z tym, iż zmienna jest tak naprawdę użyta w formularzu, a ja próbuję ją wywołać poza nim.

Ten post edytował bladykiel 4.08.2012, 15:27:03
Go to the top of the page
+Quote Post
markonix
post
Post #9





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

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


Czy ten kod to PHP że dajesz go w znacznik PHP?

jakis tam plik.php co to na nazwa pliku?

Stringi w value umieszcza się w cudzysłowie. Liczby zresztą już też wg nowych standardów.

edit:
Skąd wiesz, że warunek jest spełniany - udowodnij to bo i tak nie mam podstaw w to wierzyć.
Jeszcze kolejny błąd - drugi IF powinien być IF ELSE'em.
Po seletcie widzę że opcji jest więcej niż dwie i można tu znacznie ładniejsze konstrukcje zastosować niż kolejne IFy - switch czy jeszcze lepiej tablica asocjacyjna.

Ten post edytował markonix 4.08.2012, 15:28:54
Go to the top of the page
+Quote Post
markonix
post
Post #10





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

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


Pisałem Ci żebyś mi udowodnił spełnianie warunku - choćby debugowaniem zmiennej z nacją.
Mnie select działa prawidłowo mimo HTMLowych błędów.

Ten post edytował markonix 4.08.2012, 15:34:19
Go to the top of the page
+Quote Post
bladykiel
post
Post #11





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

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


Warunek jest spełniony na 100%, gdy na końcu pliku dodam:
  1. foreach ($_POST[pole1] as $asd => $dsa){
  2. $test = strpos($dsa, '0');
  3. if ($test === false) {
  4. echo $dsa.'</br>';
  5. }
  6. }

wypisze mi to co chciałem tzn. nazwy karty (w tym przypadku stworzeń) oraz ich liczbę..

Ten post edytował bladykiel 4.08.2012, 15:37:19
Go to the top of the page
+Quote Post
!*!
post
Post #12





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

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


Masakra (IMG:style_emoticons/default/biggrin.gif)
http://pl.wikibooks.org/wiki/PHP
Skoro spełniasz warunek, to skąd mamy wiedzieć gdzie leży błąd z fragmentu kodu. var_dump() sprawdzaj po kolei.
Poza tym nie
  1. $_POST[pole1]

a
  1. $_POST['pole1']


Ten post edytował !*! 4.08.2012, 15:43:05
Go to the top of the page
+Quote Post
bladykiel
post
Post #13





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

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


jezu..
wszystko działa poprawnie na 100%.. Nie wiem tylko dlaczego zmienna $boh nie zmienia swojej wartości pomimo obecności w ife " $boh = 'Xorm, Czempion Otchłani';"

Ten post edytował bladykiel 4.08.2012, 15:45:50
Go to the top of the page
+Quote Post
CuteOne
post
Post #14





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


@markonix szkoda Twojego i innych czasu... w końcu on wie lepiej.

@bladykiel posłuchaj rad i wskazówek mądrzejszych w danym temacie. Jeżeli ktoś prosi o debugowanie zmiennej to ją debuguj - unikniesz potoku bezsensowych postów.

ps. mówiłem poczytaj tutoriale - te dla zielonych bo masz braki w wiedzy.
Go to the top of the page
+Quote Post
bladykiel
post
Post #15





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

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


Słucham, jednak wiem, iż warunek nie jest tu problemem, gdyż reszta kodu wykonuje się bez problemu za każdym razem.
po wykonaniu
  1. $main_content .= var_dump($boh) ;

na końcu pliku pokazuje iż zmienna jest pusta.
Go to the top of the page
+Quote Post
!*!
post
Post #16





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

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


Cytat(bladykiel @ 4.08.2012, 16:55:36 ) *
  1. $main_content .= var_dump($boh) ;

na końcu pliku pokazuje iż zmienna jest pusta.

to masz odpowiedź.
Go to the top of the page
+Quote Post
bladykiel
post
Post #17





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

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


To w takim razie jak mam ją przypisać w ifie skoro
  1. $boh = "Xorm, Czempion Otchłani";

nie daje żadnego efektu ?


btw. gdy na początku pliku dam $boh="a";
po wykonaniu var_dump($boh) zwróci mi string(1) "a"

Ten post edytował bladykiel 4.08.2012, 16:00:00
Go to the top of the page
+Quote Post
!*!
post
Post #18





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

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


  1. <form action="#" method="post">
  2. <select name="nacja" >
  3. <option value="test">test</option>
  4. <option value="Bel">bel</option>
  5. <option value="Xor">Xor</option>
  6. </select>
  7. <button name="submit" value="submit" type="submit">submit</button>
  8. </form>
  9.  
  10. <?php
  11. $boh ='a';
  12.  
  13. if(isset($_POST['submit']))
  14. {
  15. if($_POST['nacja']=="Xor")
  16. {
  17. $boh = 'Xor';
  18. }
  19. elseif($_POST['nacja']=="Bel")
  20. {
  21. $boh = 'bel';
  22. }
  23. }
  24. if(isset($boh))
  25. {
  26. var_dump($boh);
  27. }
  28.  
  29. ?>


Cytat
btw. gdy na początku pliku dam $boh="a";
po wykonaniu var_dump($boh) zwróci mi a.


Z tego wniosek że jednak nie spełniasz warunku.

Ten post edytował !*! 4.08.2012, 16:01:34
Go to the top of the page
+Quote Post
CuteOne
post
Post #19





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1.  
  2. $boh = 'aaaa';
  3.  
  4. if($_POST["nacja"]=="Xorm") {
  5.  
  6. $boh = 'bbbb';
  7. }
  8.  
  9. var_dump($boh);
  10.  
  11. if($_POST["jajko"]=="kurze") {
  12.  
  13. $boh = true;
  14. }
  15.  
  16. var_dump($boh);


Ten post edytował CuteOne 4.08.2012, 16:01:03
Go to the top of the page
+Quote Post
bladykiel
post
Post #20





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

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


A zadam takie pytanko..
Te IFy są osadzone w formularzu. Więc możliwe że to ma coś z tym wspólnego ? Gdyż deklaracja $boh="a"; jest poza formularzem, natomiast przypisanie innej wartości tej zmiennej następuje w formularzu. I na końcu pliku wywołanie echo $boh jest również poza formularzem.
zaraz sprawdzę to co napisaliście.


Cute one, w Twoim przypadku Zawsze zwraca string(4) "aaaa"
tak jak by nie brał pod uwagę zminnej w ifie..
Choć inne instrukcje są wykonywane i tu daję sobie rękę obciąć (IMG:style_emoticons/default/smile.gif)

Ten post edytował bladykiel 4.08.2012, 16:07:38
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: 3.10.2025 - 22:46