[PHP/Javascrip] Javascript screenwidth omzetten in PHP-getal

Pagina: 1
Acties:
  • 40 views sinds 30-01-2008

  • masser120
  • Registratie: Januari 2004
  • Laatst online: 12-02 17:25
Beste mensen

Ik heb bijna het hele internet afgezocht, maar ik kwam het niet tegen

Ik heb een fotowebsite en daarbij wil ik graag de popupgrootte (van de foto) aanpassen aan dat van de schermresolutie en de grootte van de foto.
Dat doe ik door middel van de volgende script (aangepast voor schermen met een resolutie van minstens 1024x768):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
$ImageWidth = $exif_data['ImageWidth'];
$ImageHeight = $exif_data['ImageHeight'];

$screenwidth = '<SCRIPT language="JavaScript">
document.write(screen.width);
</SCRIPT>';

$screenheight = "<SCRIPT language='JavaScript'>
document.write(screen.height);
</SCRIPT>";

if ($screenwidth <= 1024)
{
    if ($ImageWidth < 940)
        {
            $popupwidth = $ImageWidth + 40;
            $MAXpopupheight = $screenheight - 150;
            if ($ImageHeight > $MAXpopupheight)
                {
                    $popupheight = $MAXpopupheight;
                }
            else
                {
                    $popupheight = $ImageHeight + 30;
                }
        }
    else
        {
            $popupwidth = 800;
            $popupheight = 600;
        }
}
elseif ($screenwidth >= 1280)
{
        if ($ImageWidth < 1100)
        {
            $popupwidth = $ImageWidth + 40;
            $MAXpopupheight = $screenheight - 150;
            if ($ImageHeight > $MAXpopupheight)
                {
                    $popupheight = $MAXpopupheight;
                }
            else
                {
                    $popupheight = $ImageHeight + 30;
                }
        }
    else
        {
            $popupwidth = 1024;
            $popupheight = 1024;
        }
}


Er is alleen één groot probleem...

PHP ziet de $screenheight of $screenwidth als de Javascript en NIET als getal!

Dus bij $screenheight probeert PHP "<SCRIPT language='JavaScript'>
document.write(screen.height);
</SCRIPT> - 150" te doen, en dat kan niet. $MAXpopupheight is dan dus -150 ipv 768-150=618...

Hoe los ik dat op ZONDER gebruik van $_POST of $_GET??

  • JozyDaPozy
  • Registratie: December 2002
  • Laatst online: 17-02 08:27
Je script wordt serverside (dus OP de server) uitgevoerd. Javascript op de server draaien is onzin, dus vandaar dat php dat niet kan.

Wat je dus zal moeten doen is op een andere pagina met behulp van javascript je resolutie bepalen, en vervolgens die parameters (toch) met behulp van een $_GET mee te sturen naar deze php-pagina, die er vervolgens iets mee doet.

[ Voor 3% gewijzigd door JozyDaPozy op 15-06-2006 14:18 ]


  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX
Je haalt serverside (PHP) en clientside (Javascript) een beetje door elkaar?
Je kunt met PHP niet de schermresolutie ophalen van de client. Dit moet je met een stukje javascript op gaan lossen. :)

Ik zou een stukje Javascript schrijven dat de resolutie bekijkt, uitrekent hoe groot de popup zou moeten worden en vervolgens de popup met window.open() openen. Daarin geef je de afmetingen van dat venstertje mee.

[ Voor 36% gewijzigd door Cyphax op 15-06-2006 14:18 ]

Saved by the buoyancy of citrus


  • HyperioN
  • Registratie: April 2003
  • Laatst online: 12-02 13:45
Je kunt geen clientside-variables (JS) naar een serverside-script passen (PHP)..
Maar zolang je PHP in dit geval alleen gebruikt voor popups, dan kun je het geheel toch gewoon met Javascript oplossen?

edit:
pfft, spuit 11 :P

[ Voor 8% gewijzigd door HyperioN op 15-06-2006 14:18 ]


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Je stopt een stuk tekst in $screenwidth en $screenheight en vergelijkt het daarna met een getal?
Logisch dat dat niet goed gaat natuurlijk...

Plus dat dit serverside wordt uitgevoerd en er nog geen schermresolutie bekend is natuurlijk.

edit:
spuit 12

[ Voor 5% gewijzigd door zwippie op 15-06-2006 14:19 ]

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • masser120
  • Registratie: Januari 2004
  • Laatst online: 12-02 17:25
HyperioN. schreef op donderdag 15 juni 2006 @ 14:18:
Je kunt geen clientside-variables (JS) naar een serverside-script passen (PHP)..
Maar zolang je PHP in dit geval alleen gebruikt voor popups, dan kun je het geheel toch gewoon met Javascript oplossen?

edit:
pfft, spuit 11 :P
Hoe moet dat dan? Ik heb nauwelijks ervaring met Javascript, maar veel met php.

[ Voor 8% gewijzigd door masser120 op 15-06-2006 14:20 ]


  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX
masser120 schreef op donderdag 15 juni 2006 @ 14:19:
[...]

Hoe moet dat dan? Ik heb nauwelijks ervaring met Javascript, maar veel met php.
Cyphax schreef op donderdag 15 juni 2006 @ 14:17:
Ik zou een stukje Javascript schrijven dat de resolutie bekijkt, uitrekent hoe groot de popup zou moeten worden en vervolgens de popup met window.open() openen. Daarin geef je de afmetingen van dat venstertje mee.
+
http://www.google.nl
Jouw beurt. ;)
http://www.w3schools.com/js/default.asp is trouwens ook een goede site met heel veel informatie.

[ Voor 25% gewijzigd door Cyphax op 15-06-2006 14:24 ]

Saved by the buoyancy of citrus


  • masser120
  • Registratie: Januari 2004
  • Laatst online: 12-02 17:25
Ok, ik zie mijn fout, ik ben ermee bezig.
Gelukkig lijken PHP en javascript redelijk op elkaar als het gaat om variabelen en if/else-gevallen.

  • mithras
  • Registratie: Maart 2003
  • Niet online
masser120 schreef op donderdag 15 juni 2006 @ 14:19:
[...]


Hoe moet dat dan? Ik heb nauwelijks ervaring met Javascript, maar veel met php.
Als je nu je eerste pagina kijkt wat de resolutie is, die naar een nieuwe pagina stuurt (een autorefresh) en vervolgens de waarde met php in een sessie stoppen. Wordt maar een keer naar de resolutie gevraagd, kan je tijdens je hele visit er gebruik van maken ;)

  • Cyphax
  • Registratie: November 2000
  • Nu online

Cyphax

Moderator LNX
Mithras86 schreef op donderdag 15 juni 2006 @ 14:25:
[...]

Als je nu je eerste pagina kijkt wat de resolutie is, die naar een nieuwe pagina stuurt (een autorefresh) en vervolgens de waarde met php in een sessie stoppen. Wordt maar een keer naar de resolutie gevraagd, kan je tijdens je hele visit er gebruik van maken ;)
Sessies en cookies enzo gebruiken? Je neemt wel de touristische route naar de oplossing zeg :+

Je hebt helemaal geen nieuwe pagina's of PHP of wat dan ook nodig. :)

[ Voor 8% gewijzigd door Cyphax op 15-06-2006 14:28 ]

Saved by the buoyancy of citrus


  • masser120
  • Registratie: Januari 2004
  • Laatst online: 12-02 17:25
Het werkt!

Alleen nu via javascript!

Bedankt voor de tips!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Cyphax schreef op donderdag 15 juni 2006 @ 14:27:
[...]

Sessies en cookies enzo gebruiken? Je neemt wel de touristische route naar de oplossing zeg :+

Je hebt helemaal geen nieuwe pagina's of PHP of wat dan ook nodig. :)
Al heb ik het niet over cookies gehad, je moet toch op zn minst met javascript de resolutie bekijken, en dan dit terugsturen naar de server? Omdat js=client side en php=server side, moet je toch een request terug naar de server sturen, met je gegevens (post/get). Dan kan php er voor de rest leuke dingen mee doen. Maar ik neem aan dat je niet elke keer dit wil uitvoeren, en je ervanuit gaat dat de resolutie tijdens een visit gelijk blijft. De resolutie in een sessie stoppen lijkt me dan wel de oplossing ;)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Dit heeft sowieso niets te maken met PHP; je wil gewoon met Javascript een popup maken, en dat kan prima binnen JS zelf. Daarnaast is dit stof die in Webdesign, Markup & Clientside Scripting, waar Javascriptvragen horen, al vaker voorbij gekomen is. Ook is er op Google veel te vinden. :)

Aangezien je vraag intussen opgelost is en je er verder met Google wel uit moet kunnen komen, doe ik je topic op slot. Ook wil ik je aanraden eens goed te kijken naar wat nou eigenlijk het verschil is tussen clientside en serverside. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.