Problemen bij thumbnail-systeem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jaap

Jaap

17/08/2006 14:56:00
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);

?>

<html>
<head>
<title>Fotoboek Admin</title>
</head>
<body>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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("&brvbar;","|",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>
&raquo; 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>
&raquo; 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)
PHP script in nieuw venster Selecteer het PHP script
1
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);

?>

<html>
<head>
<title>Fotoboek</title>
</head>
<body>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>&nbsp;\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
 
PHP hulp

PHP hulp

19/03/2024 06:48:40
 
Jaap

Jaap

18/08/2006 20:50:00
Quote Anchor link
Iemand enig idee?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.