Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konwersja zmiennych
Forum PHP.pl > Forum > PHP
lukasamd
Witam,
mam sobie zmienną $iZmienna która otrzymuje dane ze skryptu java, ZAWSZE są to liczby całkowite a mimo to php tratuje zmienną jako zbiór znaków więc nie mogę używać np.:

  1. <?php
  2. if($iZmienna>1000) kod;
  3. ?>


bo nigdy nie spełnia warunku zaś w wypadku:

  1. <?php
  2. if($iZmienna>'1000') kod;
  3. ?>


warunek jest spełniany zawsze.

Próbowałem używać intval np:

  1. <?php
  2. $iZmienna2=intval($iZmienna);
  3. if($iZmienna2>1000) kod;
  4. ?>


ale warunek nigdy nie jets wykonywany bo po konwersji wartość zmiennej zawsze wynosi 0 (sprawdzałem poprzez echo). Jestem pewien że zawsze będą w niej zapisywane liczby całkowite, jak zmusić php aby traktował ją jako zmienną takiego właśnie typu?
byq_pl
Witam, zrób tak:
  1. <?php
  2. $iZmienna = (int)$iZmienna; // konwersja na integer
  3. ?>
lukasamd
Niestety nadal daje mi 0 w wyniku :/ próbowałem też settype i dalej to samo :/
be2k
Jesli Twoja zmienna to string skladajacy sie z ciagu znakow bedacych cyframi to zarowno rzutowanie (int) jak i intval() musi dac w wyniku ta liczbe. Byc moze w tym stringu sa jeszcze jakies inne znaki. Zobacz co zwraca var_dump();
lukasamd
Chyba zaczynam rozumieć dlaczego to nie działa, var_dump() pokazał coś takiego:

string(68) "1000"

Fakt że wynik skryptu to 1000 ale w samej zmiennej znajduje się kod java script i dlatego pokazuje 68 znaków a podczas konwersji daje 0. Tylko jak teraz zrobić aby ten skrypt był wykonany a potem poszedł sobie w chole.. no wiadomo gdzie winksmiley.jpg
byq_pl
Napisz co i jak robisz.
lukasamd
Chcę wyciągnąć poprzez javascript szerokość z rozdzielczości stosowanej przez użytkownika aby wiedzieć jaką szerokość ma mieć strona:

  1. <?php
  2. $iWidth = "<script language='javascript'>document.write(screen.width);</script>";
  3. if($iWidth>'1024') $theme_width='90%';
  4. else $theme_width = '990px';
  5.  
  6. $body_text = "#dddddd";
  7. $body_bg = "#000000";
  8. $theme_width_l = "170px";
  9. $theme_width_r = "170px";
  10. ?>
wlamywacz
  1. <?php
  2. $iWidth = "<script language='javascript'>document.write(screen.width);</script>";
  3. ?>


Php jest wykonywane po stronie serwera a nie przeglądarki !

zrób tak:

  1. <?php
  2. echo $iWidth = "<script language='javascript'>document.write(screen.width);</script>";
  3. ?>


i powiedz co wyświetli blinksmiley.gif
lukasamd
To co miało czyli u mnie 1280.

BTW. No tak... całkowicie o tym zapomniałem - php robi wszystko ok a javascript jest wykonywany dopiero u usera, no to teraz nie wiem za bardzo jak to przekazać (bez przeładowywania strony)... jest w php jakaś funkcja która zwraca podobne dane?
wlamywacz
W php nie otrzymasz info dot. rozdzielczości itd. Jedyna metoda aby bez przeładowania to ajax lub podobne kombinację.
empathon
Cytat(lukasamd @ 5.05.2008, 14:38:38 ) *
To co miało czyli u mnie 1280.

Nie to co miało. Sprawdź źródło. 1280 wygenerował JS.
Cytat(lukasamd @ 5.05.2008, 14:38:38 ) *
BTW. No tak... całkowicie o tym zapomniałem - php robi wszystko ok a javascript jest wykonywany dopiero u usera, no to teraz nie wiem za bardzo jak to przekazać (bez przeładowywania strony)... jest w php jakaś funkcja która zwraca podobne dane?

To co robisz jest kompletnie bez sensu. PHP nie powinna w ogóle interesować rozdzielczość ekranu. Od tego jak strona wygląda jest CSS. Jeśli już _musisz_ uzależniać to od rozdzielczości to za pomocą JS załaduj dodatkowe style gdzie definiujesz te "zmienne". Tj. 1024x768.css, 800x600.css.
Generalnie jest to w _bardzo_ złym stylu.
lukasamd
Cytat(empathon @ 5.05.2008, 14:52:53 ) *
Nie to co miało. Sprawdź źródło. 1280 wygenerował JS.


Zależy co się chciało otrzymać - jeżeli kod to tak, nie pokazało to co trzeba, jeżeli efekt kodu to pokazało ok.


Cytat(empathon @ 5.05.2008, 14:52:53 ) *
To co robisz jest kompletnie bez sensu. PHP nie powinna w ogóle interesować rozdzielczość ekranu. Od tego jak strona wygląda jest CSS. Jeśli już _musisz_ uzależniać to od rozdzielczości to za pomocą JS załaduj dodatkowe style gdzie definiujesz te "zmienne". Tj. 1024x768.css, 800x600.css.
Generalnie jest to w _bardzo_ złym stylu.


No właśnie problem w tym, że jestem uzależniony trochę od php, strona jets pod extreme-fusion i jej wygląd określa plik theme.php w którym są opisane funkcje tworzące header, stopkę oraz panele zaś style znajdują się w pliku styles.css, aby ustalić rozdzielczość muszę ją jakoś przekazać na początek theme.php który ustala wielkość strony.
empathon
Cytat(lukasamd @ 5.05.2008, 15:03:20 ) *
Zależy co się chciało otrzymać - jeżeli kod to tak, nie pokazało to co trzeba, jeżeli efekt kodu to pokazało ok.

Chodzi o sprawdzenie zawartości zmiennej. Przecież powyżej przypisujesz ten string zmiennej w php oczekując, że pojawi się tam wartość. Zrób sobie var_dump jeśli nadal nie rozumiesz.
Cytat(lukasamd @ 5.05.2008, 15:03:20 ) *
No właśnie problem w tym, że jestem uzależniony trochę od php, strona jets pod extreme-fusion i jej wygląd określa plik theme.php w którym są opisane funkcje tworzące header, stopkę oraz panele zaś style znajdują się w pliku styles.css, aby ustalić rozdzielczość muszę ją jakoś przekazać na początek theme.php który ustala wielkość strony.

Jestem pewien, że kwestie dopasowania layout da się rozwiązać bez takich cyrków. CSS się nadpisuje. W odpowiednich stylach umieszczasz tylko to co się zmienia. Przeczytaj jeszcze raz, uważnie to co napisałem powyżej.
lukasamd
No to mam jeszcze plik do generowania headera (subheader.php) i normalne załączenie w nim pliku css to:
  1. <link rel='stylesheet' href='".THEME."styles.css' type='text/css'>


zrobiłem coś takiego:

  1. <script language='javascript'>
  2. rozdzialka=screen.width;
  3. if (rozdzialka>1024) document.write('<link rel='stylesheet' href='".THEME."styles-1024.css' type='text/css'>');
  4. else document.write('<link rel='stylesheet' href='".THEME."styles-990.css' type='text/css'>');


nie znam się na javascript więc rezultat był do przewidzenia - nie działa, może mnie ktoś poprawić?
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.