/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Problemer med visning af thumbnails.
Fra : Kasper Lund


Dato : 15-06-06 03:37

Hej med jer.

Jeg har i anledning af at jeg er blevet far lavet en lille hjemmeside:
www.nordal-lund.dk Her kan man se nogle billeder af mine to tvillinger,
men der går altså noget galt ved oversigtssiden med thumbnails - se selv
her: http://www.nordal-lund.dk/sites/thumbs.php

Jeg har også en kopi af samme side liggende på min egen apache2 server
med PHP Version 5.1.2-1+b1 og her virker alt som det skal.

Jeg kan også se på link'sne at den tæller fint nok op og på siden med
de store billeder skifter den fint mellem alle billeder.

Her er koden som bliver brugt til at generere mine thumbnails:

<?php
$i=0;
$thumbs = '../pics/120x90/'; //mappe til thumnails
$imgdir = '../pics/800x600/'; // mappe til store billeder
$allowed_types = array('jpg','JPG'); // filtyper der er tilladte
$dimg = opendir($thumbs);

php while($imgfile = readdir($dimg))
{
if(in_array(strtolower(substr($imgfile,-3)),$allowed_types))
{
$a_img[] = $imgfile;
sort($a_img);
reset ($a_img);
echo "<td><a href=\"pics.php?id=$i\"><img src=\"$thumbs$a_img[$i]\"
width=\"120\" height=\"90\" title=\"Klik for stort
billede\"></a></td>\n";

$i++;

if ($i % 3 == 0){
echo "<tr></tr>\n";
}
}
}
?>

Egentlig er jeg endnu ikke klar over hvilket version af PHP cliche kører,
men jeg syntes det virker mærkeligt hvis ovenstående kode skulle være
versionsafhængig.

Håber i kan hjælpe mig.

/Kasper


 
 
Dan Storm (15-06-2006)
Kommentar
Fra : Dan Storm


Dato : 15-06-06 06:58

Kasper Lund skrev:
>echo "<td><a href=\"pics.php?id=$i\"><img src=\"$thumbs$a_img[$i]\"
Umiddelbart må problemet jo ligge her.
Prøv at rette:

echo '<td><a href="pics.php?id='.$i.'"><img src="'.$thumbs .
$a_img[$i].'" width="120" height="90" title="Klik for stort
billede"></a></td>\n';

Og hvis det ikke virker, så prøv at lave en print_r($imgfile) og se om
tingene passer sammen, som de skal.



--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Jakob Munck (15-06-2006)
Kommentar
Fra : Jakob Munck


Dato : 15-06-06 09:16

> Her er koden som bliver brugt til at generere mine thumbnails:
>
> <?php
> $i=0;
> $thumbs = '../pics/120x90/'; //mappe til thumnails
> $imgdir = '../pics/800x600/'; // mappe til store billeder
> $allowed_types = array('jpg','JPG'); // filtyper der er tilladte
> $dimg = opendir($thumbs);
>
> php while($imgfile = readdir($dimg))
> {
> if(in_array(strtolower(substr($imgfile,-3)),$allowed_types))
> {
> $a_img[] = $imgfile;
> sort($a_img);
> reset ($a_img);
> echo "<td><a href=\"pics.php?id=$i\"><img src=\"$thumbs$a_img[$i]\"
> width=\"120\" height=\"90\" title=\"Klik for stort
> billede\"></a></td>\n";
>
> $i++;
>
> if ($i % 3 == 0){
> echo "<tr></tr>\n";
> }
> }
> }
> ?>
>

Undskyld jeg blander mig! Jeg har også forsøgt mig med ovenstående kode, men
den giver følgende fejlmedling:

Parse error: parse error, unexpected T_WHILE in
C:\Programmer\xampp\htdocs\web\pics.php on line 9

Og det gælder også, hvis Dans ændringsforslag indsættes.

Har du fået det til at virke, og med hvilken ændring af koden??


v.h.
Jakob



Peter Brodersen (15-06-2006)
Kommentar
Fra : Peter Brodersen


Dato : 15-06-06 11:10

On Thu, 15 Jun 2006 10:15:46 +0200, "Jakob Munck"
<jm2_fjern_dette@webspeed.dk> wrote:

>> php while($imgfile = readdir($dimg))
>
>Undskyld jeg blander mig! Jeg har også forsøgt mig med ovenstående kode, men
>den giver følgende fejlmedling:
>
>Parse error: parse error, unexpected T_WHILE in
>C:\Programmer\xampp\htdocs\web\pics.php on line 9

Fjern "php" i starten af den citerede linje.

--
- Peter Brodersen
Ugens^WMånedens^WSommerens værktøj - Find vej: www.findvej.dk
Nu med link direkte til en adresse, fx: www.findvej.dk/Nybrogade2,1203

Kasper Lund (15-06-2006)
Kommentar
Fra : Kasper Lund


Dato : 15-06-06 11:59

On Thu, 15 Jun 2006 10:15:46 +0200, Jakob Munck wrote:

> Undskyld jeg blander mig! Jeg har også forsøgt mig med ovenstående kode, men
> den giver følgende fejlmedling:

Sorry, jeg har copy pastet lidt i det, da jeg kun ville have det relevante
med, men det gik lidt hurtigt.

>
> Har du fået det til at virke, og med hvilken ændring af koden??

Har prøvet Dans forslag uden held, har ikke prøvet Bertels endnu da jeg
har lidt travlt. Men jeg skal nok melde tilbage.....


Bertel Lund Hansen (15-06-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-06-06 11:21

Kasper Lund skrev:

> Her er koden som bliver brugt til at generere mine thumbnails:

Den er ret ulogisk. Den sorterer f.eks. arrayet hver eneste gang
et nyt billede bliver fundet, og jeg har fjernet "JPG" da der
bruges strtolower() ved testen (og så har jeg brugt ' inden i
PHP-strengene).

Prøv det her i stedet (utestet):

<?php
$i=0;
$thumbs = '../pics/120x90/'; //mappe til thumnails
$imgdir = '../pics/800x600/'; // mappe til store billeder
$allowed_types = array('jpg'); // filtyper der er tilladte - med småt
$dimg = opendir($thumbs);

$a_img = array();
php while($imgfile = readdir($dimg))
   if (in_array(strtolower(substr($imgfile,-3)),$allowed_types)) $a_img[] = $imgfile;

sort($a_img);
$i=0
foreach ($a_img as $image) {
   echo "<td><a href='pics.php?id=$i'><img src='$thumbs.$a_img[$i]'
      width='120' height='90' title='Klik for stort billede'></a></td>\n";
   if (++$i % 3 == 0) echo "<tr></tr>\n";
}
?>

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Bertel Lund Hansen (15-06-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-06-06 12:09

Bertel Lund Hansen skrev:

> foreach ($a_img as $image) {
>    echo "<td><a href='pics.php?id=$i'><img src='$thumbs.$a_img[$i]'
>       width='120' height='90' title='Klik for stort billede'></a></td>\n";
>    if (++$i % 3 == 0) echo "<tr></tr>\n";
> }

Der er en fejl. Det skal være ($image i stedet for $a_img[$i]):

foreach ($a_img as $image) {
   echo "<td><a href='pics.php?id=$i'><img src='$thumbs.$image'
      width='120' height='90' title='Klik for stort billede'></a></td>\n";
   if (++$i % 3 == 0) echo "<tr></tr>\n";
}

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Kasper Lund (15-06-2006)
Kommentar
Fra : Kasper Lund


Dato : 15-06-06 12:20

On Thu, 15 Jun 2006 13:09:02 +0200, Bertel Lund Hansen wrote:



> Der er en fejl. Det skal være ($image i stedet for $a_img[$i]):

Der virker nu også med $a_img[$i], men jeg har lavet det om for god
ordens skyld - endnu engang tak...

Michael Zedeler (15-06-2006)
Kommentar
Fra : Michael Zedeler


Dato : 15-06-06 12:24

Kasper Lund wrote:
> On Thu, 15 Jun 2006 13:09:02 +0200, Bertel Lund Hansen wrote:
>
>>Der er en fejl. Det skal være ($image i stedet for $a_img[$i]):
>
> Der virker nu også med $a_img[$i], men jeg har lavet det om for god
> ordens skyld - endnu engang tak...

Så prøv lige at se hvad der sker, hvis du har mere end 3 billeder.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Kasper Lund (15-06-2006)
Kommentar
Fra : Kasper Lund


Dato : 15-06-06 12:53

On Thu, 15 Jun 2006 13:24:08 +0200, Michael Zedeler wrote:

>
> Så prøv lige at se hvad der sker, hvis du har mere end 3 billeder.

Jeg har 136 billeder, det ser fint ud.

/Kasper


Kasper Lund (15-06-2006)
Kommentar
Fra : Kasper Lund


Dato : 15-06-06 12:12

On Thu, 15 Jun 2006 12:21:21 +0200, Bertel Lund Hansen wrote:


> Prøv det her i stedet (utestet):
>
> <?php
> $i=0;
> $thumbs = '../pics/120x90/'; //mappe til thumnails
> $imgdir = '../pics/800x600/'; // mappe til store billeder
> $allowed_types = array('jpg'); // filtyper der er tilladte - med småt
> $dimg = opendir($thumbs);
>
> $a_img = array();
> php while($imgfile = readdir($dimg))
>    if (in_array(strtolower(substr($imgfile,-3)),$allowed_types)) $a_img[] = $imgfile;
>
> sort($a_img);
> $i=0
> foreach ($a_img as $image) {
>    echo "<td><a href='pics.php?id=$i'><img src='$thumbs.$a_img[$i]'
>       width='120' height='90' title='Klik for stort billede'></a></td>\n";
>    if (++$i % 3 == 0) echo "<tr></tr>\n";
> }
> ?>

Det var det der skulle til, der er lige et par ting jeg har ændret, så
det er kommet til at se sådan her ud:

<?php

$i=0;
$thumbs = '../pics/120x90/'; //mappe til thumnails
$imgdir = '../pics/800x600/'; // mappe til store billeder
$allowed_types = array('jpg','JPG'); // filtyper der er tilladte
$dimg = opendir($thumbs);

$a_img = array();
while($imgfile = readdir($dimg))
if (in_array(strtolower(substr($imgfile,-3)),$allowed_types)) $a_img[] = $imgfile;
sort($a_img);
$i=0;
foreach ($a_img as $image) {
echo "<td><a href='pics.php?id=$i'><img src='$thumbs$a_img[$i]' width='120' height='90' title='Klik for stort billede'></a></td>\n";
if (++$i % 3 == 0) echo "<tr></tr>\n";
}

Tusind tak for hjælpen.

Er det god skik at bruge enkelt pinger i PHP koden?
Jeg mener jeg bruger de escapede dobbelt pinger når jeg laver SQL
sætninger i PHP koden, og har så bare gjort det til vane.

/Kasper

Bertel Lund Hansen (15-06-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-06-06 13:14

Kasper Lund skrev:

> Det var det der skulle til, der er lige et par ting jeg har ændret, så
> det er kommet til at se sådan her ud:

Det er okay. En petitesse:

foreach er en effektiv løkke der sørger for at man kan tilgå
elementerne ét ad gangen med et variabelnavn. Jeg valgte $image,
men glemte det ved en fejl.

$a_img[$i] tilgår her samme element, men det kræver et ekstra
opslag.

> Tusind tak for hjælpen.

Velbekomme.

> Er det god skik at bruge enkelt pinger i PHP koden?

Det tror jeg ikke man kan sige. Der er erfarne kodere der undrer
sig over at jeg ikke bruger \", men jeg kan godt lide at jeg ser
teksten som den også vil se ud i browseren (altså uden \), og så
benytter jeg mig af at ' kan indlejres i ".

Det er blevet så indarbejdet en vane at jeg nu konsekvent bruger
' i HTML undtagen hvis der er en apostrof der skal omsluttes. I
HTML er der slet ingen forskel på ' og " (bare de er parvis ens).

> Jeg mener jeg bruger de escapede dobbelt pinger når jeg laver SQL
> sætninger i PHP koden, og har så bare gjort det til vane.

Så er der ingen grund til at lave om på den - selv om min metode
sparer en byte pr. anførselstegn i koden.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Kasper Lund (15-06-2006)
Kommentar
Fra : Kasper Lund


Dato : 15-06-06 13:31

On Thu, 15 Jun 2006 14:14:19 +0200, Bertel Lund Hansen wrote:


> Velbekomme.

Du har måske også et svar på hvorfor den anden kode virker fint på min
hjemme server, det virker nu lidt mærkeligt.



Bertel Lund Hansen (15-06-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-06-06 13:39

Kasper Lund skrev:

> Du har måske også et svar på hvorfor den anden kode virker fint på min
> hjemme server, det virker nu lidt mærkeligt.

Næ, det er et mysterium.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Bent Stigsen (15-06-2006)
Kommentar
Fra : Bent Stigsen


Dato : 15-06-06 14:18

Bertel Lund Hansen wrote:

> Kasper Lund skrev:
>
>> Du har måske også et svar på hvorfor den anden kode virker fint på min
>> hjemme server, det virker nu lidt mærkeligt.
>
> Næ, det er et mysterium.

Tror det er fordi "readdir" returnerer filer i den rækkefølge som
filsystemet har dem liggende.

Hvis rækkefølgen tilfældigvis passer med, at det sidst returnerede filnavn
kommer sidst i arrayet efter sorteringen, vil det se ud som om det virker.

--
/Bent

Kasper Lund (16-06-2006)
Kommentar
Fra : Kasper Lund


Dato : 16-06-06 13:23

On Thu, 15 Jun 2006 15:17:38 +0200, Bent Stigsen wrote:

> Tror det er fordi "readdir" returnerer filer i den rækkefølge som
> filsystemet har dem liggende.
>
> Hvis rækkefølgen tilfældigvis passer med, at det sidst returnerede filnavn
> kommer sidst i arrayet efter sorteringen, vil det se ud som om det virker.

Lyder fornuftigt...

Jakob Munck (15-06-2006)
Kommentar
Fra : Jakob Munck


Dato : 15-06-06 16:34

>
> Det var det der skulle til, der er lige et par ting jeg har ændret, så
> det er kommet til at se sådan her ud:
>
> <?php
>
> $i=0;
> $thumbs = '../pics/120x90/'; //mappe til thumnails
> $imgdir = '../pics/800x600/'; // mappe til store billeder
> $allowed_types = array('jpg','JPG'); // filtyper der er tilladte
> $dimg = opendir($thumbs);
>
> $a_img = array();
> while($imgfile = readdir($dimg))
> if (in_array(strtolower(substr($imgfile,-3)),$allowed_types)) $a_img[] =
> $imgfile;
> sort($a_img);
> $i=0;
> foreach ($a_img as $image) {
> echo "<td><a href='pics.php?id=$i'><img src='$thumbs$a_img[$i]'
> width='120' height='90' title='Klik for stort billede'></a></td>\n";
> if (++$i % 3 == 0) echo "<tr></tr>\n";
> }
>
?>

Når jeg kører ovenstående kode på min egen server, og $imgdir peger på en
mappe fuld med store billeder, får jeg bare en tom/hvid browser. Der sker
intet og ingen thumbnails viser sig.

Hvad gør jeg mon galt??

v.h.
Jakob



Bertel Lund Hansen (15-06-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-06-06 16:49

Jakob Munck skrev:

> Når jeg kører ovenstående kode på min egen server, og $imgdir peger på en
> mappe fuld med store billeder, får jeg bare en tom/hvid browser. Der sker
> intet og ingen thumbnails viser sig.

Hvad peger $thumbs på?

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Jakob Munck (15-06-2006)
Kommentar
Fra : Jakob Munck


Dato : 15-06-06 18:04

>
> Hvad peger $thumbs på?
>
> --

Den peger på en tom mappe med navnet "img_thumbnails". Sådan:

$thumbs = 'img_thumbnails/';

og i den mappe er der ingen filer, idet jeg går ud fra, at koden lægger
thumbnails ned her. Men det sker ikke. Der er ingen fejlmelding og browseren
er bare hvid!

Det sker på min egen server og der er fri skriveret til mapperne, men jeg
gør et eller andet - sikkert elementært - forkert. Men hvad?


v.h.
Jakob



Bertel Lund Hansen (15-06-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-06-06 18:14

Jakob Munck skrev:

> Den peger på en tom mappe med navnet "img_thumbnails".

Det er problemet. Scriptet resizer ikke noget. Det henter færdige
frimærker i $thumbs.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Jakob Munck (15-06-2006)
Kommentar
Fra : Jakob Munck


Dato : 15-06-06 19:04


"Bertel Lund Hansen" <nospamfilius@lundhansen.dk> skrev i en meddelelse
news:4491954c$0$12109$ba624c82@nntp02.dk.telia.net...
> Jakob Munck skrev:
>
>> Den peger på en tom mappe med navnet "img_thumbnails".
>
> Det er problemet. Scriptet resizer ikke noget. Det henter færdige
> frimærker i $thumbs.
>
> --

Tak, så har jeg fattet det.

v.h.
Jakob




> Bertel
> http://bertel.lundhansen.dk/ http://fiduso.dk/



Jakob Munck (15-06-2006)
Kommentar
Fra : Jakob Munck


Dato : 15-06-06 19:05

> Det var det der skulle til, der er lige et par ting jeg har ændret, så
> det er kommet til at se sådan her ud:
>
> <?php
>
> $i=0;
> $thumbs = '../pics/120x90/'; //mappe til thumnails
> $imgdir = '../pics/800x600/'; // mappe til store billeder
> $allowed_types = array('jpg','JPG'); // filtyper der er tilladte
> $dimg = opendir($thumbs);
>
> $a_img = array();
> while($imgfile = readdir($dimg))
> if (in_array(strtolower(substr($imgfile,-3)),$allowed_types)) $a_img[] =
> $imgfile;
> sort($a_img);
> $i=0;
> foreach ($a_img as $image) {
> echo "<td><a href='pics.php?id=$i'><img src='$thumbs$a_img[$i]'
> width='120' height='90' title='Klik for stort billede'></a></td>\n";
> if (++$i % 3 == 0) echo "<tr></tr>\n";
> }
>

Du vil vel ikke offentliggøre de andre dele af koden til dette udmærkede
lille galleri?

v.h.
Jakob



Jakob Munck (16-06-2006)
Kommentar
Fra : Jakob Munck


Dato : 16-06-06 06:33

Hej Kasper

ville du have noget imod at offentliggøre resten af koden til dette galleri?

v.h.
Jakob



Kasper Lund (16-06-2006)
Kommentar
Fra : Kasper Lund


Dato : 16-06-06 12:13

On Fri, 16 Jun 2006 07:33:01 +0200, Jakob Munck wrote:

> Hej Kasper
>
> ville du have noget imod at offentliggøre resten af koden til dette galleri?
>
> v.h.
> Jakob

Nej selvfølgelig ikke.

thumbs.php har du allerede.

pics.php ser således ud:

$i = "$_GET[id]";
$next = $i+1;
$prev = $i-1;
$imgdir = '../pics/800x600/'; // mappe til store billeder
$allowed_types = array('jpg','JPG'); // filtyper der er tilladte
$dimg = opendir($imgdir);

<?php
while($imgfile = readdir($dimg))
{
if(in_array(strtolower(substr($imgfile,-3)),$allowed_types))
{
$a_img[] = $imgfile;
sort ($a_img);
}
}
echo "<td><img src=\"$imgdir/$a_img[$i]\" width=\"600\" height=\"450\"></td>\n";
?>

Jeg opretter simpelthen det samme array på den nye side, og sender
variablen $i med over fra thumbs.php så jeg ved hvor den er.

$next havde jeg ellers sat til $i++; men det virkede af mærkelige grunde
ikke, men det her virker.

Så er der selvfølgelig noget html udenom men det kan du jo selv nørkle
med.

/Kasper

Jakob Munck (16-06-2006)
Kommentar
Fra : Jakob Munck


Dato : 16-06-06 16:59

Tak, tak.

v.h.
Jakob


PS. Og tillykke med familieforøgelsen!



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste