Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][PHP] dlaczego nie działa, mimo że warunek jest spełniony
xpander
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 17.01.2010

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


Witam.

Chciałbym napisać skrypt php który ładuje obrazek z określonego folderu w zależności od rozdzielczości.
ponieważ jednak "duży skrypt" nie działa, napisałem krótki testowy.

  1. <script language="JavaScript">
  2.  
  3. if (screen.width>1024) {
  4. rozdzialka=1;
  5. }
  6. else {
  7. rozdzialka=2;
  8. }
  9. </script>
  10. <?php
  11. $zmienna = "?><script language=javascript>document.write(rozdzialka);</script><?php";
  12. $zmienna = str_replace("?>", "", $zmienna);
  13. if ($zmienna == 1) echo "jeden";
  14. ?>


niestety mimo że wartość $zmienna wypisana za pomocą echo $zmienna;
daje wartość 1 (czyli warunek w pętli if jest spełniony)
to słowo "jeden" nie pojawia się na ekranie.

co robię źle, że to działać nie chce? sciana.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
nospor
post
Post #2





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




Cytat
daje wartość 1
wcale ze nie . $zmienna u ciebie przyjmuje tekst. a tekst porownany (==) do 1 daje zawsze true smile.gif


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

"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
xpander
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 17.01.2010

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


dzięki za błyskawiczną odpowiedź .

po wyrzuceniu str_replace();

  1. <?php
  2. $zmienna = "<script language=javascript>document.write(rozdzialka);</script>";
  3. if ($zmienna==1) echo "jeden";
  4. ?>


nie wyswietla nic.

jednak skrypt

  1. <?php
  2. $zmienna = "<script language=javascript>document.write(rozdzialka);</script>";
  3. echo $zmienna;
  4. ?>


wyswietla 1.

Zatem pętla if nie działa bo funkcja document.write(); zapisuje do $zmiennej tekst?
Musze zrobić konwersję typu danych?
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Cytat
wyswietla 1.

nie moj kochany. $zmienna zawiera kod js, ktory to jest wysylany do przegladarki i przegladarka go interpretuje i daje to w rezultacie 1, bo tą wartosc zwraca ci js. Ale to sie dzieje dopiero po stronie przeglądarki.
po stronie php $zmienna ma zwykly tekst, który rownie dobrze moze wartosc: "Przynies mi frytki". Dla php to bedzie tak samo bez znaczenia jak tekst z twoim kodem js.


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

"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
emtiej
post
Post #5





Grupa: Zarejestrowani
Postów: 207
Pomógł: 18
Dołączył: 12.04.2009
Skąd: Rypin

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


ja przyłączam się do pytania jak to zrobić, żeby przekonwertować tą zmienną na integer, albo coś w tym stylu, bo aktualnie nie da się przyrównać tej zmiennej do niczego... sam próbowałem różnymi sposobami.

Próbowałem nawet tak:
  1.  
  2. <script language="JavaScript">
  3.  
  4. if (screen.width>1024) {
  5.  
  6. rozdzialka="wieksze";
  7.  
  8. }
  9.  
  10. else {
  11.  
  12. rozdzialka="mniejsze";
  13.  
  14. }
  15.  
  16. </script>
  17.  
  18. <?php
  19.  
  20. $zmienna = '<script language=javascript>document.write(rozdzialka);</script>';
  21.  
  22. if ($zmiennaa=='wieksze')
  23. {
  24. echo "Rozdzielczosc jest wieksza niz 1024";
  25. }else{
  26. echo "Rozdzielczosc jest mniejsza niz 1024";
  27. }
  28. ?>
  29.  


I też lipa, nie działa heh dziwna sprawa z tymi zmiennymi przekazywanymi od javascript...
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




no przeciez tlumacze: kod js jest wykonywany po stronie przegladarki a nie po stronie serwera. Kod js nie moze zostac zinterpretowany przez php.

Najpierw wykonuje sie caly kod php, kod ten moze zwrocic kod html/js ktory to dopiero potem zostanie przetworzony przez przegladarke i nie zwraca on juz do tego samego kodu php zadnej odpowiedzi...

ten kod:
$zmienna = '<script language=javascript>document.write(rozdzialka);</script>';

if ($zmiennaa=='wieksze')
{
echo "Rozdzielczosc jest wieksza niz 1024";
}else{
echo "Rozdzielczosc jest mniejsza niz 1024";
}

jest rownowazny z tym
$zmienna = 'Przynies mi frytki i cole';

if ($zmiennaa=='przyniosł mi frytki i cole')
{
echo "Rozdzielczosc jest wieksza niz 1024";
}else{
echo "Rozdzielczosc jest mniejsza niz 1024";
}

nie ma tu nawet znaczenia literowka, '$zmiennaa' ktorą popelniles winksmiley.jpg


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

"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
darko
post
Post #7





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Panowie:
[JAVASCRIPT] pobierz, plaintext
  1. if (screen.width>1024) {
  2. window.location.href = 'skrypt.php?r=1';
  3. }
  4. else {
  5. window.location.href = 'skrypt.php?r=2';
  6. }
[JAVASCRIPT] pobierz, plaintext


  1. switch($_GET['r']) {
  2. case 1:
  3. echo "jeden";
  4. break;
  5.  
  6. case 2:
  7. echo "dwa";
  8. break;
  9. }


Ten post edytował darko 18.01.2010, 14:48:09


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
xpander
post
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 17.01.2010

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


Cytat
$zmienna zawiera kod js, ktory to jest wysylany do przegladarki i przegladarka go interpretuje i daje to w rezultacie 1, bo tą wartosc zwraca ci js. Ale to sie dzieje dopiero po stronie przeglądarki.


czyli problemem jest przekazanie wartości js--->PHP.
z tego co widze kolega darko proponuje wykorzystanie paska adresu
czy jeszcze jakoś można przekazać zmienną z js-->PHP?

powyższy skrypcik zapętla przeglądarkę...
Go to the top of the page
+Quote Post
darko
post
Post #9





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Ech...
  1. if($_GET['r'] == "" || !is_numeric($_GET['r'])) {
  2. echo "
  3. <script>
  4. if (screen.width>1024) {
  5. window.location.href = 'skrypt.php?r=1';
  6. }
  7. else {
  8. window.location.href = 'skrypt.php?r=2';
  9. }</script>";
  10. }


Ten post edytował darko 18.01.2010, 15:17:03


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
kingofspace
post
Post #10





Grupa: Zarejestrowani
Postów: 141
Pomógł: 4
Dołączył: 16.11.2009

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


To akurat normalne ze zapętla przeglądarke:P
bo wszystko wladowales do jednego pliku i ciągle js ci przesyla na inną strone
zrob tak

1 plik

np

teatrozdzialki.php

  1.  
  2. if (screen.width>1024) {
  3.  
  4. window.location.href = 'index2.php?r=1';
  5.  
  6. }
  7.  
  8. else {
  9.  
  10. window.location.href = 'index2.php?r=2';
  11.  
  12. }


i następny plik

index2.php
  1.  
  2. switch($_GET['r']) {
  3.  
  4. case 1:
  5.  
  6. echo "jeden";
  7.  
  8. break;
  9.  
  10.  
  11.  
  12. case 2:
  13.  
  14. echo "dwa";
  15.  
  16. break;
  17.  
  18. }



Oczywiście niezbędne jest dokladne przefultrowanie i sprawdzenie danych przeslanych getem
Go to the top of the page
+Quote Post
skowron-line
post
Post #11





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat(xpander @ 18.01.2010, 14:08:52 ) *
Chciałbym napisać skrypt php który ładuje obrazek z określonego folderu w zależności od rozdzielczości.

A nie możesz poprostu w JS zmienić atrybutu src dla zdjęcia ?

Krótki przykład
[JAVASCRIPT] pobierz, plaintext
  1. <html>
  2. <head>
  3. <script type="text/javascript">
  4.  
  5. function zmien()
  6. {
  7. document.getElementById( 'foto' ).src = 'fly/superman.gif';
  8. }
  9.  
  10. </script>
  11. </head>
  12. <body>
  13. <a href="java script:void(0);" onclick="zmien();">zamian obrazek</a>
  14. <img src="airplane.png" border="0" id="foto">
  15. </body>
  16. </html>
  17.  
[JAVASCRIPT] pobierz, plaintext


Ten post edytował skowron-line 18.01.2010, 15:29:34


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
xpander
post
Post #12





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 17.01.2010

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


@skowron-line

cały problem przekazywania zmiennej js-->php polega na tym, że przerabiam szablon joomli, a konkretnie index.php

  1. <div id="ja-header" class="clearfix" style="background: url(
  2. <?php echo $tmpTools->templateurl();?>
  3. <?php
  4. $zmienna = "<script language=javascript>document.write(rozdzialka);</script>";
  5. if ($zmienna == '1') {
  6. echo ('/images/header/');
  7. echo $tmpTools->getRandomImage(dirname(__FILE__).DS.'images/header');
  8. }
  9. else{
  10. echo '/images/header_low/';
  11. echo $tmpTools->getRandomImage(dirname(__FILE__).DS.'images/header_low');
  12. }
  13. ?>) no-repeat top <?php if($this->direction == 'rtl') echo 'left'; else echo 'right';?>;">


i chciałem w ten sposób przystosować szablon do różnych rozdzielczości uzytkownika. proponujesz
całe ładowanie obrazka "header" przerzucić do js?



Ten post edytował xpander 18.01.2010, 15:56:26
Go to the top of the page
+Quote Post
skowron-line
post
Post #13





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Wydaje mi się że chyba tak będzie lepiej.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
xpander
post
Post #14





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 17.01.2010

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


  1. <div id="ja-header" class="clearfix" style="background: url(
  2. <script language="JavaScript">
  3. var rozdzialka=0;
  4. if (screen.width>1024) {
  5. document.write("/images/header/header1.jpg")
  6. }
  7. else {
  8. document.write("/images/header_low/header1.jpg")
  9. }
  10. </script>);
  11. no-repeat top <?php if($this->direction == 'rtl') echo 'left'; else echo 'right';?>;">


wypisuje mi treść skryptu na ekranie, zamiast ładować obrazki. używam złej funkcji do tego celu (document.write) ?

Ten post edytował xpander 18.01.2010, 17:12:54
Go to the top of the page
+Quote Post
lukaszgolder
post
Post #15





Grupa: Zarejestrowani
Postów: 141
Pomógł: 17
Dołączył: 2.04.2008
Skąd: z Zabrza

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


A nie przypadkiem document.write('<img src="/images/header/header1.jpg" />') Nie sprawdzałem czy działa, ale ewentualnie możesz też wyświetlić obrazek i jeśli szerokość jest większa / mniejsza to zmienić jego src np: document.getElementById("logo").src = '/images/header/header1.jpg'
Go to the top of the page
+Quote Post
skowron-line
post
Post #16





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Document.write nie używaj jak kolega wyżej napisał
- document.getElementById
- document.getElementsByTagName
i inne pochodne które pomagają dobrać się do elementu, tym bardziej że ty chcesz zmienić atrybut obrazka, a nie zmienić go całego.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post

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 Aktualny czas: 21.08.2025 - 06:23