scripts wat foto's oproept heeft alleen navigatie naar links..

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peps from Yesterday

Peps from Yesterday

07/06/2010 11:31:12
Quote Anchor link
Ik heb een script wat foto's uit een map oproept. wanneer er meer dan 10 foto's in de map staan wordt het (foto-selectie)menu geclusterd. ik heb dan echter alleen navigatie naar links, en maar af en toe naar rechts.

kijk hier om het probleem te zien: http://pjpn.nl/test/

dit is de code dit ik gebruik:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
    if ($handle = opendir("images")) {
        $img = array();
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                $img[] = $file;
            }
        }

        natsort($img);
        $img = array_reverse($img);
        if ($_SERVER["REQUEST_METHOD"] == "GET" && isset($_GET["p"]) && array_key_exists($_GET["p"],$img)) {
            $p = $_GET["p"];
        }
else {
            $p = 0;
        }

        echo "<center><img src='images/".$img[$p]."' /><center><br />";
        $opbouw = array();
        if (array_key_exists(($p-1),$img)) {
            $opbouw[] = "<a href='?p=".($p-1)."' class='arrow'>&laquo;</a>";
        }

        $aantal = count($img)-1;
        if ($aantal > 10) {
            if (($p-2)>0 && ($p+2)<=$aantal) {
                $img = array_slice($img, ($p-2), 5, true);
            }
elseif ($p <= 5) {
                $img = array_slice($img, 0, 5, true);
            }
elseif ($p >= ($aantal-5)) {
                $img = array_slice($img, ($aantal-5), 5, true);
            }
else {
                die("epic fail");
            }

            for ( $n = 0; $n <= $aantal; $n += ceil($aantal/5)) {
                if (!array_key_exists(intval($n),$img)) {
                    $img[$n] = "-";
                }
            }

            if (!array_key_exists($aantal,$img)) {
                $img[$aantal] = "-";
            }

            ksort($img);
        }
        
        foreach ($img as $id => $plaatje) {
            if ($p == $id) {
                $opbouw[] = $id;
            }
else {
                $opbouw[] = "<a href='?p=".$id."'>".$id."</a> ";
            }
        }

        if (array_key_exists(($p+1),$img)) {
            $opbouw[] = "<a href='?p=".($p+1)."' class='arrow'>&raquo;</a>";
        }

        echo "<p class='photo'>".implode(" | ",$opbouw)."</p>";
    }
else {
        echo "kan map niet lezen";
    }

?>


als er bv 18 foto's in de map zitten, wordt er alleen navigatie naar rechts getoond bij de volgende foto's: 16,15,11,7,3..

alvast mijn dank!

Binnen de 24 uur geen nieuwe post plaatsen, graag uw huidige post wijzigen (niet bumpen).[/modedit]
Gewijzigd op 07/06/2010 19:39:52 door Tom Beuckelaere
 
PHP hulp

PHP hulp

26/12/2024 03:43:37
 
- SanThe -

- SanThe -

07/06/2010 15:14:24
Quote Anchor link
Je zit bij firstfind.nl dus ik kom niet op die site.
Foute DNS (Klik).
Gewijzigd op 07/06/2010 15:17:18 door - SanThe -
 
Peps from Yesterday

Peps from Yesterday

07/06/2010 15:19:30
Quote Anchor link
huh? wat houdt dat in? en wat kan ik daar aan doen?
 
- SanThe -

- SanThe -

07/06/2010 15:25:44
Quote Anchor link
Firstfind heeft geen nette DNS, dat moeten zij zelf (al jaren) in orde maken. Maar er zijn niet zo heel veel mensen die daar last van hebben. Ik vind het alleen zeer onprofessioneel.
 
Peps from Yesterday

Peps from Yesterday

07/06/2010 15:27:34
Quote Anchor link
dat vind ik ook zeker. was tot nu toe altijd wel tevreden over ze.
ik heb ze al gemaild.
 

07/06/2010 16:01:35
Quote Anchor link
Lijkt me, als je nu dus problemen hebt, dat het dan handiger is om het pijltje naar rechts te genereren voor je de opbouw genereert. Volgens mij komt het doordat je die array sliced.
 
Peps from Yesterday

Peps from Yesterday

07/06/2010 16:45:15
Quote Anchor link
ja, dat was het probleem inderdaad! maar, ik zie nu dat het scripts anders reageert wanneer ik het thuis draai (op de localhost), dan wanneer het online gedraaid wordt.

is daar een verklaring voor?
 

07/06/2010 21:42:43
Quote Anchor link
Hoe anders?
 
Peps from Yesterday

Peps from Yesterday

09/06/2010 14:44:13
Quote Anchor link
zo ziet het menu er online uit:
« | » | 0 | 4 | 8 | 12 | 16 | 17

zo op de localhost, precies dezelfde code gebruikt:
« | » | 0 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 20 | 21

beide staan nu op foto nr 8.

ik vind dit raar
 
Pieter van Linschoten

Pieter van Linschoten

09/06/2010 17:47:14
Quote Anchor link
Dit is wat je wilt denk ik :P

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?
// map waar we zoeken
$dir = 'images';
$aantal_resultaten = 9;

// Setten van arrays
$ids = array();
$opbouw = array();

// Check of map gelezen kan worden.
if ($handle = scandir($dir)) {
        // . en .. eruit slopen
    unset($handle[0],$handle[1]);
      
    // order by array Value
        natsort($handle);

        // Zorg dat de keys weer normale volgorde zijn
        $img = array_reverse($handle);
        
        // voeg een lege string aan array toe, om tellen bij 1 te laten beginnen.
        array_unshift($img,'');
        
        // Controleer op P
        if ($_SERVER["REQUEST_METHOD"] == "GET" && isset($_GET["p"]) && array_key_exists($_GET["p"],$img)) {
            $p = $_GET["p"];
        }
else {
            $p = 1;
        }

        
        // Huidige pagina plaatje laden
        echo "<center><img src='".$dir."/".$img[$p]."' /><center><br />";

        // even alle images doorlopen
        foreach($img as $id => $link){
            
            // Voeg elke keer een id toe aan de array
            // Maar, indien het maximum is bereikt
            // DUS: $p + ($aantal resultaten/2) < $id EN $id > aantal resultaten
            //
            // Zorgt ervoor dat er altijd evenveel resultaten zijn, ongeacht de start positie, mits er genoeg resultaten ZIJN.

            if($p + ceil($aantal_resultaten/2) < $id && $id > $aantal_resultaten){
                // Niet toevoegen.
            }else{
                $ids[$id] = $id;    
            }
    
            
            // wanneer het aantal aantal_resultaten dat weergeven wordt is bereikt, unset eerste
            if(count($ids) == $aantal_resultaten + 1){
                unset($ids[$id-$aantal_resultaten]);
            }
            
        }

      
        // Vorige knopje
        if (array_key_exists(($p-1),$ids)) {
            $opbouw[] = "<a href='?p=".($p-1)."' class='arrow'>&laquo;</a>";
        }

        
        // Snel linkjes maken
        foreach ($ids as $id => $id) {
            if ($p == $id) {
                $opbouw[] = $id;
            }
else {
                $opbouw[] = "<a href='?p=".$id."'>".$id."</a> ";
            }
        }

        
        // Volgende knopje
        if (array_key_exists(($p+1),$ids)) {
            $opbouw[] = "<a href='?p=".($p+1)."' class='arrow'>&raquo;</a>";
        }

        
        // En printen maar
        echo "<p class='photo'>".implode(" | ",$opbouw)."</p>";
        
    }
else {
        echo "kan map niet lezen";
    }

?>
Gewijzigd op 09/06/2010 17:48:16 door Pieter van Linschoten
 
Peps from Yesterday

Peps from Yesterday

09/06/2010 18:01:58
Quote Anchor link
hoi Pieter,

thanks voor de reactie!

krijg nu deze foutmelding in jouw script:
Fatal error: Call to undefined function: scandir() in /home/pjpn.nl/test/photos.php on line 11
 
Pieter van Linschoten

Pieter van Linschoten

09/06/2010 18:05:17
Quote Anchor link
Hoera, PHP4?

hehe


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
// map waar we zoeken
$dir = 'images';
$aantal_resultaten = 9;

// Setten van arrays
$ids = array();
$opbouw = array();

// Check of map gelezen kan worden.


if ($handle = opendir($dir)) {
        $img = array();
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                $img[] = $file;
            }
        }


        // Zorg dat de keys weer normale volgorde zijn
        $img = array_reverse($img);
?>


Dit wordt dan je nieuwe bovenkant. Vervangen tot $img = array_reverse uiteraard.
 
Peps from Yesterday

Peps from Yesterday

09/06/2010 18:07:18
Quote Anchor link
oooo zou dat het zijn..
dat ik op mijn localhost php5 heb draaien en mijn hoster php4?

ik ga het proberen!
 
Peps from Yesterday

Peps from Yesterday

09/06/2010 18:09:27
Quote Anchor link
Ontzettend bedankt Pieter,

Dit was inderdaad precies wat ik zocht!
 
Pieter van Linschoten

Pieter van Linschoten

09/06/2010 18:30:04
Quote Anchor link
Graag gedaan.
 
Peps from Yesterday

Peps from Yesterday

09/06/2010 18:43:52
Quote Anchor link
Pieter, ik zie nu dat ze niet op volgorde staan.

de nieuwst toegevoegde foto's staan ergens bijna achteraan ipv als eerste
 
Peps from Yesterday

Peps from Yesterday

10/06/2010 14:56:22
Quote Anchor link
de foto's worden opgeslagen als:
picture-88.jpg
picture-89.jpg

de foto met het hoogste nummer zou als eerst getoond moeten worden
(net als in het originele script)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.