18 berichten aan het bekijken - 1 tot 18 (van in totaal 18)
  • Q:
    Bijdrager
    freshface

    [PHP] Foto album vragen en problemen

    Hey,

    Ik heb een simpel fotoalbum gemaakt, je ziet links de thumbs en rechts de foto’s.
    Je kan het hier bekijken: http://www.clubfamous.be/pictures/index.php?path=last_week1

    Maar nu zou ik toch een paar dingen extra waar ik niet weet hoe aan te beginnen.
    Er zou eigenlijk al de eerste foto moeten ingeladen worden.
    En ook zou er een previous en next knop moeten komen.

    Ik dacht om de afbeeldingen in een array te steken en zo met de ‘count’ van de array te gaan werken.

    Dit is de code:
    [code:1:967d176f9f]<div id="container">
    <div id="thumbs">
    <?php
    $path = isset($_GET[’path’]) ? $_GET[’path’] : ‘test’;
    $filter = array(’readme.txt’, ‘test’);
    $thumbs = $path . ‘/thumbs’;
    $large = $path . ‘/large’;
    if ($dir_handle = opendir($thumbs))
    {
    while (false !== ($file = readdir($dir_handle))) // correct way to loop over the directory
    {
    if (!is_dir($file) && $file{0} != ‘.’ && !in_array($file, $filter))
    {
    echo ‘<div id="img"><a href="?path=’ . $path . ‘&large=’ . $file . ‘">’ . ‘<img src="’ . $path . ‘/thumbs/’ . $file . ‘" /></a></div>’;
    }
    }
    closedir($dir_handle);
    } else {
    trigger_error(’Kan de map ‘.$path.’ niet openen’, E_USER_NOTICE);
    }
    ?>
    </div>
    <div id="large">
    <?php
    $path = isset($_GET[’path’]) ? $_GET[’path’] : ‘test’;
    $pathlarge = isset($_GET[’large’]) ? $_GET[’large’] : ‘test’;
    echo ‘<img src="’ . $path . ‘/large/’ . $pathlarge . ‘" />’;
    ?>
    </div>
    </div>[/code:1:967d176f9f]

    Ik weet niet of ik zo juist bezig ben.
    Thx.

    Bijdrager
    Chantal C.

    Is Flickr niks voor je?

    http://www.flickr.com

    Werkt perfect. Foto’s toevoegen kan door uploaden of simpeler door de foto te mailen.

    Bijdrager
    freshface

    Ik ken het, maar het is geen oplossing.

    Bijdrager
    freshface

    niemand die me kan helpen?

    Bijdrager
    mac748

    probeeer dit eens
    [code:1:af66afde31]
    <div id="container">
    <div id="thumbs">
    <?php
    $path = isset($_GET[’path’]) ? $_GET[’path’] : ‘test’;
    $pathlarge = ""; //of een default waarde als je dat wilt
    $filter = array(’readme.txt’, ‘test’);
    $thumbs = $path . ‘/thumbs’;
    $large = $path . ‘/large’;
    if ($dir_handle = opendir($thumbs)) {
    $teller = 0;
    while (false !== ($file = readdir($dir_handle))) { // correct way to loop over the directory
    if (!is_dir($file) && $file{0} != ‘.’ && !in_array($file, $filter)) {
    echo ‘<div id="img"><a href="?path=’ . $path . ‘&large=’ . $file . ‘">’ . ‘<img src="’ . $path . ‘/thumbs/’ . $file . ‘" /></a></div>’;
    $teller++;
    if ($teller == 1) $pathlarge = $file;
    }
    }
    closedir($dir_handle);
    } else {
    trigger_error(’Kan de map ‘.$path.’ niet openen’, E_USER_NOTICE);
    }
    ?>
    </div>
    <div id="large">
    <?php
    if (isset($_GET[’large’]) && $_GET[’large’] != "") $pathlarge = $_GET[’large’];
    echo ‘<img src="’ . $path . ‘/large/’ . $pathlarge . ‘" />’;
    ?>
    </div>
    </div>
    [/code:1:af66afde31]

    Bijdrager
    freshface

    Thx, de eerste foto wordt nu direct ingeladen.
    Zou je me mss iets kunnen vertellen hoe ik een next en previous kan insteken.

    Bijdrager
    mac748

    stop met je while loop de bestands namen in een array
    vevolgens loop je daar doorheen met
    [code:1:661906cf3f]for ($i=0; $i < sizeof(bestandsarray); $i++) {[/code:1:661906cf3f]
    next is dan $i + 1 prev $i – 1 en dan checken of het zin heeft een next of prev button te laten zien aan het begin en eind
    dat gaat wel lukken zo?

    Bijdrager
    basvandorst

    konijn iets met je CSS loopt er niet goed op XP;IE
    http://home.planet.nl/~dorst312/screen2.jpg

    En van die thumbs moet je misschien even de border op 0 zetten

    Bijdrager
    freshface

    Helaas … ik kom er niet uit.

    Ik heb al wat geprutst:

    [code:1:08b1cfc839]<?php
    $path = isset($_GET[’path’]) ? $_GET[’path’] : ‘test’;
    $pathlarge = ""; //of een default waarde als je dat wilt
    $filter = array(’readme.txt’, ‘test’);
    $thumbs = $path . ‘/thumbs’;
    $large = $path . ‘/large’;
    if ($dir_handle = opendir($thumbs)){
    $teller = 0;
    while (false !== ($file = readdir($dir_handle))) { // correct way to loop over the directory
    $foto[] = $file;
    if (!is_dir($file) && $file{0} != ‘.’ && !in_array($file, $filter)){
    echo ‘<div id="img"><a href="?path=’ . $path . ‘&large=’ . $file . ‘">’ . ‘<img src="’ . $path . ‘/thumbs/’ . $file . ‘" /></a></div>’;
    $teller++;
    if ($teller == 1) $pathlarge = $file;
    }
    }
    closedir($dir_handle);
    } else {
    trigger_error(’Kan de map ‘.$path.’ niet openen’, E_USER_NOTICE);
    }
    ?>
    </div>
    <div id="large">
    <?php
    if (isset($_GET[’large’]) && $_GET[’large’] != "") $pathlarge = $_GET[’large’];
    echo ‘<img src="’ . $path . ‘/large/’ . $pathlarge . ‘" />’;
    ?>
    <?php
    echo'<a href="?’ . $teller– . ‘">test</a>’;
    ?>
    [/code:1:08b1cfc839]

    Bijdrager
    mac748

    Er zitten geen mappen in de map met foto’s?
    … Ik ga er even voor zitten.

    Bijdrager
    freshface

    Nee, geen mappen.
    Alleen een map ‘large’ met de grote foto’s en een map ‘thumbs’ met de kleine foto’s
    Alvast bedankt mac748

    Bijdrager
    mac748

    Ik heb je mappenstructuur en je foto’s hier niet, dus het is niet getest.
    [code:1:3dc8e4fa24]<div id="container">
    <div id="thumbs">
    <?php
    $path = (isset($_GET[’path’])) ? $_GET[’path’] : ‘test’;
    $nummer = (isset($_GET[’nbr’]) && is_numeric($_GET[’nbr’])) ? $_GET[’nbr’] : 0; // nul is de eerste
    $pathlarge = ""; //of een default waarde als je dat wilt
    $filter = array(’readme.txt’, ‘test’);
    $thumbs = $path . ‘/thumbs’;
    $large = $path . ‘/large’;
    $foto = "";
    if ($dir_handle = opendir($thumbs)){
    while (false !== ($file = readdir($dir_handle))) { // correct way to loop over the directory
    if (!is_dir($file) && $file{0} != ‘.’ && !in_array($file, $filter)) {
    $foto[] = $file;
    }
    } // nu hebben we een array met alleen foto’s en een key
    closedir($dir_handle);
    } else {
    trigger_error(’Kan de map ‘.$path.’ niet openen’, E_USER_NOTICE);
    }

    if (is_array($foto)) {
    foreach ($foto as $key => $value) { // loop door de array $key is de teller en $value bevat de filename
    echo ‘<div id="img"><a href="?path=’ . $path . ‘&large=’ . $value . ‘">’ . ‘<img src="’ . $path . ‘/thumbs/’ . $value . ‘" /></a></div>’;
    if ($nummer == $key) $pathlarge = $value;
    }
    }
    ?>
    </div>
    <div id="large">
    <?php
    if (isset($_GET[’large’]) && $_GET[’large’] != "") $pathlarge = $_GET[’large’];
    echo ‘<img src="’ . $path . ‘/large/’ . $pathlarge . ‘" />’;
    echo"<a href="?nbr=". $nummer+1 ">next</a>";
    ?>
    </div>
    </div>[/code:1:3dc8e4fa24]

    Bijdrager
    mac748

    En de laatse regel moet natuurlijk
    [code:1:e3fe5aeb1f]echo"<a href="?nbr=". $nummer+1 ."">next</a>"; [/code:1:e3fe5aeb1f]
    zijn.

    Bijdrager
    freshface

    Hey,

    Al zeer bedankt.
    Op http://users.pandora.be/rabbit_design/Other/pics/ kan je de mappenstructuur zien
    Om een album te tonen zal je dan naar http://users.pandora.be/rabbit_design/Other/pics/index.php?path=last_week1 gaan.

    Als ik nu op next druk komt alleen de nbr=1 in de url te staan zonder de andere waarden.

    Bijdrager
    freshface

    Ik heb het dus zo opgelost.

    [code:1:59c52e2cfa]<div id="container">
    <div id="thumbs">
    <?php
    $path=(isset($_GET[’path’])) ? $_GET[’path’] : ‘test’;
    $nummer =(isset($_GET[’nbr’]) && is_numeric($_GET[’nbr’])) ? $_GET[’nbr’] : 0;// nul is de eerste
    $pathlarge = ""; //of een default waarde als je dat wilt
    $filter = array(’readme.txt’, ‘test’);
    $thumbs =$path . ‘/thumbs’;
    $large = $path .’/large’;
    $foto = "";
    if ($dir_handle = opendir($thumbs)){
    while (false !== ($file = readdir($dir_handle))) { // correct way to loop over the directory
    if (!is_dir($file) && $file{0} != ‘.’ && !in_array($file, $filter)) {
    $foto[] = $file;
    }
    }// nu hebben we een array met alleen foto’s en een key
    closedir($dir_handle);
    } else {
    trigger_error(’Kan de map ‘.$path.’ niet openen’, E_USER_NOTICE);
    }

    if (is_array($foto)) {
    foreach ($foto as $key => $value) { // loop door de array $key is de teller en $value bevat de filename
    echo ‘<div id="img"><a href="?path=’ . $path . ‘&large=’ . $value . ‘">’ . ‘<img src="’ . $path . ‘/thumbs/’ . $value . ‘" /></a></div>’;
    if ($nummer == $key) $pathlarge = $value;
    }
    }
    ?>
    </div>
    <div id="large">
    <?php
    echo ‘<img src="’ . $path . ‘/large/’ . $pathlarge . ‘" />’;
    echo ‘<a href="?path=’;
    echo $path;
    echo ‘&large=’;
    echo $value;
    echo ‘&nbr=’;
    echo $nummer+1;
    echo ‘">next</a>’;
    ?>
    </div>
    [/code:1:59c52e2cfa]

    Het lukte me echt niet om alles in echo te steken, raar?!
    Maar het doet nu wat ik wil.
    Nu nog een controle dat het niet verder dan de laatste foto gaat ….

    Bijdrager
    freshface

    Ik zal het hier maar vragen.
    Hoe kan ik een bepaalde positie van een object in een array opvragen ?
    pos() of current() is het niet.

    Bijdrager
    freshface

    Het is opgelost.
    $key was al de positie van een object in de array.

    Bijdrager
    mac748

    Als je dubble aanhalingstekens gebruikt om strings, dan kun de variabele er gewoon tussen zetten. Je moet dan wel de normale quotes escapen.
    [code:1:c0c2786001]echo "<img src="$path/large/$pathlarge" /><a href="?path=$path&large=$value&nbr=". $nummer+1 ."">next</a>"; [/code:1:c0c2786001]

18 berichten aan het bekijken - 1 tot 18 (van in totaal 18)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.