/ 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
Arrays og listning, hvordan kontrolleres a~
Fra : Jakob Munck


Dato : 04-07-06 13:24

Jeg har noget kode, som lister filerne i en mappe som et array, og som
præsenterer dem på en side. Det virker fint. Men jeg har 2 problemer, som
jeg gerne vil finde en løsning på:

1. Hvordan begrænser jeg denne listning. Hvis nu er der 200 filer i mappen,
og jeg kun ønsker at vise de 20 første, hvad skal jeg så gøre?

2. Og hvordan vendes rækkefølgen, som filerne listes i? Nu sker det
alfabetisk a-z, men hvis jeg nu vil lave det z-a, hvad skal jeg så gøre?

Her er koden:

<?php
$i=0;
$thumbs = 'img_thumb/'; //mappe til thumnails
$imgdir = 'img_store/'; // mappe til store billeder
$allowed_types = array('jpg','JPG'); // filtyper der er tilladte
$dimg = opendir($thumbs);

$image = 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='vis_stort.php?id=$i'><img src='$thumbs$image'"
.."width='120' height='90' border='0' title='$image'></a></td>\n";

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

Undskyld min mange spørgsmål om arrays. Hvis nogle har et godt link, som er
forståeligt og hvor jeg kan lære mere om dette, vil jeg godt have det.

v.h.
Jakob



 
 
Bertel Lund Hansen (04-07-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 04-07-06 14:19

Jakob Munck skrev:

> 1. Hvordan begrænser jeg denne listning. Hvis nu er der 200 filer i mappen,
> og jeg kun ønsker at vise de 20 første, hvad skal jeg så gøre?

Så laver du en tæller og afbryder når den når 20. Men den styring
som jeg tror du ønsker, er ret kompleks og må nok hellere vente
til du selv kan hitte ud af den.

Hvis du vil begrænse antallet, kan du ikke bruge den nemme
foreach().

for ($nr=0; $nr<count($a_img); ++$nr) {
   echo nogetvældigsmartmed $a_img[$nr];
   if ($nr==20) break;
}

Men med den løkke kan du ikke komme længere end til 20. Den kan
laves kortere, men jeg har vist hvordan man kan 'overstyre' inde
i en løkke.

> 2. Og hvordan vendes rækkefølgen, som filerne listes i? Nu sker
> det alfabetisk a-z, men hvis jeg nu vil lave det z-a, hvad
> skal jeg så gøre?

Hvis du kun skal bruge den modsatte rækkefølge, skal du bare
bruge rsort() i stedet for sort().

Hvis du først vil sortere og bagefter vende rækkefølgen, kan du
bruge sort() og bagefter array_reverse().

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

Jakob Munck (04-07-2006)
Kommentar
Fra : Jakob Munck


Dato : 04-07-06 17:04


"Bertel Lund Hansen" <nospamfilius@lundhansen.dk> skrev i en meddelelse
news:44aa6ac7$0$1964$ba624c82@nntp02.dk.telia.net...
> Jakob Munck skrev:
>
>> 1. Hvordan begrænser jeg denne listning. Hvis nu er der 200 filer i
>> mappen,
>> og jeg kun ønsker at vise de 20 første, hvad skal jeg så gøre?
>
> Så laver du en tæller og afbryder når den når 20. Men den styring
> som jeg tror du ønsker, er ret kompleks og må nok hellere vente
> til du selv kan hitte ud af den.
>
> Hvis du vil begrænse antallet, kan du ikke bruge den nemme
> foreach().
>
> for ($nr=0; $nr<count($a_img); ++$nr) {
> echo nogetvældigsmartmed $a_img[$nr];
> if ($nr==20) break;
> }
>

Ikke helt let forstår jeg, så det lader jeg ligge.


> Men med den løkke kan du ikke komme længere end til 20. Den kan
> laves kortere, men jeg har vist hvordan man kan 'overstyre' inde
> i en løkke.
>
>> 2. Og hvordan vendes rækkefølgen, som filerne listes i? Nu sker
>> det alfabetisk a-z, men hvis jeg nu vil lave det z-a, hvad
>> skal jeg så gøre?
>
> Hvis du kun skal bruge den modsatte rækkefølge, skal du bare
> bruge rsort() i stedet for sort().
>

Fint.


Tak for hjælpen.

v.h.
Jakob



> Hvis du først vil sortere og bagefter vende rækkefølgen, kan du
> bruge sort() og bagefter array_reverse().
>
> --
> Bertel
> http://bertel.lundhansen.dk/ http://fiduso.dk/



Jesper H (05-07-2006)
Kommentar
Fra : Jesper H


Dato : 05-07-06 15:38


Bertel Lund Hansen skrev:
> for ($nr=0; $nr<count($a_img); ++$nr) {
>    echo nogetvældigsmartmed $a_img[$nr];
>    if ($nr==20) break;
> }
>
> Men med den løkke kan du ikke komme længere end til 20. Den kan
> laves kortere, men jeg har vist hvordan man kan 'overstyre' inde
> i en løkke.
> --
> Bertel
> http://bertel.lundhansen.dk/      http://fiduso.dk/

Får du så ikke 21 værdier? (0, 1, 2, ..., 20)

Hvis man skulle gøre den kortere, kunne man jo evt. sige
for ($nr=0; $nr<min(count($a_img),20); ++$nr) {
   echo nogetvældigsmartmed $a_img[$nr];
}

--
Mvh Jesper, http://fdf.dk/landsdel1/


Bertel Lund Hansen (05-07-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 05-07-06 17:22

Jesper H skrev:

> Får du så ikke 21 værdier? (0, 1, 2, ..., 20)

Jo, faktisk.

> Hvis man skulle gøre den kortere

Ja, men den er ikke særlig nyttig. Derfor lavede jeg den ikke
færdig.

Det han ønsker sig, er at kunne kalde samme side med parametre
der ændrer sig for hver gang så man kan få et vilkårligt udpluk
af listen vist 20 ad gangen.

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

Jakob Munck (05-07-2006)
Kommentar
Fra : Jakob Munck


Dato : 05-07-06 18:16

> Det han ønsker sig, er at kunne kalde samme side med parametre
> der ændrer sig for hver gang så man kan få et vilkårligt udpluk
> af listen vist 20 ad gangen.
>
> --


Nej, det jeg ønsker er at kunne vise f.eks. 10 ud af de 200 filer i
galleri-mappen, på forsiden af en website, så man (på forsiden) får et lille
indblik i, hvad der er i galleriet uden at se alle filerne.

v.h.
Jakob



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


Dato : 06-07-06 08:00

Jakob Munck skrev:

> Nej, det jeg ønsker er at kunne vise f.eks. 10 ud af de 200 filer i
> galleri-mappen, på forsiden af en website, så man (på forsiden) får et lille
> indblik i, hvad der er i galleriet uden at se alle filerne.

Du kan bruge Jesper H's opskrift hvis det er okay at det er de 10
første filnavne du får fat i (ret 20 til 10).

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

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


Dato : 06-07-06 10:47

>
> Du kan bruge Jesper H's opskrift hvis det er okay at det er de 10
> første filnavne du får fat i (ret 20 til 10).
>

Du har ret. Efter at have eksperimenteret med det, er det lykkedes for mig
at få det til at virke som det skal ved at bruge den foreslåede kode. Her er
resultat:

<?php
$i=0;
$thumbs = 'img_thumb/'; //mappe til thumnails
$imgdir = 'img_store/'; // mappe til store billeder
$allowed_types = array('jpg','JPG'); // filtyper der er tilladte
$dimg = opendir($thumbs);
$image = array();
while($imgfile = readdir($dimg))

if (in_array(strtolower(substr($imgfile,-3)),$allowed_types)) $a_img[] =
$imgfile;
sort($a_img);
$i=0;

for ($nr=0; $nr<min(count($a_img),20); ++$nr) {
echo "<td align='center'><img src='$thumbs$a_img[$nr]'" ."width='120'
height='90' border='0' title='$image2'></td>\n";

//antal billeder pr. række:
$a = 2;
if (++$i % $a == 0) echo "<tr></tr>\n";

//antallet som skal vises:
if ($nr==5) break;
}
?>

Mange tak til jer begge for hjælpen. Jeg har fået lavet et super galleri
(synes jeg selv). Hvis nogle vil have koden (ud over ovenstående), er de
velkomne.

v.h.
Jakob



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste