scripts wat foto's oproept heeft alleen navigatie naar links..
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:
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]
kijk hier om het probleem te zien: http://pjpn.nl/test/
dit is de code dit ik gebruik:
Code (php)
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
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'>«</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'>»</a>";
}
echo "<p class='photo'>".implode(" | ",$opbouw)."</p>";
} else {
echo "kan map niet lezen";
}
?>
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'>«</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'>»</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
Je zit bij firstfind.nl dus ik kom niet op die site.
Foute DNS (Klik).
Foute DNS (Klik).
Gewijzigd op 07/06/2010 15:17:18 door - SanThe -
huh? wat houdt dat in? en wat kan ik daar aan doen?
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.
dat vind ik ook zeker. was tot nu toe altijd wel tevreden over ze.
ik heb ze al gemaild.
ik heb ze al gemaild.
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.
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?
is daar een verklaring voor?
Hoe anders?
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
« | » | 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
Dit is wat je wilt denk ik :P
Code (php)
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
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'>«</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'>»</a>";
}
// En printen maar
echo "<p class='photo'>".implode(" | ",$opbouw)."</p>";
} else {
echo "kan map niet lezen";
}
?>
// 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'>«</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'>»</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
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
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
Hoera, PHP4?
hehe
Dit wordt dan je nieuwe bovenkant. Vervangen tot $img = array_reverse uiteraard.
hehe
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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);
?>
// 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.
oooo zou dat het zijn..
dat ik op mijn localhost php5 heb draaien en mijn hoster php4?
ik ga het proberen!
dat ik op mijn localhost php5 heb draaien en mijn hoster php4?
ik ga het proberen!
Ontzettend bedankt Pieter,
Dit was inderdaad precies wat ik zocht!
Dit was inderdaad precies wat ik zocht!
Graag gedaan.
Pieter, ik zie nu dat ze niet op volgorde staan.
de nieuwst toegevoegde foto's staan ergens bijna achteraan ipv als eerste
de nieuwst toegevoegde foto's staan ergens bijna achteraan ipv als eerste
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)
picture-88.jpg
picture-89.jpg
de foto met het hoogste nummer zou als eerst getoond moeten worden
(net als in het originele script)




