scripts wat foto's oproept heeft alleen navigatie naar links..
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
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.
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.
is daar een verklaring voor?
Hoe anders?
« | » | 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
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
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
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.
dat ik op mijn localhost php5 heb draaien en mijn hoster php4?
ik ga het proberen!
Dit was inderdaad precies wat ik zocht!
Graag gedaan.
de nieuwst toegevoegde foto's staan ergens bijna achteraan ipv als eerste
picture-88.jpg
picture-89.jpg
de foto met het hoogste nummer zou als eerst getoond moeten worden
(net als in het originele script)