Ebből pedig rögtön következik a következő kérdés: mit kell (érdemes) PHP-ben és mit JS-ben? Általános szabály van, persze, mindig akadnak esetek, amelyeket az általános szabályok nem tudnak kezelni, de ez kezdetben nem érdekes még. Amit csinálsz, amit meg lehet belőle ítélni ennyi alapján, az nagyon a PHP-re mutat, szerintem JS-sel egyáltalán nem is kellene most foglalkoznod. Még a PHP is kérdéses sok helyen. De vegyük az általánost először:
A felhasználó jön, kér egy weboldalt. El kell készíteni neki ezt az oldalt tartalommal, stílussal, képekkel, mindenestül. Amit csak lehet, ideértve a képek méretezését, elhelyezését, az egyes képi és szöveges elemek megformálását mind-mind HTML és CSS (stílus) eszközökkel kell megfogalmazni, egészen a maximumig, tehát amit csak el lehet érni ezekkel az eszközökkel. Ide tartozik a képméretezés is, amiről beszéltünk: ha mindenféle szabályok alapján kell a megjelenítendő kép méretét megadni, akkor ha csak lehet, ezt HTML-CSS szabályokkal fogalmazzuk meg, amelyeket majd a böngésző értelmez és alkalmaz, nem programokkal, tehát sem PHP, sem JS, amit akár a szerveren, akár a böngészőben, de valakinek végre kell hajtania, mert hiszen kódrészlet.
A PHP először ott jön be a képbe, amikor bármiféle okból a felhasználó kérte weboldalt nem tudjuk egy az egyben tárolni, és csak simán odaadni neki, amikor jön. Változó a tartalma (mint egy ilyen fórum itt, például, hiszen a hozzászólások állandóan változnak), máshonnan származik a megjelenítendő információ (bele kell tenni az aktuális időjárást vagy árfolyamokat, ezért nem lehet egyszer s mindenkorra letárolni), vagy számtalan egyéb ok lehet, de a lényeg az, hogy az ilyen weboldalt dinamikusnak hívjuk, mert valami okból időre időre, felhasználóról felhasználóra változik. Amint az előbbiben már leírtam, a felhasználó ilyenkor pontosan ugyanúgy HTML-t kap, mint az előző esetben, a különbség csak annyi, hogy statikus oldalnál a szerver előkapja a kész HTML-t és odaadja, dinamikusnál menet közben készíti el újra és újra, és odaadja. A felhasználó böngészője már nem lát eltérést a kettő között, neki mindegy, hogy a HTML honnan, mikor és miként született.
A harmadik lépés a JS. Arra alapvetően akkor van szükségünk, amikor a weboldal interaktív is: miután megérkezett a felhasználóhoz, tudnia kell vele valamit kezdeni a helyszínen. Alapesetben ugyanis egy oldal megjelenik, lehet nézegetni, de ha bármit csinál a felhasználó (tipikusan rákattint valami linkre), akkor annak az oldalnak vége, jön helyette egy másik. Ahhoz kell a JS, hogy ennél ravaszabb dolgokat lehessen csinálni a felhasználónál: ide kattint, ott változik, képek megjelennek, átúsznak, eltűnnek, kis mozi, képgaléria, szöveget szerkesztget, ilyesmi. Tehát mindenféle olyasmi, amit a felhasználó mozgására-kattintására reagál valamilyen módon ott nála a böngészőben, de nem arra szolgál, hogy a szerverről egy komplett új oldalt kapjon a régi helyébe, hanem hogy a meglevő egy oldalon belül bármit csináljon.
Ennek a fényében kellene végiggondolnod, hogy mire is van szükség ahhoz, amit éppen el akarsz érni. Nekem van egy olyan gyanúm, hogy még a második lépés sem feltétlenül szükséges neked most, a harmadikról már nem is beszélve.
Válasszuk ketté. Majd mindjárt a kép méretezéséről is, de ami az elvet illet, bármi, ami PHP, az szükségszerűen a szerveren fut, az ottani számítógép értelmezi, hajtja végre, dolgozik meg vele. Bármi, ami JS, az szükségszerűen a felhasználó gépén, a böngészőben fut. Ha esetleg van két olyan dolog, ami nagyjából ugyanarra a végeredményre vezet, tehát (legalábbis látszólag) ugyanazt csinálja a PHP is, a JS is az adott esetben, akkor is igaz ez a kettéosztás.
A teljes folyamat ezeknél az oldalaknál három lépésből áll össze:
1. A szerveren vannak weboldalaid, lehetnek HTML, PHP vagy vegyes oldalak (HTML, aminek közepette PHP-s részletek is vannak). A szerver mindezt feldolgozza, végrehajtja belőle a PHP-t, és a végeredmény minden esetben HTML lesz.
2. A szerver ezt az elkészült HTML-t küldi a böngészőnek.
3. A böngésző fogja a HTML-t, és végignézi. Elsősorban kell neki a HTML maga, de ha az hivatkozik más fájlokra (tipikusan nagyon is, általában stíluslap, JS és képek), akkor sorban azokat is elkéri a szervertől. Amikor minden megvan (illetve, a sebesség kedvéért előbb is, de ez itt most lényegtelen), akkor nekiáll feldolgozni, hogy kész oldal legyen belőle, amit megmutat a felhasználónak. Ilyenkor hajtja végre a JS-t is.
Az 1. és a 3. tehát egymástól abszolúte független, annyira, hogy közte van még egy plusz lépés is.
Ami a képet illeti, nem, amikor a böngésző egy IMG-t talál, akkor a link alapján elkéri a képfájlt magát, úgy, ahogy a szerver azt neki elküldi. Semmi méret és egyéb megfontolás nem játszik szerepet ebben. A szerver elküldi, és amikor a böngésző megkapta, akkor a számára rendelkezésére álló utasítások alapján megjeleníti. Ezek az utasítások jöhetnek közvetlenül onnan az IMG-ből WIDTH és HEIGHT attribútumból, stílusból, bárhonnan, ahogy te is csinálod, de ez csak a megjelenítésre vonatkozik. Ha végezetül kisebbre kéred, mint maga a kép volt fizikailag, kicsinyíti, ha nagyobbra, felnagyítja; oda méretezi, ahova éppen szükséges. Mindez csak megjelenítési kérdés, nincs köze a képfájl eredeti méretéhez, mindegyik felhasználó ugyanazt kapja meg akkor is, ha ahányan nézik, mindegyikük éppen eltérő méretben fogja látni végül, mert más a gépe, más a böngészője és más a csillagok állása.
Bocsánat a zavarásért, de nem hagy nyugodni a dolog.Zakatol az agyam, hogy megértsem a dolgokat. Azt mondja :"Olyat nem csinálunk, hogy a böngésző előbb méretet küld fel, és akkor ennek megfelelően csinálsz képet a szerveren..." Amit én akartam(már nem akarom): <img src="kep1.jpg" alt="" title="xyz" border="0" style="<?php km_1('kep1.jpg') ?> "> "<?php km_1('kep1.jpg') ?> " ennek az eljárásnak a kimenete pl: style="width:300px;height:400px;" Nem értem, hogy ezzel miért csinálok képet a szerveren? Amikor a böngésző egy ilyen "http://somewhere.com/page1.php?foo=1&bar=2" URL-t tartalmazó kérést küld a szervernek, akkor nem paraméterek(változókat) ad át? Ha elfogadom amit mond, akkor mi értelme van az ilyen és hasonló függvényeknek? imagecreatefrompng($imgname),imagejpeg($image,"folder/file.jpg");
Köszönöm mindkettőjük segítségét. Én végzetesen félreértettem a kép százalékos méretezését. Kípróbáltam a javaslatot, ez a megoldás. Ahogy időm engedi, olvasok,olvasok,olvasok.... "Olyat nem csinálunk, hogy a böngésző előbb méretet küld fel, és akkor ennek megfelelően csinálsz képet a szerveren..." Ezen a mondaton elgondolkodtam, s kérdezem hogy ez nem ugyanaz? <img src="kep.bmp" border="0" width="400px" height="100px" alt="xyz"> Mert hogy a kép eredeti mérete lehet éppen 800*500 is. Ekkor nem méretet küld a bőngésző? Vagy a kliensen lessz átméretezve?
Abból indultam ki,hogy ahol a kódban lehet konstans,ot lehet változó is.
Az alapvető probléma ott van, hogy reménytelenül összekevered a két oldalon (kliens, vagyis a böngésző, és a szerver) futó dolgokat. Ezt nem így kell megoldani, mert ebből csak szenvedés van, amint az látszik is. Ha a böngészőben meghatározott méretben akarod megjeleníteni a dolgokat, akkor ezt ott kell elvégezned (és erre a százalék a magától értetődően jó megoldás, ahogy NevemTeve javasolta). Olyat nem csinálunk, hogy a böngésző előbb méretet küld fel, és akkor ennek megfelelően csinálsz képet a szerveren, minden egyes látogatónak külön-külön, ennek semmi értelme, csak feleslegesen pocsékolod az erőforrásokat, és semmit nem nyersz rajta.
Egy kicsit tisztáznod kellene magadnak, alkalmasint ide vonatkozó irodalom olvasgatásával, hogy mire jó a PHP, mire jó a JS, és miként érdemes a kettő között a feladatokat szétosztani. Mert szét kell, és nem ilyen ad hoc módon, hanem alaposan végiggondolva, logikusan.
Erre találták ki a százalékos méretmeghatározást, de ha programból akarod, akkor az előző programocska bizonyára segít (a resize függvényt tanulmányozd).
Sajnos öregszem, nem mindíg tudok világosan fogalmazni.
Az alapötlet az volt, hogy egy javascript függvény megállapítja a felbontást, és annak ismeretében adja meg a betöltendő kép új méreteit. Felhasználói beavatkozás
Ez a méret nem felel meg az adott felbontásanak, annak ismeretében más méretekkel kellene a képet betölteni.
Erre jöt az ötletem, s kérdeztem, hogy megvalósítható e valahogy.
<img src="kep.jpg" alt="" title="xy" border="0" style="width:javascript:uj_meret(500);height:javascript:uj_meret(168);"> (ez most szintaktikailag nem helyes)
A lényeg, nem fix méret, hanem függvénnyel előállított mérettel kellene a képet betölteni.
Köszönöm. Ezt napok óta próbálom, de nem működik. lehet hogy szintaktikai hibám van.(width idézőjellel kezd, javascript idézőjelben,) Nem kerül a függvényre a vezérlés. Onclickre működik, a függvény jó értéket ad.
Meg lehetne e azt csinálni, hogy az img width, height értékeknek javascript funkcióval adjak értéket. Figyelembe véve azt, hogy -megbízható források szerint- a scriptek(function) csak valamilyen eseménykor futnak.(onclick,onload,onmouse... stb) Az onload úgy tudom, amikor az image már betöltődött, akkor keletkezik.
Valahogy betöltődés előtt kellene értéket adni a width, height értékeknek.Pl. width:javascript:meret1(); height:javascript:meret2(); Köszönettel m_kovacs
Köszönöm válaszát.Fárasztó volt ez a nap, meg a hőség is nyomja az agyamat, lehet hogy ezért, de első olvasatra nem kristálytiszta számomra a javaslata.
Ha a 'masvalami.html' egy konstans hivatkozás, akkor nem vagyok előbbre. Alszom rá, hátha megvilágosodom.
Ez a sor működik! DE én a felbontástó függően a href-be dinamikusan szertnék file-nevet generálni.Na ez már nem működik. A file-név megszületik, létező file, csak nem tudom hogy kell rávennem, hogy betöltődjön.