Momenteel heb ik een scriptje gemaakt om een map uit te lezen en de foto's weer te geven.
Alleen nu wil ik dat hij na elke tweede regel een <br /> break invoert, maar dit werkt niet.

Wie kan mij helpen?

<?php
$dir = 'includes/fotos/verloving/';
if( file_exists($dir) )							{							
  $allFiles = scandir($dir);
  $files = array_diff($allFiles, array('.', '..'));
  $i = 0;
  foreach ($files as $value)
  {
    $i++;
  ?>
    <figure class="left marg_right1"><a href="<?php echo $dir; echo $value; ?>" class="lightbox-image" data-type="prettyPhoto[group2]"><span></span><img src="<?php echo $dir; echo $value; ?>" height="128" alt="Verloving" style="border:5px solid white"></a></figure>
  <?php
    if ( $i++ % 2 == 0 )
    {
      echo "<br />";
    }
  }
}
else
{
   echo "Helaas, deze foto's zijn nog niet beschikbaar.";
}
?>

@ Obelix en Idefix; Zoals ik al zei had ik de break al vervangen door een woord en dat werd wel vijf keer uitgevoerd, dus het werkt wel goed.
Het wordt alleen vijf keer onder elkaar uitgevoerd en zoals hierboven al werd verteld ligt dat wellicht aan mijn opmaak.

Ik ga vandaag de methode van -SanThe- proberen en wellicht gaat het met een tabel wel lukken.

Ik had het alleen graag zonder tabel gewilt maar ben al blij als het werkt.

2 b continued
Probeer het volgende eens:

<?php

try {
$path = './img/';


if (!is_dir($path)) {
throw new Exception('Het opgegeven folder bestaat niet!');
}

$files = scandir($path);
$files = array_diff($files, ['.', '..']);
$count = count($files);

if (!$count) {
throw new Exception('Helaas, deze foto\'s zijn nog niet beschikbaar.');
}

$i = 0;

foreach ($files as $file) {
if (is_file($path . $file)) {
$i++;

echo '<figure>';
echo '<img src="' .$path . $file .'" alt="' . $i . '">';
echo '</figure>';
echo ($i < $count) ? '<br>' : '';
}
}
} catch (Exception $e) {
echo $e->getMessage();
}
?>
Waarom wordt er geen gebruik gemaakt van de glob functie? dan kan je ook alleen je images ophalen door te filteren op extensie en mocht er andere files tussen zitten worden die gewoon genegeerd. vb:


<?php

$items = array();
foreach (glob("path/naar/dir/*.{png,jpg,jpeg,gif}", GLOB_BRACE) as $filename) {
$items[] = $filename;
}
?>

Zo heb je alles in een mooie array :) het enige wat je dan nog moet doen is met een loop alle foto's ergens weergeven.
Momenteel heb ik het zo werkend met de link van -SanThe-:
<?php
$dir = 'includes/fotos/verloving/';
if( file_exists($dir) )
{
$allFiles = scandir($dir);
$files = array_diff($allFiles, array('.', '..'));
$teller = 0;
$naast_elkaar = 2;
echo '<table>';
foreach ($files as $value)
{
echo ($teller % $naast_elkaar) == 0 ? '<tr>' : '';
echo '<td>';
?>
<figure class="left marg_right1"><a href="<?php echo $dir; echo $value; ?>" class="lightbox-image" data-type="prettyPhoto[group2]"><span></span><img src="<?php echo $dir; echo $value; ?>" height="128" alt="Verloving" style="border:5px solid white"></a></figure>
<?php
echo '<td>';
$teller++;
echo ($teller % $naast_elkaar) == 0 ? '</tr>' : '';
}
echo ($teller % $naast_elkaar) != 0 ? '</tr>' : '';
echo '</table>';
}
else
{
echo "Helaas, deze foto's zijn nog niet beschikbaar.";
}
?>

Alleen nu heb ik het in een tabel terwijl ik het liever los had en dat hij om de twee images een break geeft. Ik vind het in me site mooier als de foto's niet recht onder elkaar staan.
Thanks, ik ga daar is naar kijken.
Ik zat ook al te denken om de div smaller te maken zodat er maar twee naast elkaar passen en hij de 3e dus op een nieuwe rij moet plaatsen.
Punt is alleen dat de ene foto smaller is dan de ander doordat de ene rechtop staat en de ander breed is.

Dus als ik de breedte even breed maak als twee horizontale foto's en er komen daarna 3 verticale foto's achter elkaar dan komen die naast elkaar.

Daarom wilde ik het met een $teller af.
Maar je kunt de foto's op de (maximale) grootte weergeven die je maar wilt en dus kun je er voor zorgen dat ze altijd in je div passen die een vaste hoogte en breedte heeft.

Reageren