fout in script
Ik heb ergens een script gevonden dat een heel mooi fotoboek vormt. Dit werkt perfect in Internet explorer, maar zodra ik de pagina in firefox open gaat het mis. als je op een plaatje klikt gebeurt er niks.
Wat doe ik fout? heeft het iets te maken met window.open in laatzien?
hier mijn script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
//LET OP!!! Hier moet je de directory invullen waar je foto's staan
//vergeet niet de "/" op het einde
//deze directory gaat uit van het pad waar je file staat. Ook geen
//leading "/" gebruiken dus.
$dir = 'images/';
$dir2 = 'klein/';
//inhoud van de directory ophalen
$handle = opendir($dir);
while ($file = readdir($handle))
{
if($file == '.' || $file == '..')
continue;
else
$result_array[]=$file;
}
closedir($handle);
?>
//LET OP!!! Hier moet je de directory invullen waar je foto's staan
//vergeet niet de "/" op het einde
//deze directory gaat uit van het pad waar je file staat. Ook geen
//leading "/" gebruiken dus.
$dir = 'images/';
$dir2 = 'klein/';
//inhoud van de directory ophalen
$handle = opendir($dir);
while ($file = readdir($handle))
{
if($file == '.' || $file == '..')
continue;
else
$result_array[]=$file;
}
closedir($handle);
?>
<center>
Wacht tot alle fototjes geladen zijn....<br>
</center>
<script language="JavaScript">
<!--
function laatZien(fotonr, hoogte, breedte, src)
{
foto = window.open('','','menubar=no,toolbar=no');
foto.resizeTo(breedte,hoogte);
foto.document.write("<html><head><title>Foto - " + fotonr + "</title></head><body leftmargin='0' topmargin='0'>");
foto.document.write("<center><img src=" + src + fotonr + "><center><br>");
foto.document.write("<center><font face='Arial, Helvetica, sans-serif' size='2'>.::<a href='JavaScript:window.close();'> Sluit venster </a>::.</font></center>");
foto.document.write("</body></html>");
}
!-->
</script>
</head>
<style>
body
{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #000000;
background-color: #FFFFFF
}
span
{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
color: #CC6633
}
a:link { color: #000000; font-size: 12px }
a:visited { color: #31928C; font-size: 12px }
a:active { color: #CCFFCC; font-size: 12px }
a:hover { color: #CC3333; font-size: 12px }
</style>
<body>
Code (php)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<?php
//aantal rijen en kolommen in stellen. De dir waar je je foto's moet in zetten heet "foto". Deze index.php moet
//één directory hoger staan :-)
//Wil je dat wijzigen, dan moet je niet vergeten het stukje JavaScript hier boven ook te wijzigen.
//ik had de tabellen ook vanaf hier willen configgen, maar dat zijn slechts 3 regels dus dat
//doe je zelf maar :-P
$rows = 4;
$cols = 5;
//pagina nummer ophalen, indien geen pagina nummer op 0 zetten
if(isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 0;
}
//totaal aantal foto's, om het aantal pagina's uit te rekenen
$num_pics = count($result_array);
//wat vars en andere rommel om de juiste pagina's en array's door te lopen
$cells = $rows * $cols;
$pages = ceil($num_pics / ($rows * $cols));
$num_pages = $pages - 1;
$output = array();
$slices = array();
$push = 0;
$showpage = $page + 1;
//array vullen met waarden voor de slice om afbeeldingen per pagina weer te geven
for($k=0;$k<$pages;$k++)
{
array_push($slices, $push);
$push = $push + $cells;
}
//lusje om te kijken op welke pagina we zijn en vervolgens de goede set afbeeldingen uit $result_array halen
for($k=0;$k<$pages;$k++)
{
if($page == key($slices))
{
$output = array_slice($result_array, current($slices), $cells);
}
next($slices);
}
reset($output);
//afbeelden van afbeeldingen
print "<center>\n<table width='*' border='1' bordercolor='#000000' cellspacing='0' cellpadding='2'>\n";
for($i=0;$i<$rows;$i++)
{
print "\t<tr>\n";
for($j=0;$j<$cols;$j++)
{
if(current($output) != false)
{
$pic = current($output);
$size = getimagesize($dir.$pic);
$height_button = $size[1] + 70;
$value = current($output);
print "\t\t<td width='100' height='100' align=center>\n\t\t\t<a href=JavaScript:laatZien('$value',$height_button,$size[0],'$dir');>\n\t\t\t\t<img width='100' height='100' border='0' src='$dir2$value'>\n\t\t\t</a>\n\t\t</td>\n\n";
next($output);
}
else
{
print "\t\t<td width='100' height='100' align='center'> </td>\n";
}
}
print "\t</tr>\n";
}
//hier worden de prev en next knopjes gemaakt.
$ref = $_SERVER['PHP_SELF'];
print "</table>\n";
if($num_pages == '0')
{
print "<span>[ </span>";
print "vorige";
print "<span> ] </span>";
print "<span> [ </span>";
print "volgende";
print "<span> ]</span>";
}
elseif(($page == '0')||($page == ''))
{
// geen previous knopje, begin pagina index.php?page=0
$next = $page + 1;
print "<span>[ </span>";
print "vorige";
print "<span> ] </span>";
$page_link = 1;
for($k=0;$k<$pages;$k++)
{
if($k == $page)
{
print "$page_link ";
}
else
{
print "<a href='$ref?page=$k'>$page_link</a> ";
}
$page_link++;
}
print "<span> [ </span>";
print "<a href='$ref?page=$next'>volgende</a>";
print "<span> ]</span>";
}
elseif($page == $num_pages)
{
// geen next knopje, $pages = maximum
$prev = $page - 1;
print "<span>[ </span>";
print "<a href='$ref?page=$prev'>vorige</a>";
print "<span> ] </span>";
$page_link = 1;
for($k=0;$k<$pages;$k++)
{
if($k == $page)
{
print "$page_link ";
}
else
{
print "<a href='$ref?page=$k'>$page_link</a> ";
}
$page_link++;
}
print "<span> [ </span>";
print "volgende";
print "<span> ]</span>";
}
else
{
// de rest, pagina's in het midden, 2 knopjes
$next = $page + 1;
$prev = $page - 1;
print "<span>[ </span>";
print "<a href='$ref?page=$prev'>vorige</a>";
print "<span> ] </span>";
$page_link = 1;
for($k=0;$k<$pages;$k++)
{
if($k == $page)
{
print "$page_link ";
}
else
{
print "<a href='$ref?page=$k'>$page_link</a> ";
}
$page_link++;
}
print "<span> [ </span>";
print "<a href='$ref?page=$next'>volgende</a>";
print "<span> ]</span>";
}
//pagina nummer afbeelden, dit kan je er nog uit slopen of ergens anders neerkwakken
print "<br><br>";
print "Pagina: $showpage van $pages";
?>
//aantal rijen en kolommen in stellen. De dir waar je je foto's moet in zetten heet "foto". Deze index.php moet
//één directory hoger staan :-)
//Wil je dat wijzigen, dan moet je niet vergeten het stukje JavaScript hier boven ook te wijzigen.
//ik had de tabellen ook vanaf hier willen configgen, maar dat zijn slechts 3 regels dus dat
//doe je zelf maar :-P
$rows = 4;
$cols = 5;
//pagina nummer ophalen, indien geen pagina nummer op 0 zetten
if(isset($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 0;
}
//totaal aantal foto's, om het aantal pagina's uit te rekenen
$num_pics = count($result_array);
//wat vars en andere rommel om de juiste pagina's en array's door te lopen
$cells = $rows * $cols;
$pages = ceil($num_pics / ($rows * $cols));
$num_pages = $pages - 1;
$output = array();
$slices = array();
$push = 0;
$showpage = $page + 1;
//array vullen met waarden voor de slice om afbeeldingen per pagina weer te geven
for($k=0;$k<$pages;$k++)
{
array_push($slices, $push);
$push = $push + $cells;
}
//lusje om te kijken op welke pagina we zijn en vervolgens de goede set afbeeldingen uit $result_array halen
for($k=0;$k<$pages;$k++)
{
if($page == key($slices))
{
$output = array_slice($result_array, current($slices), $cells);
}
next($slices);
}
reset($output);
//afbeelden van afbeeldingen
print "<center>\n<table width='*' border='1' bordercolor='#000000' cellspacing='0' cellpadding='2'>\n";
for($i=0;$i<$rows;$i++)
{
print "\t<tr>\n";
for($j=0;$j<$cols;$j++)
{
if(current($output) != false)
{
$pic = current($output);
$size = getimagesize($dir.$pic);
$height_button = $size[1] + 70;
$value = current($output);
print "\t\t<td width='100' height='100' align=center>\n\t\t\t<a href=JavaScript:laatZien('$value',$height_button,$size[0],'$dir');>\n\t\t\t\t<img width='100' height='100' border='0' src='$dir2$value'>\n\t\t\t</a>\n\t\t</td>\n\n";
next($output);
}
else
{
print "\t\t<td width='100' height='100' align='center'> </td>\n";
}
}
print "\t</tr>\n";
}
//hier worden de prev en next knopjes gemaakt.
$ref = $_SERVER['PHP_SELF'];
print "</table>\n";
if($num_pages == '0')
{
print "<span>[ </span>";
print "vorige";
print "<span> ] </span>";
print "<span> [ </span>";
print "volgende";
print "<span> ]</span>";
}
elseif(($page == '0')||($page == ''))
{
// geen previous knopje, begin pagina index.php?page=0
$next = $page + 1;
print "<span>[ </span>";
print "vorige";
print "<span> ] </span>";
$page_link = 1;
for($k=0;$k<$pages;$k++)
{
if($k == $page)
{
print "$page_link ";
}
else
{
print "<a href='$ref?page=$k'>$page_link</a> ";
}
$page_link++;
}
print "<span> [ </span>";
print "<a href='$ref?page=$next'>volgende</a>";
print "<span> ]</span>";
}
elseif($page == $num_pages)
{
// geen next knopje, $pages = maximum
$prev = $page - 1;
print "<span>[ </span>";
print "<a href='$ref?page=$prev'>vorige</a>";
print "<span> ] </span>";
$page_link = 1;
for($k=0;$k<$pages;$k++)
{
if($k == $page)
{
print "$page_link ";
}
else
{
print "<a href='$ref?page=$k'>$page_link</a> ";
}
$page_link++;
}
print "<span> [ </span>";
print "volgende";
print "<span> ]</span>";
}
else
{
// de rest, pagina's in het midden, 2 knopjes
$next = $page + 1;
$prev = $page - 1;
print "<span>[ </span>";
print "<a href='$ref?page=$prev'>vorige</a>";
print "<span> ] </span>";
$page_link = 1;
for($k=0;$k<$pages;$k++)
{
if($k == $page)
{
print "$page_link ";
}
else
{
print "<a href='$ref?page=$k'>$page_link</a> ";
}
$page_link++;
}
print "<span> [ </span>";
print "<a href='$ref?page=$next'>volgende</a>";
print "<span> ]</span>";
}
//pagina nummer afbeelden, dit kan je er nog uit slopen of ergens anders neerkwakken
print "<br><br>";
print "Pagina: $showpage van $pages";
?>
</center>
</body>
</html>
Gewijzigd op 24/09/2005 10:53:00 door Bas
sorry, maar zo staat het in het script, maar heb je een oplossing of een alternatief voor window.open?
omg lkkr irritant lezen al die enters
ik probeer het altijd zo overzichtelijk mogelijk te houden, maar hier lijkt het idd of het script uit elkaar getrokken wordt
Klik even op het linker icoontje boven je bericht (met dat pennetje) en je kan zelf al die loze regels verwijderen. De kans dat het dan gelezen gaat worden vergroot je daar aanzienlijk mee.
bij deze bijgewerkt
http://www.wyger.nl/usr/wegfeest/middag/index.php
in ie werkt het perfect, maar in firefox heb ik geen effect
ik heb het al opgelost...
Deel je de oplossing nog met ons?
in het script stond ergens een verloren: <--! -->
die verwijdert en het werkt als een trein!!!
groet Bas
ik zou nog een check inbouwen om te zien of er al een popup geopend is. Als je het popupwindow niet sluit voordat je op een nieuwe thumbnail klikt, dan heb je twee popups, en drie, en vier, enz ...
Ook laden je foto's nogal traag. Heb je ze wel voorbewerkt voor internet? Dus geen 300 DPI en zo, beetje gunstige JPEG compressieverhouding, dat soort dingen?
In principe is het wel verstandig om die commentaar-tags te laten staan, maar ik vermoed dat het probleem lag in de afsluitende tag. Die was !--> in plaats van --> en aangezien dat niet conform de standaard is, zal Firefox zich anders hebben gedragen dan was bedoeld.
het werkt nu.
jan, ik heb de foto's wel gedownsized, maar die server is niet bar snel.
gaat om het idee,.........
groet bas
Bas:
jan, ik heb de foto's wel gedownsized, maar die server is niet bar snel.
gaat om het idee
groet bas
gaat om het idee
groet bas
Okee, veel succes verder!