Problemen bij thumbnail-systeem
Ik maak gebruik van een thumbnail-script, waarbij upgeloade foto's automatisch worden toegevoegd aan de pagina waar de thumbnails staan. Werkt perfect, ik kom alleen 2 kleine probleempjes waarvan ik niet weet hoe ik het moet oplossen.
Allereerst zal ik de 3 pagina's hieronder weergeven die ik gebruik.
1. admin.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
// Verander de variabelen hieronder:
$GegevensLocatie = "gegevens.php";
// Hierna hoeft niets veranderd te worden.
if(!file_exists($GegevensLocatie)) { die("Het bestand $GegevensLocatie kan niet geopend worden! Verander dit bovenin $PHP_SELF."); }
include($GegevensLocatie);
?>
// Verander de variabelen hieronder:
$GegevensLocatie = "gegevens.php";
// Hierna hoeft niets veranderd te worden.
if(!file_exists($GegevensLocatie)) { die("Het bestand $GegevensLocatie kan niet geopend worden! Verander dit bovenin $PHP_SELF."); }
include($GegevensLocatie);
?>
<html>
<head>
<title>Fotoboek Admin</title>
</head>
<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
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
<?php
if($_POST["gebruikersnaam"] == $Gebruikersnaam && $_POST["wachtwoord"] == $Wachtwoord) {
echo("<h2>Fotoboek Admin</h2><br>");
if(isset($_POST["verwijder"]) && is_array($_POST["verwijder"])) {
$Fotos = file($FotosBestand);
for($i = 0; $i < count($Fotos)+1; $i++) {
list($foto,$thumbnail,$b,$h,$beschrijving) = explode("|",$Fotos[$i]);
if(in_array($foto,$_POST[verwijder])) {
unset($Fotos[$i]);
@unlink("$FotoMap/$foto");
@unlink("$FotoMap/$thumbnail");
}
}
$bestand = fopen($FotosBestand,"w");
fputs($bestand,implode("",$Fotos));
fclose($bestand);
echo("<b>Foto's succesvol verwijderd.</b><br><br>");
}
elseif($_POST["uploaden"]) {
if(!$_FILES["foto"]["error"]) {
$fotonaam = $_FILES["foto"][name];
list($fb,$fh) = getimagesize($_FILES["foto"][tmp_name]);
$bt = $_POST["bt"]; $ht = $_POST["ht"];
if(!$bt && !$ht) { $bt = $fb; $ht = $fh; }
elseif(!$bt) { $bt = $ht/($fb/$fh); }
elseif(!$ht) { $ht = $bt/($fb/$fh); }
if($_FILES["foto"][type] == "image/jpeg") { $Foto = imagecreatefromjpeg($foto); }
elseif($_FILES["foto"][type] == "image/png") { $Foto = imagecreatefrompng($foto); }
if($Foto) {
$thnaam = eregi_replace("\.[^\.]+$","",$fotonaam)."_th.jpg";
$Thumbnail = imagecreate($bt,$ht);
imagecopyresized($Thumbnail,$Foto,0,0,0,0,$bt,$ht,$fb,$fh);
imagejpeg($Thumbnail,"$FotoMap$thnaam",50);
}
else {
$thnaam = $fotonaam;
}
copy($_FILES["foto"]["tmp_name"],"$FotoMap$fotonaam");
$beschrijving = str_replace("¦","|",str_replace("\r","",str_replace("\n","",htmlspecialchars(stripslashes($_POST["beschrijving"]),ENT_QUOTES))));
$bestand = fopen($FotosBestand,"a");
fputs($bestand,"$fotonaam|$thnaam|".round($bt)."|".round($ht)."|$beschrijving|\n");
fclose($bestand);
echo("<b>De foto is succesvol geüpload!</b><br>
Naam bestand: $fotonaam<br>
Naam thumbnail: $thnaam");
}
else {
echo("<b>Er is iets fout gegaan bij het uploaden van de foto!</b>");
}
echo("<br><br>");
}
echo("<hr><b>Voeg een foto toe</b><hr>
<form method=post enctype='multipart/form-data'>
Alleen van JP(E)G of PNG foto's kunnen thumbnails worden gemaakt.<br><br>
Foto: <input type=file name=foto><br><br>
Breedte thumbnail: <input type=text size=5 value='$StandaardBreedteThumbnails' name=bt><br>
» Laat leeg als de breedte zich aan moet passen in verhouding tot de hoogte.<br>
Hoogte thumbnail: <input type=text size=5 value='$StandaardHoogteThumbnails' name=ht><br>
» Laat leeg als de hoogte zich aan moet passen in verhouding tot de breedte.<br>
<br>
Beschrijving (HTML aan):<br><br>
<textarea rows=10 cols=40 name=beschrijving></textarea><br><br>
<input type=submit name=uploaden value=Uploaden>
<input type=hidden name=gebruikersnaam value='$gebruikersnaam'>
<input type=hidden name=wachtwoord value='$wachtwoord'>
</form>");
$Fotos = file($FotosBestand);
if(trim(implode("",$Fotos))) {
echo("<hr><b>Verwijder een foto</b><hr><form method=post>");
while(list($nr,$regel) = each($Fotos)) {
list($foto,$thumbnail,$b,$h,$beschrijving) = explode("|",$regel);
echo("<input type=checkbox name=\"verwijder[]\" value=\"$foto\"> <a href='fotos/$foto' target='_blank'>$foto</a><br>\n");
}
echo("<br>
<input type=hidden name=gebruikersnaam value='$gebruikersnaam'>
<input type=hidden name=wachtwoord value='$wachtwoord'>
<input type=submit value=Verwijderen></form>");
}
echo("<hr><a href='$PHP_SELF'>Bekijk het Fotoboek</a>");
}
else {
echo("<h2>Fotoboek Admin</h2><br>
<form method=post>
Gebruikersnaam: <input type=text name=gebruikersnaam><br>
Wachtwoord: <input type=password name=wachtwoord><br><br>
<input type=submit value=Inloggen>
</form>");
}
?>
if($_POST["gebruikersnaam"] == $Gebruikersnaam && $_POST["wachtwoord"] == $Wachtwoord) {
echo("<h2>Fotoboek Admin</h2><br>");
if(isset($_POST["verwijder"]) && is_array($_POST["verwijder"])) {
$Fotos = file($FotosBestand);
for($i = 0; $i < count($Fotos)+1; $i++) {
list($foto,$thumbnail,$b,$h,$beschrijving) = explode("|",$Fotos[$i]);
if(in_array($foto,$_POST[verwijder])) {
unset($Fotos[$i]);
@unlink("$FotoMap/$foto");
@unlink("$FotoMap/$thumbnail");
}
}
$bestand = fopen($FotosBestand,"w");
fputs($bestand,implode("",$Fotos));
fclose($bestand);
echo("<b>Foto's succesvol verwijderd.</b><br><br>");
}
elseif($_POST["uploaden"]) {
if(!$_FILES["foto"]["error"]) {
$fotonaam = $_FILES["foto"][name];
list($fb,$fh) = getimagesize($_FILES["foto"][tmp_name]);
$bt = $_POST["bt"]; $ht = $_POST["ht"];
if(!$bt && !$ht) { $bt = $fb; $ht = $fh; }
elseif(!$bt) { $bt = $ht/($fb/$fh); }
elseif(!$ht) { $ht = $bt/($fb/$fh); }
if($_FILES["foto"][type] == "image/jpeg") { $Foto = imagecreatefromjpeg($foto); }
elseif($_FILES["foto"][type] == "image/png") { $Foto = imagecreatefrompng($foto); }
if($Foto) {
$thnaam = eregi_replace("\.[^\.]+$","",$fotonaam)."_th.jpg";
$Thumbnail = imagecreate($bt,$ht);
imagecopyresized($Thumbnail,$Foto,0,0,0,0,$bt,$ht,$fb,$fh);
imagejpeg($Thumbnail,"$FotoMap$thnaam",50);
}
else {
$thnaam = $fotonaam;
}
copy($_FILES["foto"]["tmp_name"],"$FotoMap$fotonaam");
$beschrijving = str_replace("¦","|",str_replace("\r","",str_replace("\n","",htmlspecialchars(stripslashes($_POST["beschrijving"]),ENT_QUOTES))));
$bestand = fopen($FotosBestand,"a");
fputs($bestand,"$fotonaam|$thnaam|".round($bt)."|".round($ht)."|$beschrijving|\n");
fclose($bestand);
echo("<b>De foto is succesvol geüpload!</b><br>
Naam bestand: $fotonaam<br>
Naam thumbnail: $thnaam");
}
else {
echo("<b>Er is iets fout gegaan bij het uploaden van de foto!</b>");
}
echo("<br><br>");
}
echo("<hr><b>Voeg een foto toe</b><hr>
<form method=post enctype='multipart/form-data'>
Alleen van JP(E)G of PNG foto's kunnen thumbnails worden gemaakt.<br><br>
Foto: <input type=file name=foto><br><br>
Breedte thumbnail: <input type=text size=5 value='$StandaardBreedteThumbnails' name=bt><br>
» Laat leeg als de breedte zich aan moet passen in verhouding tot de hoogte.<br>
Hoogte thumbnail: <input type=text size=5 value='$StandaardHoogteThumbnails' name=ht><br>
» Laat leeg als de hoogte zich aan moet passen in verhouding tot de breedte.<br>
<br>
Beschrijving (HTML aan):<br><br>
<textarea rows=10 cols=40 name=beschrijving></textarea><br><br>
<input type=submit name=uploaden value=Uploaden>
<input type=hidden name=gebruikersnaam value='$gebruikersnaam'>
<input type=hidden name=wachtwoord value='$wachtwoord'>
</form>");
$Fotos = file($FotosBestand);
if(trim(implode("",$Fotos))) {
echo("<hr><b>Verwijder een foto</b><hr><form method=post>");
while(list($nr,$regel) = each($Fotos)) {
list($foto,$thumbnail,$b,$h,$beschrijving) = explode("|",$regel);
echo("<input type=checkbox name=\"verwijder[]\" value=\"$foto\"> <a href='fotos/$foto' target='_blank'>$foto</a><br>\n");
}
echo("<br>
<input type=hidden name=gebruikersnaam value='$gebruikersnaam'>
<input type=hidden name=wachtwoord value='$wachtwoord'>
<input type=submit value=Verwijderen></form>");
}
echo("<hr><a href='$PHP_SELF'>Bekijk het Fotoboek</a>");
}
else {
echo("<h2>Fotoboek Admin</h2><br>
<form method=post>
Gebruikersnaam: <input type=text name=gebruikersnaam><br>
Wachtwoord: <input type=password name=wachtwoord><br><br>
<input type=submit value=Inloggen>
</form>");
}
?>
</body>
</html>
2. fotoboek.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
// Verander de variabelen hieronder:
$GegevensLocatie = "gegevens.php";
// Hierna hoeft niets veranderd te worden.
if(!file_exists($GegevensLocatie)) { die("Het bestand $GegevensLocatie kan niet geopend worden! Verander dit bovenin $PHP_SELF."); }
include($GegevensLocatie);
?>
// Verander de variabelen hieronder:
$GegevensLocatie = "gegevens.php";
// Hierna hoeft niets veranderd te worden.
if(!file_exists($GegevensLocatie)) { die("Het bestand $GegevensLocatie kan niet geopend worden! Verander dit bovenin $PHP_SELF."); }
include($GegevensLocatie);
?>
<html>
<head>
<title>Fotoboek</title>
</head>
<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
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
<?php
$x = intval($_GET["x"]); if($x < 1) { $x = 0; }
$a = $RijenPerPagina*$AantalPerRij;
$Fotos = file($FotosBestand); $i = 0;
if(isset($_GET["bekijk"]) && file_exists("$FotoMap/{$_GET["bekijk"]}")) {
$beschrijving = "";
while(list($nr,$regel) = each($Fotos)) {
list($foto,$thumbnail,$b,$h,$beschrijving) = explode("|",$regel);
if($foto == $_GET["bekijk"]) { break; }
}
echo("<img src='$FotoMap/{$_GET["bekijk"]}'><br><br>");
if($beschrijving) { echo("$beschrijving<br><br>"); }
echo("<a href='$PHP_SELF?x={$_POST["x"]}'>Terug</a>");
}
else {
$DeFotos = array_slice($Fotos,$x,$a);
while(list($nr,$regel) = each($DeFotos)) {
list($foto,$thumbnail,$b,$h,$beschrijving) = explode("|",$regel);
if($thumbnail) {
if(round($i/$AantalPerRij) == $i/$AantalPerRij) { echo("<br>"); }
echo("<a href='$PHP_SELF?bekijk=".urlencode($foto)."&x=$x'><img width='$b' height='$h' src='$FotoMap$thumbnail' border=0></a> \n");
$i++;
}
}
if($i) {
echo("<br><br>");
if($x > 0) { echo("<a href='$PHP_SELF?x=".($x-$a)."'><b>Vorige</b></a>"); } else { echo("<b>Vorige</b>"); }
echo(" - ");
if(count($Fotos) >= $x+$a) { echo("<a href='$PHP_SELF?x=".($x+$a)."'><b>Volgende</b></a>"); } else { echo("<b>Volgende</b>"); }
}
else { echo("<b>Er zijn nog geen foto's.</b>"); }
}
?>
$x = intval($_GET["x"]); if($x < 1) { $x = 0; }
$a = $RijenPerPagina*$AantalPerRij;
$Fotos = file($FotosBestand); $i = 0;
if(isset($_GET["bekijk"]) && file_exists("$FotoMap/{$_GET["bekijk"]}")) {
$beschrijving = "";
while(list($nr,$regel) = each($Fotos)) {
list($foto,$thumbnail,$b,$h,$beschrijving) = explode("|",$regel);
if($foto == $_GET["bekijk"]) { break; }
}
echo("<img src='$FotoMap/{$_GET["bekijk"]}'><br><br>");
if($beschrijving) { echo("$beschrijving<br><br>"); }
echo("<a href='$PHP_SELF?x={$_POST["x"]}'>Terug</a>");
}
else {
$DeFotos = array_slice($Fotos,$x,$a);
while(list($nr,$regel) = each($DeFotos)) {
list($foto,$thumbnail,$b,$h,$beschrijving) = explode("|",$regel);
if($thumbnail) {
if(round($i/$AantalPerRij) == $i/$AantalPerRij) { echo("<br>"); }
echo("<a href='$PHP_SELF?bekijk=".urlencode($foto)."&x=$x'><img width='$b' height='$h' src='$FotoMap$thumbnail' border=0></a> \n");
$i++;
}
}
if($i) {
echo("<br><br>");
if($x > 0) { echo("<a href='$PHP_SELF?x=".($x-$a)."'><b>Vorige</b></a>"); } else { echo("<b>Vorige</b>"); }
echo(" - ");
if(count($Fotos) >= $x+$a) { echo("<a href='$PHP_SELF?x=".($x+$a)."'><b>Volgende</b></a>"); } else { echo("<b>Volgende</b>"); }
}
else { echo("<b>Er zijn nog geen foto's.</b>"); }
}
?>
</body>
</html>
Tenslotte is er nog een gegevens.php, hier staan echter enkel de gebruikersnamen, mappen en passwords in, die zijn hierbij dus niet relevant.
Dan mijn probleem.
Allereerst de makkelijkste (denk ik ;-)): Als ik op een thumbnail op (bijvoorbeeld) de 2e pagina klik, krijg ik deze in origineel formaat te zien. Als ik echter op 'Terug' klik, ga ik terug naar de eerste pagina van de thumbnails, in plaats van naar de pagina waar ik vandaan kwam.
In fotoboek.php staat onderstaande code, die hierbij wordt gebruikt:
echo("<a href='$PHP_SELF?x={$_POST["x"]}'>Terug</a>");
Het lijkt mij dat hier een simpel "javascript:goback"-regeltje moet komen te staan, ik weet echter niet hoe dit genoteerd dient te worden.
Dan het 2e probleem: Als ik een foto toevoeg, komt hij automatisch achteraan de lijst te staan, gebruikers moeten dus telkens naar de laatste pagina gaan om de laatst toegevoegde foto te bekijken. Ik wil juist dat de laatste foto vooraan wordt weggezet, ik heb echter geen flauw idee hoe ik dit zou moeten veranderen.
Kan iemand mij helpen bij mijn problemen?
B.v.d.
Jaap
Iemand enig idee?