bladykiel
4.08.2012, 14:34:57
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:
$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 ?
Crozin
4.08.2012, 14:43:46
markonix
4.08.2012, 14:44:37
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.
bladykiel
4.08.2012, 14:49:15
To jak ją nadpisać? Próbowałem na wiele sposobów i nie mogę ..
dla uproszczenia mam coś takiego:
$boh ="a";
// kod kod
if (cos tam cos tam)
tu bym chciał zmienić wartość zmiennej $boh
//kod kod kod
markonix
4.08.2012, 15:13:04
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..
bladykiel
4.08.2012, 15:17:46
No włąśnie jak by tak było to bym nie pisał takiego bezsensownego tematu, racja ?
$boh ="a";
$main_content .= "<form method='POST'>";
if(($_POST["nacja"])=="Xor"){
//----------kodyyyy
$boh = 'Xor';
}
if(($_POST["nacja"])=="Bel"){
//----------kodyyyy
$boh = 'bel';
}
$main_content .= '<input type="submit" name="wygeneruj1" value="wygeneruj"/></form>';
if(isset($_POST['wygeneruj1'])){ //kody kody
}
Mniej więcej chodzi o coś takiego. Warunek NA PEWNO jest poprawny gdyż reszta kodów działa poprawnie..
markonix
4.08.2012, 15:19:38
W tej papce beznadziejnego kodu nie widzę nigdzie deklaracji owej "nacji".
bladykiel
4.08.2012, 15:22:41
"nacja" jest zmienna w innym pliku (dokłądniej w formularzu)
'<form action="jakis tam plik.php" method="POST">xxx:
<select name="nacja">
<optgroup label="Inferno">
<option value="Xor">x</option>
<option value=Gar>g</option>
<option value=Kal>k</option>
<option value=Bel>b</option>
</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.
markonix
4.08.2012, 15:26:24
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.
markonix
4.08.2012, 15:33:42
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.
bladykiel
4.08.2012, 15:36:52
Warunek jest spełniony na 100%, gdy na końcu pliku dodam:
foreach ($_POST[pole1] as $asd => $dsa){
if ($test === false) {
}
}
wypisze mi to co chciałem tzn. nazwy karty (w tym przypadku stworzeń) oraz ich liczbę..
Masakra
http://pl.wikibooks.org/wiki/PHPSkoro spełniasz warunek, to skąd mamy wiedzieć gdzie leży błąd z fragmentu kodu.
var_dump() sprawdzaj po kolei.
Poza tym nie
$_POST[pole1]
a
$_POST['pole1']
bladykiel
4.08.2012, 15:43:37
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';"
CuteOne
4.08.2012, 15:49:26
@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.
bladykiel
4.08.2012, 15:55:36
Słucham, jednak wiem, iż warunek nie jest tu problemem, gdyż reszta kodu wykonuje się bez problemu za każdym razem.
po wykonaniu
na końcu pliku pokazuje iż zmienna jest pusta.
Cytat(bladykiel @ 4.08.2012, 16:55:36 )

na końcu pliku pokazuje iż zmienna jest pusta.
to masz odpowiedź.
bladykiel
4.08.2012, 15:58:45
To w takim razie jak mam ją przypisać w ifie skoro
$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"
<form action="#" method="post">
<select name="nacja" >
<option value="test">test</option>
<option value="Bel">bel</option>
<option value="Xor">Xor</option>
</select>
<button name="submit" value="submit" type="submit">submit</button>
</form>
<?php
$boh ='a';
if(isset($_POST['submit'])) {
if($_POST['nacja']=="Xor")
{
$boh = 'Xor';
}
elseif($_POST['nacja']=="Bel")
{
$boh = 'bel';
}
}
{
}
?>
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.
CuteOne
4.08.2012, 16:00:25
$boh = 'aaaa';
if($_POST["nacja"]=="Xorm") {
$boh = 'bbbb';
}
if($_POST["jajko"]=="kurze") {
$boh = true;
}
bladykiel
4.08.2012, 16:03:38
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ąć
Cytat(bladykiel @ 4.08.2012, 17:03:38 )

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"
Nie to nie ma znaczenia. Twój kod po prostu to jeden wielki syf. Nie sprawdzasz nawet czy formularz został wysłany.
bladykiel
4.08.2012, 16:10:05
Jak już wcześniej pisałem, nie wklejam całego kodu bo to nie ma sensu...
tak się kończy formularz
$main_content .= '<input type="submit" name="wygeneruj1" value="wygeneruj"/></form>';
natomiast tu sprawdzenie
if(isset($_POST['wygeneruj1'])) {
oraz inne kody
Tak czy inaczej, poczytaj o PHP i HTML też nie zaszkodzi. Problem IMO rozwiązany. Debuguj kod i sprawdź gdzie ta zmienna się ulatnia. $boh deklaruj przed if które jest sprawdzają (patrz kod wyżej). I nie ma prawa, nie działać.
Kod CuteOne wykonuje się prawidłowo, bo nie wysyłasz nic POST.
bladykiel
4.08.2012, 16:13:24
Nie, problem nie jest rozwiązany, gdyż w każdym ifie ta zmienna ma mieć inną wartość (w zależności od tego który if jest prawdziwy).
Podałem Ci kod, jak to powinno wyglądać. Napisz dokładnie tak samo na tej zasadzie.
bladykiel
4.08.2012, 17:07:29
!*! owszem Twój kod działa. Jednak..
Na końcu tych ifów jest button "submit", po kliknięciu go, zmienna wraca do swojej pierwotnej postaci "aaaa".
Skoro wraca to znaczy że warunki nie zostały spełnione, co zresztą sam stwierdziłeś.
bladykiel
4.08.2012, 18:14:16
Nie mam pojęcia.. Do mementu kliknięcią submit wszystko jest ok

Rozwiązałem ten problem inaczej.
Anyway dzięki za pomoc.
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.