Autor | Zpráva | ||
---|---|---|---|
simka Profil * |
#1 · Zasláno: 18. 9. 2005, 19:03:39
udělal jsem si v PHP dvě funkce, jedna pro rozlišní 1024*768 a druhá pro 800*600. v JavaScriptu jsem si dále vytvořil proměnnou, která obsahuje 1024, nebo 800, podle nastavení rozlišení uživatele. ale teď vyvstal jeden problém: jak tuto proměnnou můžu předat PHP, které už dále rozhodne, kterou funkci zavolá? zkoušel jsem to pomocí funkce if v JS, ale php příkaz vykoná, i když je podmínka v JS false. pak jsem to ještě pěkně dlouho zkoušel, ale prostě to nešlo. pak jsem nad tím v klidu uvažoval a napadly mě čtyři možnosti:
1. existuje nějaká funkce v PHP pro zjištění rozlišení (o tom pochybuji) 2. předat prohlížeči metodou GET (nepraktické, musel bych přepsat všechny odkazy) 3. vytvořit přes JS cookie, kterou by přečetlo PHP (zde by bylo ale už dvojí riziko, že to nebude fungovat - uživatel si může vypnout i cookie, i JavaScript) 4. předat PHP přes formulář (asi nejvhodnější, ale uživatel by musel klikat - neexistuje nějaká fce JS, která sama a bez uživatele odešle formulář?) moc děkuji za odpověď s nejvhodnějším řešením |
||
joejoe Profil * |
#2 · Zasláno: 18. 9. 2005, 19:19:14
1) ne
2) staci to predat jenom 1x potom to muzete soupnout pres session 3) disable cookies 4) <form name="mujformular"> <input type="hidden" name="rozliseni" value="1024"> </form> <script> document.mujformular.submit() </script> prakticka rada? predelat to tak aby stranky fungovali s jakymkoli rozlisenim. proc? - udelate novou verzi stranek pro muj mobil? rozliseni je displeje je 120x120 ? - na mojem pocitaci mam rozliseni 1600x1200 docela pomaha udavat rozmery relativne (width="100%"), spravne pouzivat css, atd. |
||
igamenir Profil |
#3 · Zasláno: 18. 9. 2005, 19:19:25
Volil bych řešení 4.
Funkce existuje a je to překvapivě jménoformuláře.submit() |
||
simka Profil * |
#4 · Zasláno: 18. 9. 2005, 19:30:04
1) ne
2) staci to predat jenom 1x potom to muzete soupnout pres session 3) disable cookies 4) <form name="mujformular"> <input type="hidden" name="rozliseni" value="1024"> </form> <script> document.mujformular.submit() </script> prakticka rada? predelat to tak aby stranky fungovali s jakymkoli rozlisenim. proc? - udelate novou verzi stranek pro muj mobil? rozliseni je displeje je 120x120 ? - na mojem pocitaci mam rozliseni 1600x1200 docela pomaha udavat rozmery relativne (width="100%"), spravne pouzivat css, atd. rozhodování bych udělal nějak relativně, větší nebo menší než 1024. navíc není nic těžkého přidělat i verzi pro vyšší rozlišení, jenom přidám další pole, ve kterém jsou o něco jiné hodnoty rozměrů. na mobily kašlu, zatím je to málo rozšířené jinak dík za bleskovou odpověď ;) |
||
Časová prodleva: 3 dny
|
|||
Simka Profil * |
#5 · Zasláno: 21. 9. 2005, 13:34:24
tak jsem vymyslel něco jako je tohle, dávám do každé stránky pomocí hlavicka.php, kde mám funkce, připojení k db atd. (ale nevím, jestli to je přesně, nemám k dispozici kód):
<?php if (empty($_SESSION["rozliseni"])) { ?> <script> var rozliseni_sirka = screen.width(); window.location.href = "<?php echo $_SERVER[PHP_SELF]; ?>?rozliseni="+rozliseni_sirka; </script> <?php $_SESSION["rozliseni"] = $_GET["rozliseni"]; unset($_GET["rozliseni"]); } ?> jiný soubor pak obsahuje zhruba toto: <?php require_once "hlavicka.php"; $par_1024 = Array( table_width => 950 ); $par_800 = Array( table_width => 630 ); function vykresli_hlavni_tabulku($par = Array()) { echo "<table width='{$par["table_width"]}'>"; echo "a dalsi blbosti...."; } <?php if ($_SESSION["rozliseni"] > 1000) { vykresli_hlavni_tabulku($par_1024); } else { vykresli_hlavni_tabulku($par_800); } ?> v IE funguje všechno jak má, ale ve Firefoxu to přesměruje stránku na neco.php?rozliseni=1024 vždy, i když session existuje. dále bych ještě potřeboval, že když mám stránku neco.php?promenna=neco, aby mě to nenapsalo neco.php?rozliseni=1024, ale neco.php?promenna=1024&rozliseni=1024 doufám, že jsem kód z té hlavy správně vydoloval :) |
||
Simka Profil * |
#6 · Zasláno: 23. 9. 2005, 07:14:42
tak jsem zjistil, že to byla úplně zbytečná chyba. ve Firefoxu jsem si zakázal ukládání cookies kvůli testování jiného příkladu...
|
||
Časová prodleva: 11 měsíců
|
|||
Fary Profil * |
#7 · Zasláno: 31. 8. 2006, 11:33:42
zkuste pouzit misto empty isset
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0