|
| 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 :)
| |
|
|