/ 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
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>&nbsp;</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 &nbsp;

--
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 &nbsp;

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.

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

Månedens bedste
Årets bedste
Sidste års bedste