|
| PHP-genereret tabel Fra : Jonas Voss |
Dato : 08-03-03 18:12 |
|
Det er garanteret så latterligt let at lave, at i klasker jeg på
lårene over dette spørgsmål, men jeg kan simpelthen ikke få ind i mit
hoved hvordan jeg laver en tabel, der kan generere mere end én række
fordelt på flere kolonner, eller mere end én kolonne fordelt på flere
rækker.
Hvis i er færdige at grine, så kommer jeg til kernen i mit spørgsmål
nu (:
Jeg prøver at lave et PHP-genereret galleri vha. GD-lib, og det går
indtil videre strålende, bl.a. med lidt hjælp fra jer. Nu vil jeg
gerne have væltet mine fine thumbnails ud på en side med f.eks. 5
kolonner. Mine thumbnails ligger i et array ($thumb), og jeg trawler
igennem arrayet Således:
print "<table>";
$fd = opendir("$dir");
$i = 0;
$thumb = array();
while (false !== ($thumb = readdir($fd))) {
if (eregi("\.jpg$", $thumb)) {
$thumb[$i] = $thumb;
print "<tr><td>";
print "<img src=\"thumbs/".$thumb[$i]."\" />";
print "</td></tr>";
$i++;
}
}
closedir($fd);
print "</table>";
Jeg kan ikke få ind i mit hoved hvordan jeg f.eks. får den til at lave
en tabel med 5 kolonner, og ligeså mange rækker der nu skal til for at
vise alle thumbs i den mappe der er åbnet.
Er der nogen der ligger inde med de vises sten, og som har lyst til at
dele dem med mig?
--
| Jonas @ 55.75, 12.42 | < http://verture.net/> |
"Time is an illusion. Lunchtime doubly so."
| |
Jens Tønnesen (09-03-2003)
| Kommentar Fra : Jens Tønnesen |
Dato : 09-03-03 09:20 |
|
Jonas Voss <voss@null.dk> skrev i
dk.edb.internet.webdesign.serverside.php:
>Nu vil jeg
>gerne have væltet mine fine thumbnails ud på en side med f.eks. 5
>kolonner. Mine thumbnails ligger i et array ($thumb), og jeg trawler
>igennem arrayet Således:
>print "<table>";
>$fd = opendir("$dir");
>$i = 0;
$j = 0;
$antalkolonner = 5;
>$thumb = array();
>while (false !== ($thumb = readdir($fd))) {
> if (eregi("\.jpg$", $thumb)) {
> $thumb[$i] = $thumb;
if ($j>$antalkolonner) {
print "</tr>";
$j=0;
}
if ($j==0) {
print "<tr>";
}
print "<td><img src=\"thumbs/" . $thumb[$i] . "\" /></td>";
j++;
> $i++;
> }
>}
>closedir($fd);
while ($j<$antalkolonner) {
print "<td> </td>";
$j++;
}
print "</tr>";
>print "</table>";
Ikke testet...
--
Jens Tønnesen - http://www.pressefoto.dk
| |
Jonas Voss (09-03-2003)
| Kommentar Fra : Jonas Voss |
Dato : 09-03-03 12:10 |
|
In dk.edb.internet.webdesign.serverside.php, Jens Tønnesen wrote:
[...kode...]
> Ikke testet...
Med nogle få rettelser, som blot var fejl i mit eget script virker det
nu perfekt, og jeg forstår det endda. Mange tak for hjælpen.
--
| Jonas @ 55.75, 12.42 | < http://verture.net/> |
Hosting a site with .htm files is
like wearing a "Kick Me" sign on your back.
| |
Mads Lie Jensen (09-03-2003)
| Kommentar Fra : Mads Lie Jensen |
Dato : 09-03-03 09:47 |
|
On Sat, 8 Mar 2003 18:11:42 +0100, Jonas Voss <voss@null.dk> wrote:
>Det er garanteret så latterligt let at lave, at i klasker jeg på
>lårene over dette spørgsmål, men jeg kan simpelthen ikke få ind i mit
Bestemt ikke. De fleste har formentlig været i en situation som ligner
din
>Jeg kan ikke få ind i mit hoved hvordan jeg f.eks. får den til at lave
>en tabel med 5 kolonner, og ligeså mange rækker der nu skal til for at
>vise alle thumbs i den mappe der er åbnet.
>
>Er der nogen der ligger inde med de vises sten, og som har lyst til at
>dele dem med mig?
Følgende er ikke testet og er heller ikke perfekt, men du kan sikkert se
ideen i det:
$columns = 2;
$files = array('fil1', 'fil2', 'fil3');
echo "<table>";
for ($i=0; $i<count($files); $i += $columns) {
echo "<tr>";
for ($c=0; $c<$columns; $c++) {
echo "<td>".$files[$i + $c]."</td>";
}
echo "</tr>";
}
echo "</table>";
Den består af to loops, den første(for ($i ..)) kører over hver række i
html-tabellen. Den anden (for ($c ..)) laver cellerne.
(Her køres der så over en array, og jeg tror også det nemmeste er hvis
du først indlæser filerne som skal vises i en array og derefter
udskriver html-tabellen.)
--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Lær af andres fejl
- du lever alligevel ikke længe nok til selv at prøve dem alle.
| |
Jonas Voss (09-03-2003)
| Kommentar Fra : Jonas Voss |
Dato : 09-03-03 12:21 |
|
In dk.edb.internet.webdesign.serverside.php, Mads Lie Jensen wrote:
> Følgende er ikke testet og er heller ikke perfekt, men du kan sikkert se
> ideen i det:
>
> $columns = 2;
> $files = array('fil1', 'fil2', 'fil3');
> echo "<table>";
> for ($i=0; $i<count($files); $i += $columns) {
> echo "<tr>";
> for ($c=0; $c<$columns; $c++) {
> echo "<td>".$files[$i + $c]."</td>";
> }
> echo "</tr>";
> }
> echo "</table>";
>
> Den består af to loops, den første(for ($i ..)) kører over hver række i
> html-tabellen. Den anden (for ($c ..)) laver cellerne.
>
> (Her køres der så over en array, og jeg tror også det nemmeste er hvis
> du først indlæser filerne som skal vises i en array og derefter
> udskriver html-tabellen.)
Mange tak! Jeg bruger pt. Jens Tønnesens forslag, det virkede stort
set med det samme. Men din løsning ser mere elegant ud, men jeg kan
bare ikke helt få den til at spille. Må kigge lidt mere på den inden
jeg kommer med flere spørgsmål.
Endnu en gang tak.
--
| Jonas @ 55.75, 12.42 | < http://verture.net/> |
"Time is an illusion. Lunchtime doubly so."
| |
Jens Tønnesen (09-03-2003)
| Kommentar Fra : Jens Tønnesen |
Dato : 09-03-03 12:46 |
|
Jonas Voss <voss@null.dk> skrev i
dk.edb.internet.webdesign.serverside.php:
>(...) din løsning ser mere elegant ud
Mads' løsning er mere elegant (færre liniers kode), men så vidt jeg
kan se af det problem, at antallet af billeder skal være et multiplum
af antallet af kolonner.
Min løsning, som indrømmet bevidst er skrevet mere pædagogisk, tager
højde for dette ved at fylde evt. overskydende celler op med
--
Jens Tønnesen - http://www.pressefoto.dk
| |
Jonas Voss (09-03-2003)
| Kommentar Fra : Jonas Voss |
Dato : 09-03-03 13:17 |
|
In dk.edb.internet.webdesign.serverside.php, Jens Tønnesen wrote:
> Mads' løsning er mere elegant (færre liniers kode), men så vidt jeg
> kan se af det problem, at antallet af billeder skal være et multiplum
> af antallet af kolonner.
Ja, det er måske det der er i vejen.
> Min løsning, som indrømmet bevidst er skrevet mere pædagogisk, tager
> højde for dette ved at fylde evt. overskydende celler op med
Det er meget smart, og ja, den var meget pædagogisk, selv jeg forstod
den jo (:
Endnu engang tak for hjælpen.
--
| Jonas @ 55.75, 12.42 | < http://verture.net/> |
"When I eat a biscuit," said Arthur, "it stays eaten."
| |
Mads Lie Jensen (09-03-2003)
| Kommentar Fra : Mads Lie Jensen |
Dato : 09-03-03 14:25 |
|
On Sun, 09 Mar 2003 12:46:12 +0100, Jens Tønnesen
<01-2003nospam@pressefoto.dk> wrote:
>Jonas Voss <voss@null.dk> skrev i
>dk.edb.internet.webdesign.serverside.php:
>
>>(...) din løsning ser mere elegant ud
>
>Mads' løsning er mere elegant (færre liniers kode), men så vidt jeg
>kan se af det problem, at antallet af billeder skal være et multiplum
>af antallet af kolonner.
Ja, der er ikke noget tjek af om der er flere billeder.
Dvs. når den når ud over det sidste element i array'en $files så
udskriver den disse, men de er tomme, dvs. den skriver tomme celler.
Og selv om der ikke er indhold, så skal <td></td> stadig med, for at
tabellen bliver 'rigtig'. (Ellers vil den sidste række i tabellen kun
være delvis fyldt )
Så det inderste loop kunne se ud som:
for ($c=0; $c<$columns; $c++) {
echo "<td>"
if (($i+$c) <= count($files)) {
echo $files[$i + $c]
}
echo "</td>";
}
--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Lær af andres fejl
- du lever alligevel ikke længe nok til selv at prøve dem alle.
| |
|
|