Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmienna nie jest liczbą?
Forum PHP.pl > Forum > Przedszkole
xamrex
Witam,
Naskrobałem skrycik, który jeśli user ma rozdzielczość (width) mniejszy niż 1280, to nie wyświetla reklam (gdyż wtedy się rozjeżdża strona)
  1. $width = "<script type='text/javascript'>document.write(''+screen.width+'');</script>";
  2.  
  3. if ( $width < 1280){
  4. echo ""; //nie wyswietla reklamy kiedy jest za mala rozdzialka
  5. }
  6. else {
  7. echo "tu jest skrypt reklam";
  8. }


No i nie działa.. (zawsze wyświetla reklamy)
Więc zrobiłem mały teści,
Zamiast
  1. if ( $width < 1280){

dałem
  1. if ( 1024 < 1280){

No i zadziałało..

To sobie myślę zmienna $width nie przechwytuje rozdzielczości..
Ale gdy wpiszę
  1. echo $width;

to jednak pokazuje mi się 1280

Co może być nie tak ?

Wydaje mi się, że problem jest w js(gdyż z js jest przekazywana zmienna)
no ale jeśli po wpisaniu:
echo $width; ukazuje mi się 1280, to dlaczego nie działa to w warunku?
Fantazyn
Spróbuj rzutować zmienną $width , [dodaj (int) przed tą zmienną]

Cytat(xamrex @ 3.06.2010, 09:26:36 ) *
Witam,
Naskrobałem skrycik, który jeśli user ma rozdzielczość (width) mniejszy niż 1280, to nie wyświetla reklam (gdyż wtedy się rozjeżdża strona)
  1. $width = "<script LANGUAGE='JavaScript'>document.write(''+screen_width+'');</script>";
  2.  
  3. if ( (int)$width < 1280){
  4. echo ""; //nie wyswietla reklamy kiedy jest za mala rozdzialka
  5. }
  6. else {
  7. echo "tu jest skrypt reklam";
  8. }

Potter
Ponieważ width jest w twoim kodzie stringiem. Więc jeśli chcesz żeby to było intem, musisz zrzutować do int

$width = (int) $width;

// instrukcja warunkowa.

Poczytaj o rzutowaniu typów ;]
xamrex
EDITED:
Teraz to sprawdziłem i nie działa..
zrobiłem:
$widthcyfra = (int) $width;

I teraz po wpisaniu echo $widthcyfra;
Dostaję 0

Jeśli ktoś ma chęci, to proszę sobie pobrać kod z z mojego 1szego posta, i spróbować jakoś przypisać tą zmienną co wyświetla szerokość,
Potter
$widthcyfa to co takiego?.

Przykład:

$width = 'string zwracajacy cyfre';
$width = (int)$width;


if($width < 1024) {


} else {


}
croc
Widzę niektórzy tu ładne bzdury zapodają.

NIE MOŻESZ wrzucić bezpośrednio kodu JS do PHP oczekując, że serwer go przetworzy. Masz trzy sensowne wyjścia:

1. Najbardziej sensowne: warunek wyświetlania reklamy zawrzeć w kodzie JavaScript.
2. Przekazywać rozdzielczość ekranu do linku.
3. Wyświetlać reklamy Ajaxem.

Najlepiej wybierz opcję nr 1. Możesz nawet ustalić czy reklama ma się wyświetlać kiedy JS jest wyłączony. Ja bym tak zrobił, że po prostu reklama jest zawsze osadzona w kodzie, a skrypt JS po wczytaniu strony robi coś takiego
[JAVASCRIPT] pobierz, plaintext
  1. window.onload = function() {
  2. if(screen.width < 1280) {
  3. document.getElementById('reklama').style.display = 'none';
  4. }
  5. }
[JAVASCRIPT] pobierz, plaintext

To rozwiązanie ma jedną wadę - reklama wczyta się nawet jak rozdzielczość jest niższa, tylko po prostu zniknie. Ale to chyba najlepsze możliwe rozwiązanie.
marcio
Cytat
Spróbuj rzutować zmienną $width , [dodaj (int) przed tą zmienną]

PHP raczej samo robi konwersje typow w "locie":]
Potter
Cytat(croc @ 3.06.2010, 12:38:30 ) *
Widzę niektórzy tu ładne bzdury zapodają.

NIE MOŻESZ wrzucić bezpośrednio kodu JS do PHP oczekując, że serwer go przetworzy. Masz trzy sensowne wyjścia:


Ja Tylko wyjaśniłem idee rzutowania typów. Jasne że serwer nie przetworzy zmiennej. Chodziło mi o naprowadzenie Pana na właściwy tok rozumowania dotyczący przekształcania liczb z stringa do inta
xamrex
Dzięki croc
za uświadomienie ze nie moge kodu JS dać do PHP
Oraz dzięki za rozwiązanie numer 1 winksmiley.jpg
antyqjon
Cytat(croc @ 3.06.2010, 11:38:30 ) *
Najlepiej wybierz opcję nr 1. Możesz nawet ustalić czy reklama ma się wyświetlać kiedy JS jest wyłączony. Ja bym tak zrobił, że po prostu reklama jest zawsze osadzona w kodzie, a skrypt JS po wczytaniu strony robi coś takiego
[JAVASCRIPT] pobierz, plaintext
  1. window.onload = function() {
  2. if(screen.width < 1280) {
  3. document.getElementById('reklama').style.display = 'none';
  4. }
  5. }
[JAVASCRIPT] pobierz, plaintext

To rozwiązanie ma jedną wadę - reklama wczyta się nawet jak rozdzielczość jest niższa, tylko po prostu zniknie. Ale to chyba najlepsze możliwe rozwiązanie.

No to odwrotnie - w CSS można zrobić #reklama {display: none; } a Javascriptem ją pokazywać, gdy szerokość ekranu > 1280.
croc
antyqjon -> Wtedy reklama nie pokaże się, kiedy ktoś wyłączy JS.
Fifi209
Cytat(croc @ 3.06.2010, 13:33:49 ) *
antyqjon -> Wtedy reklama nie pokaże się, kiedy ktoś wyłączy JS.

I dobrze ;] lubisz oglądać reklamy? haha.gif ja od razu adblockiem jadę po reklamach ;]
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.