/ 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
Image galleri
Fra : Thomas Demant


Dato : 12-05-02 12:26

Jeg prøver at lave et billede galleri, ud fra den kode der er i tråden
"readdir() og sortering". Så den nu ser sådan ud:

<?php
$sti = "grafik";
$aabn = opendir($sti);
while ($fil = readdir($aabn)) {
if ($fil != "." && $fil != "..") $filer[] = $fil;
}
sort($filer);

echo $filer[9];
for ($i = 0; $i < count($filer); $i++) {
echo "<a href=billede.php?show=".$sti."/".$filer[$i]."
target=_new><img src=".$sti."/".$filer[$i]." border=0 height=100><br>";
echo "<small>".$filer[$i]."</a><br><br></small>";
}
?>

Det giver en lang kolonne af billeder, med deres navn neden under og et link
til billede.php?show=grafik/billedet.jpg. Men hvordan kan jeg få den til at
stille 3-5 koloner ved siden af hinanden? Hvis det indblander MySQL, vil jeg
meget gerne have en ekstra god forklaring, da jeg aldrig har haft brug for
(og derfor heller ikke arbejdet med) MySQL.
|1|
|2|
|3|
Som det er

|1| |2| |3|
|4| |5| |6|
Som det skal være

Er der evt. også en måde, hvor på man kan få scriptet til kun at vise JPG og
GIF, sådan at det overser f.eks. "oversigt.php"?
Eller skal jeg ave en helt anden kode?

--
Thomas



 
 
Lars Petersen (12-05-2002)
Kommentar
Fra : Lars Petersen


Dato : 12-05-02 14:03

> |1|
> |2|
> |3|
> Som det er
>
> |1| |2| |3|
> |4| |5| |6|

Det er et simpelt loop:

$antal = 6;
for ($i = 0;$i < $antal; $i++)
{
if ($i % 3 == 0 && $i != 0)
{
echo '<br>';
}
echo $i+1 . ' ';
}

Det er et eksempel, så må du selv lave resten ;)


--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
To mail me remove your-pants.



Martin Persson (12-05-2002)
Kommentar
Fra : Martin Persson


Dato : 12-05-02 14:21


"Thomas Demant" <thomas.demant@adslhome.dk> wrote in message
news:3cde515f$0$97307$edfadb0f@dspool01.news.tele.dk...
> Jeg prøver at lave et billede galleri, ud fra den kode der er i tråden
> "readdir() og sortering".

>Men hvordan kan jeg få den til at
> stille 3-5 koloner ved siden af hinanden?
> |1|
> |2|
> |3|
> Som det er
>
> |1| |2| |3|
> |4| |5| |6|
> Som det skal være

lav en if sætning inden i for løkken og tæl 3 op med en variabel og så hvis
variablen er 3 skrives der <br> og variablen nulstilles. Noget i den her
stil:

$t = 1 #din variabel til at styre line break med

for ($i = 0; $i < count($filer); $i++) {
echo "<a href=billede.php?show=".$sti."/".$filer[$i]." target=_new><img
src=".$sti."/".$filer[$i]." border=0 height=100>";
echo "<small>".$filer[$i]."</a><br><br></small>";


if($t == 3){ #Hvis variablen er 3 skrives et line break og variablen
nulstilles
echo "<br>";
$t=0;
}
$t++; #læg en til variablen
}

> Er der evt. også en måde, hvor på man kan få scriptet til kun at vise JPG
og
> GIF, sådan at det overser f.eks. "oversigt.php"?

ja du har jo fat i det rigtige når du sorterer . og .. fra du skal bare lave
et regulært udtryk i if sætningen

if ($fil != "." && $fil != ".." && preg_match("/(gif|jpg)$/",$fil))
$filer[] = $fil;

Håber det lykkes for dig
Martin



Flemming Joensson (12-05-2002)
Kommentar
Fra : Flemming Joensson


Dato : 12-05-02 14:32

"Thomas Demant" <thomas.demant@adslhome.dk> wrote in
news:3cde515f$0$97307$edfadb0f@dspool01.news.tele.dk:

> <?php
> $sti = "grafik";
> $aabn = opendir($sti);
> while ($fil = readdir($aabn)) {
> if ($fil != "." && $fil != "..") $filer[] = $fil;
> }
>
> Det giver en lang kolonne af billeder, med deres navn neden under
> og et link til billede.php?show=grafik/billedet.jpg. Men hvordan
> kan jeg få den til at stille 3-5 koloner ved siden af hinanden?
> Hvis det indblander MySQL, vil jeg meget gerne have en ekstra god
> forklaring, da jeg aldrig har haft brug for (og derfor heller ikke
> arbejdet med) MySQL.

Det har intet med mySQL at gøre. Det du taler om er rent layout,
hvilket vil sige HTML-kode.
Tag for løkken og i echo linjerne indsætter du den HTML kode du vil
have så det bliver 3 kolonner. Hvis ikke du kender til HTML, så kan jeg
afsløre at du skal kigge lidt på table, tr og td tags. Selve tjekket
for om der er 3 i en kolonne kan du se ud fra Lars Petersens svar.

> for ($i = 0; $i < count($filer); $i++) {
> echo "<a href=billede.php?show=".$sti."/".$filer[$i]."
> target=_new><img src=".$sti."/".$filer[$i]." border=0
> height=100><br>";
> echo "<small>".$filer[$i]."</a><br><br></small>";
> }


> Er der evt. også en måde, hvor på man kan få scriptet til kun at
> vise JPG og GIF, sådan at det overser f.eks. "oversigt.php"?
> Eller skal jeg ave en helt anden kode?

Jeps
> if ($fil != "." && $fil != "..")
Her laver du blot et tjek på om .jpg eller .gif (eller .png??) er de
sidste 4 tegn i navnet. I stedet for && skal du så bruge || (XOR)
mellem de forskellige extensions.

Flemming

Lars Petersen (12-05-2002)
Kommentar
Fra : Lars Petersen


Dato : 12-05-02 15:54

> > if ($fil != "." && $fil != "..")
> Her laver du blot et tjek på om .jpg eller .gif (eller .png??) er de
> sidste 4 tegn i navnet. I stedet for && skal du så bruge || (XOR)
> mellem de forskellige extensions.

Hans linie er god nok, efter det kunne man checke på extension...
og forresten || er OR (blot én skal være sand) og ikke XOR (netop
én skal være sand) der er ingen forkortelse for XOR,
den skrives sådan:

if (true xor false) echo 'sandt';

:)

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
To mail me remove your-pants.



Flemming Joensson (12-05-2002)
Kommentar
Fra : Flemming Joensson


Dato : 12-05-02 20:46

"Lars Petersen" <lp@your-pants.coder.dk> wrote in
news:tmvD8.961$4f4.105067@news000.worldonline.dk:

>> > if ($fil != "." && $fil != "..")
>> Her laver du blot et tjek på om .jpg eller .gif (eller .png??) er de
>> sidste 4 tegn i navnet. I stedet for && skal du så bruge || (XOR)
>> mellem de forskellige extensions.
>
> Hans linie er god nok, efter det kunne man checke på extension...
> og forresten || er OR (blot én skal være sand) og ikke XOR (netop
> én skal være sand) der er ingen forkortelse for XOR,
> den skrives sådan:

Du har ret - jeg huskede forkert angående XOR.

Men min mening med linjen if ($fil.....) var at det ikke er nødvendigt
at tjekke for om det er . eller .. når han alligevel kun ønsker at
tjekke for om de sidste 4 tegn er ".$ext". Han ønsker jo kun at få sine
billeder med i oversigten og så er det nemmeste at tjekke for
filendelsen, hvis han ville have alle med (lige på nær . og .. så skal
han gøre som han skriver nu). Jeg prøvede bare at lave en lille
forenkling af hans kode.

Det vil selvfølgelig også virke som du skriver med at beholde linjen og
derefter lave et nyt tjek på filendelse, men det første tjek er efter
min mening ikke nødvendigt idet at filendelse tjekket også vil fange .
og .. og derfor ikke vise dem.

Flemming

Thomas Demant (12-05-2002)
Kommentar
Fra : Thomas Demant


Dato : 12-05-02 16:07

> Det har intet med mySQL at gøre. Det du taler om er rent layout,
> hvilket vil sige HTML-kode.
Yep. Men ikke desto mindre har jeg stødt på scripts, der på en eller anden
måde brugte MySQL til at lave indstillingerne i layoutet.
Men under alle omstændighedder: Mange tak for hjælpen.

--
Thomas



-Martin- (12-05-2002)
Kommentar
Fra : -Martin-


Dato : 12-05-02 16:53

[SNIP]
>|1|
>|2|
>|3|
> Som det er
>
>|1| |2| |3|
>|4| |5| |6|

Du har fået en løsning med <br> men jeg forslår lige at bruge <table>
istedet giver LANGT pænere layput :)

$rows = "3";

print "<table>";
filløkken {
if($raekke == 1) { print "<tr>"; }
print "<td>FILEN</td>";
$raekke++;
if($rows < $raekke) { print "<tr>"; $raekke = 1; }
}

Sådan kan det gøres

(PS utestet, men bruger det selv)

-Martin- (12-05-2002)
Kommentar
Fra : -Martin-


Dato : 12-05-02 19:04

On Sun, 12 May 2002 17:53:12 +0200, -Martin- <admin@DELETEnatten-i.dk>
wrote:

>[SNIP]
>>|1|
>>|2|
>>|3|
>> Som det er
>>
>>|1| |2| |3|
>>|4| |5| |6|
>
>Du har fået en løsning med <br> men jeg forslår lige at bruge <table>
>istedet giver LANGT pænere layput :)
>
>$rows = "3";
>
>print "<table>";
>filløkken {
> if($raekke == 1) { print "<tr>"; }
> print "<td>FILEN</td>";
> $raekke++;
> if($rows < $raekke) { print "<tr>"; $raekke = 1; }

skulle være

if($rows > $raekke) { print "</tr>"; $raekke = 1; }

>}
>
>Sådan kan det gøres
>
>(PS utestet, men bruger det selv)

Retter fejl :)

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

Månedens bedste
Årets bedste
Sidste års bedste