For-loop afkappen en doorlopen
Ik ben bezig met een pagina nummering voor reacties.
Op het moment dat het aantal pagina's meer is dan 11 wordt het een chaos. Daarom wil ik er een structuur in maken.
Wanneer er dus meer pagina's zijn dan 11, moet het volgende worden weergegeven:
In dit voorbeeld heb ik in totaal 15 pagina's
Als ik op de 1ste pagina ben
1 2 3 || 13 14 15
Als ik op de 3de pagina ben
1 2 3 4 || 13 14 15
Als ik op de 6de pagina ben
1 2 3 || 5 6 7 || 13 14 15
Als ik op de 7de pagina ben
1 2 3 || 6 7 8 || 13 14 15
Als ik op de 10de pagina ben
1 2 3 || 9 10 11 || 13 14 15
Als ik op de 11de pagina ben
1 2 3 || 10 11 12 13 14 15
Ik ben al met van alles bezig geweest. Krijg er geen logica in :(
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
81
82
83
84
85
86
87
88
89
90
91
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
81
82
83
84
85
86
87
88
89
90
91
<?php
$aCharacters = Range(1, 120);
$iTotalCharacters = Count($aCharacters);
$iCurrent = IsSet($_GET['p']) ? $_GET['p'] : 1;
$bg = 1;
$iIf = 0;
For($iPage = 1; $iPage <= $iTotalCharacters; $iPage++)
{
echo ' <a href="c.php?p='.$iPage.'">'.$iPage.'</a> ';
If($iTotalCharacters > 11)
{
If($iCurrent >= 6 && $iPage == 3)
{
echo '||1||';
$iPage = $iCurrent - 2;
$iIf = 1;
}
If($iIf == 1)
{
If($iCurrent <= $iTotalCharacters - 5)
{
If($iCurrent == $iTotalCharacters - 5)
{
echo '||2||';
$iPage = $iTotalCharacters - 3;
$iIf = 'end';
}
}
}
/*If($iCurrent <= 7)
{
If($iPage >= 3 && $iCurrent >= 6)
{
echo '||1||';
$iPage = $iTotalCharacters - 3;
}
}
Else
{
If($iCurrent < $iTotalCharacters - 3 && $iPage > $iTotalCharacters - 2)
{
echo '||2||';
$iPage = $iTotalCharacters - 2;
}
ElseIf($iCurrent > 5 && $iPage < $iTotalCharacters - 3)
{
echo 'STOP';
$iPage = $iTotalCharacters;
}
}*/
/*
If($iCurrent > 5 && $iCurrent < $iTotalCharacters - 2)
{
If($iPage == 3)
{
echo '||1||';
$iPage = $iCurrent - 2;
}
ElseIf($iCurrent == $iTotalCharacters - 2)
{
echo '||2||';
$iPage = $iTotalCharacters - 1;
}
ElseIf($iPage == $iCurrent + 1)
{
echo '||3||';
$iPage = $iTotalCharacters - 3;
}
}
ElseIf($iCurrent <= 6)
{
If($iPage == 6)
{
$iPage = $iTotalCharacters - 3;
}
}*/
}
$bg++;
if($bg == $iTotalCharacters)
{
$iPage = $iTotalCharacters;
}
}
?>
$aCharacters = Range(1, 120);
$iTotalCharacters = Count($aCharacters);
$iCurrent = IsSet($_GET['p']) ? $_GET['p'] : 1;
$bg = 1;
$iIf = 0;
For($iPage = 1; $iPage <= $iTotalCharacters; $iPage++)
{
echo ' <a href="c.php?p='.$iPage.'">'.$iPage.'</a> ';
If($iTotalCharacters > 11)
{
If($iCurrent >= 6 && $iPage == 3)
{
echo '||1||';
$iPage = $iCurrent - 2;
$iIf = 1;
}
If($iIf == 1)
{
If($iCurrent <= $iTotalCharacters - 5)
{
If($iCurrent == $iTotalCharacters - 5)
{
echo '||2||';
$iPage = $iTotalCharacters - 3;
$iIf = 'end';
}
}
}
/*If($iCurrent <= 7)
{
If($iPage >= 3 && $iCurrent >= 6)
{
echo '||1||';
$iPage = $iTotalCharacters - 3;
}
}
Else
{
If($iCurrent < $iTotalCharacters - 3 && $iPage > $iTotalCharacters - 2)
{
echo '||2||';
$iPage = $iTotalCharacters - 2;
}
ElseIf($iCurrent > 5 && $iPage < $iTotalCharacters - 3)
{
echo 'STOP';
$iPage = $iTotalCharacters;
}
}*/
/*
If($iCurrent > 5 && $iCurrent < $iTotalCharacters - 2)
{
If($iPage == 3)
{
echo '||1||';
$iPage = $iCurrent - 2;
}
ElseIf($iCurrent == $iTotalCharacters - 2)
{
echo '||2||';
$iPage = $iTotalCharacters - 1;
}
ElseIf($iPage == $iCurrent + 1)
{
echo '||3||';
$iPage = $iTotalCharacters - 3;
}
}
ElseIf($iCurrent <= 6)
{
If($iPage == 6)
{
$iPage = $iTotalCharacters - 3;
}
}*/
}
$bg++;
if($bg == $iTotalCharacters)
{
$iPage = $iTotalCharacters;
}
}
?>
Van alles al geprobeerd.
Iemand een idee?
M.v.g.
Dennis Mertens
misschien heb ja daar wat aan?
Hier ben ik nu mee bezig:
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
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
<?php
$aCharacters = Range(1, 120);
$iTotalCharacters = Count($aCharacters);
$iCurrent = IsSet($_GET['p']) ? $_GET['p'] : 1;
$bg = 1;
$iIf = 0;
For($iPage = 1; $iPage <= $iTotalCharacters; $iPage++)
{
echo ' <a href="c.php?p='.$iPage.'">'.$iPage.'</a> ';
If($iTotalCharacters > 11)
{
If($iCurrent > 5 && $iCurrent < $iTotalCharacters - 2)
{
If($iPage == 3)
{
echo '||1||';
$iPage = $iCurrent - 2;
}
ElseIf($iCurrent == $iTotalCharacters - 2)
{
echo '||2||';
$iPage = $iTotalCharacters - 1;
}
ElseIf($iPage == $iCurrent + 1)
{
echo '||3||';
$iPage = $iTotalCharacters - 3;
}
}
ElseIf($iCurrent <= 6)
{
If($iPage == 6)
{
echo '||5||';
$iPage = $iTotalCharacters - 3;
}
ElseIf($iCurrent >= 3 && $iPage == $iCurrent + 1)
{
echo '||4||';
$iPage = $iTotalCharacters - 3;
}
}
}
$bg++;
if($bg == $iTotalCharacters)
{
$iPage = $iTotalCharacters;
}
}
?>
$aCharacters = Range(1, 120);
$iTotalCharacters = Count($aCharacters);
$iCurrent = IsSet($_GET['p']) ? $_GET['p'] : 1;
$bg = 1;
$iIf = 0;
For($iPage = 1; $iPage <= $iTotalCharacters; $iPage++)
{
echo ' <a href="c.php?p='.$iPage.'">'.$iPage.'</a> ';
If($iTotalCharacters > 11)
{
If($iCurrent > 5 && $iCurrent < $iTotalCharacters - 2)
{
If($iPage == 3)
{
echo '||1||';
$iPage = $iCurrent - 2;
}
ElseIf($iCurrent == $iTotalCharacters - 2)
{
echo '||2||';
$iPage = $iTotalCharacters - 1;
}
ElseIf($iPage == $iCurrent + 1)
{
echo '||3||';
$iPage = $iTotalCharacters - 3;
}
}
ElseIf($iCurrent <= 6)
{
If($iPage == 6)
{
echo '||5||';
$iPage = $iTotalCharacters - 3;
}
ElseIf($iCurrent >= 3 && $iPage == $iCurrent + 1)
{
echo '||4||';
$iPage = $iTotalCharacters - 3;
}
}
}
$bg++;
if($bg == $iTotalCharacters)
{
$iPage = $iTotalCharacters;
}
}
?>
Voorbeeld wat ik heb:
Totaal pagina's: 120
Huidige pagina: 35
1 2 3 || 34 35 36 || 118 119 120
Als ik op 116 ben:
1 2 3 ||1|| 115 116 117 ||3|| 118 119 120
Als ik op 117 ben:
1 2 3 ||1|| 116 117 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||3|| 118 ||
Ik weet opzich waar het aan ligt. iPage omhoog zetten kan wel. Maar naar beneden komt hij langs vele nog een keer. Dus ik denk dat ik nog een variabele laat mee tellen en dit de huidige wordt ofzo.
Edit
Ik heb het bijna!!!!!!!!!!!
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
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
<?php
$aCharacters = Range(1, 120);
$iTotalCharacters = Count($aCharacters);
$iCurrent = IsSet($_GET['p']) ? $_GET['p'] : 1;
$bg = 1;
$iIf = 0;
For($iPage = 1, $iPageEnd = 1; $iPage <= $iTotalCharacters, $iPageEnd <= $iTotalCharacters; $iPage++, $iPageEnd++)
{
echo ' <a href="c.php?p='.$iPage.'">'.$iPage.'</a> ';
If($iTotalCharacters > 11)
{
If($iCurrent > 5)
{
If($iPage == 3)
{
echo '||1||';
$iPage = $iCurrent - 2;
$iPageEnd = $iCurrent - 2;
}
ElseIf($iPage > 3 && $iCurrent == $iTotalCharacters - 2 && $iPageEnd == $iPage)
{
//$iPage++;
//$iPageEnd++;
}
ElseIf($iCurrent >= $iTotalCharacters - 4 && $iPageEnd >= $iTotalCharacters - 4)
{
}
ElseIf($iPage == $iCurrent + 1)
{
echo '||3||';
$iPage = $iTotalCharacters - 3;
$iPageEnd = $iTotalCharacters - 3;
}
}
ElseIf($iCurrent <= 6)
{
If($iPage == 6)
{
echo '||5||';
$iPage = $iTotalCharacters - 3;
$iPageEnd = $iTotalCharacters - 3;
}
ElseIf($iCurrent >= 3 && $iPage == $iCurrent + 1)
{
echo '||4||';
$iPage = $iTotalCharacters - 3;
$iPageEnd = $iTotalCharacters - 3;
}
}
ElseIf($iCurrent >= $iTotalCharacters - 2)
{
}
}
$bg++;
if($bg == $iTotalCharacters)
{
$iPage = $iTotalCharacters;
}
}
?>
$aCharacters = Range(1, 120);
$iTotalCharacters = Count($aCharacters);
$iCurrent = IsSet($_GET['p']) ? $_GET['p'] : 1;
$bg = 1;
$iIf = 0;
For($iPage = 1, $iPageEnd = 1; $iPage <= $iTotalCharacters, $iPageEnd <= $iTotalCharacters; $iPage++, $iPageEnd++)
{
echo ' <a href="c.php?p='.$iPage.'">'.$iPage.'</a> ';
If($iTotalCharacters > 11)
{
If($iCurrent > 5)
{
If($iPage == 3)
{
echo '||1||';
$iPage = $iCurrent - 2;
$iPageEnd = $iCurrent - 2;
}
ElseIf($iPage > 3 && $iCurrent == $iTotalCharacters - 2 && $iPageEnd == $iPage)
{
//$iPage++;
//$iPageEnd++;
}
ElseIf($iCurrent >= $iTotalCharacters - 4 && $iPageEnd >= $iTotalCharacters - 4)
{
}
ElseIf($iPage == $iCurrent + 1)
{
echo '||3||';
$iPage = $iTotalCharacters - 3;
$iPageEnd = $iTotalCharacters - 3;
}
}
ElseIf($iCurrent <= 6)
{
If($iPage == 6)
{
echo '||5||';
$iPage = $iTotalCharacters - 3;
$iPageEnd = $iTotalCharacters - 3;
}
ElseIf($iCurrent >= 3 && $iPage == $iCurrent + 1)
{
echo '||4||';
$iPage = $iTotalCharacters - 3;
$iPageEnd = $iTotalCharacters - 3;
}
}
ElseIf($iCurrent >= $iTotalCharacters - 2)
{
}
}
$bg++;
if($bg == $iTotalCharacters)
{
$iPage = $iTotalCharacters;
}
}
?>
1 probleem!
Wanneer ik op de laatste pagina zit zie ik dit:
1 2 3 ||1|| 119 120
Maar het moet het volgende zijn:
1 2 3 ||1|| 118 119 120
Ik word er knetter geack van gehe :p
Gewijzigd op 01/01/1970 01:00:00 door Dennis Mertens
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
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
<?php
$iTotal = 50;
$iCurrent = 10;
for($i = 1; $i <= $iTotal; $i++)
{
if($i < 3)
{
echo $i.' ';
}
elseif($i == 3)
{
echo $i.' ';
if($iCurrent != 4)
{
echo '|| ';
}
}
elseif($i == 4)
{
if($iCurrent == 4)
{
echo $i.' || ';
}
}
elseif($i > 4 && $i < $iTotal - 3)
{
if($i >= $iCurrent - 1 && $i <= $iCurrent + 1)
{
echo $i.' ';
}
}
elseif($i == $iTotal - 3)
{
if($iCurrent < $iTotal - 5)
{
echo '|| ';
}
else
{
echo $i.' ';
}
}
elseif($i > $iTotal - 3)
{
echo $i.' ';
}
}
?>
$iTotal = 50;
$iCurrent = 10;
for($i = 1; $i <= $iTotal; $i++)
{
if($i < 3)
{
echo $i.' ';
}
elseif($i == 3)
{
echo $i.' ';
if($iCurrent != 4)
{
echo '|| ';
}
}
elseif($i == 4)
{
if($iCurrent == 4)
{
echo $i.' || ';
}
}
elseif($i > 4 && $i < $iTotal - 3)
{
if($i >= $iCurrent - 1 && $i <= $iCurrent + 1)
{
echo $i.' ';
}
}
elseif($i == $iTotal - 3)
{
if($iCurrent < $iTotal - 5)
{
echo '|| ';
}
else
{
echo $i.' ';
}
}
elseif($i > $iTotal - 3)
{
echo $i.' ';
}
}
?>
Wellicht dat er nog wat kleine foutjes in zitten, maar volgens mij doet het grotendeels wat jij wilt...
Wil je meer of minder pagina's zien, dan is het een kwestie van de waarden in de elseif-statements aanpassen.
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
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
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$aCharacters = Range(1, 120);
$iTotalCharacters = Count($aCharacters);
$iCurrent = IsSet($_GET['p']) ? $_GET['p'] : 1;
switch (true)
{
case $iTotalCharacters < 10:
for($i=1; $i<=$iTotalCharacters; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
break;
case $iCurrent < 6:
for($i=1; $i<=6; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
if($iTotalCharacters > 7)
{
echo ' || ';
for($i=($iTotalCharacters -2); $i<=$iTotalCharacters; $i++)
{
if($i <= $iTotalCharacters)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
}
}
break;
case $iCurrent > ($iTotalCharacters-5):
for($i=1; $i<=3; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
echo ' || ';
for($i=($iTotalCharacters-5); $i<=$iTotalCharacters; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
break;
default:
for($i=1; $i<=3; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
echo ' || ';
for($i=($iCurrent-1); $i<=($iCurrent +1); $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
echo ' || ';
for($i=($iTotalCharacters-2); $i<=$iTotalCharacters; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
}
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$aCharacters = Range(1, 120);
$iTotalCharacters = Count($aCharacters);
$iCurrent = IsSet($_GET['p']) ? $_GET['p'] : 1;
switch (true)
{
case $iTotalCharacters < 10:
for($i=1; $i<=$iTotalCharacters; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
break;
case $iCurrent < 6:
for($i=1; $i<=6; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
if($iTotalCharacters > 7)
{
echo ' || ';
for($i=($iTotalCharacters -2); $i<=$iTotalCharacters; $i++)
{
if($i <= $iTotalCharacters)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
}
}
break;
case $iCurrent > ($iTotalCharacters-5):
for($i=1; $i<=3; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
echo ' || ';
for($i=($iTotalCharacters-5); $i<=$iTotalCharacters; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
break;
default:
for($i=1; $i<=3; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
echo ' || ';
for($i=($iCurrent-1); $i<=($iCurrent +1); $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
echo ' || ';
for($i=($iTotalCharacters-2); $i<=$iTotalCharacters; $i++)
{
echo ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
}
?>
Edit: Of iets korter genoteerd:
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
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
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$aCharacters = Range(1, 120);
$iTotalCharacters = Count($aCharacters);
$iCurrent = IsSet($_GET['p']) ? $_GET['p'] : 1;
function show($iCurrent, $i)
{
return ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
switch (true)
{
case $iTotalCharacters < 10:
for($i=1; $i<=$iTotalCharacters; $i++) { echo show($iCurrent, $i); }
break;
case $iCurrent < 6:
for($i=1; $i<=6; $i++) { echo show($iCurrent, $i); }
if($iTotalCharacters > 7)
{
echo ' || ';
for($i=($iTotalCharacters -2); $i<=$iTotalCharacters; $i++)
{
if($i <= $iTotalCharacters) { echo show($iCurrent, $i); }
}
}
break;
case $iCurrent > ($iTotalCharacters-5):
for($i=1; $i<=3; $i++) { echo show($iCurrent, $i); }
echo ' || ';
for($i=($iTotalCharacters-5); $i<=$iTotalCharacters; $i++) { echo show($iCurrent, $i); }
break;
default:
for($i=1; $i<=3; $i++) { echo show($iCurrent, $i); }
echo ' || ';
for($i=($iCurrent-1); $i<=($iCurrent +1); $i++) { echo show($iCurrent, $i); }
echo ' || ';
for($i=($iTotalCharacters-2); $i<=$iTotalCharacters; $i++) { echo show($iCurrent, $i); }
}
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
$aCharacters = Range(1, 120);
$iTotalCharacters = Count($aCharacters);
$iCurrent = IsSet($_GET['p']) ? $_GET['p'] : 1;
function show($iCurrent, $i)
{
return ($i == $iCurrent) ? ' '.$i.' ' : ' <a href="c.php?p='.$i.'">'.$i.'</a> ';
}
switch (true)
{
case $iTotalCharacters < 10:
for($i=1; $i<=$iTotalCharacters; $i++) { echo show($iCurrent, $i); }
break;
case $iCurrent < 6:
for($i=1; $i<=6; $i++) { echo show($iCurrent, $i); }
if($iTotalCharacters > 7)
{
echo ' || ';
for($i=($iTotalCharacters -2); $i<=$iTotalCharacters; $i++)
{
if($i <= $iTotalCharacters) { echo show($iCurrent, $i); }
}
}
break;
case $iCurrent > ($iTotalCharacters-5):
for($i=1; $i<=3; $i++) { echo show($iCurrent, $i); }
echo ' || ';
for($i=($iTotalCharacters-5); $i<=$iTotalCharacters; $i++) { echo show($iCurrent, $i); }
break;
default:
for($i=1; $i<=3; $i++) { echo show($iCurrent, $i); }
echo ' || ';
for($i=($iCurrent-1); $i<=($iCurrent +1); $i++) { echo show($iCurrent, $i); }
echo ' || ';
for($i=($iTotalCharacters-2); $i<=$iTotalCharacters; $i++) { echo show($iCurrent, $i); }
}
?>
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
@SanThe: Waarom kies je voor zoveel verschillende loops? Het lijkt mij veel makkelijker om alle pagina's met 1 loop te doorlopen en voor elke pagina te bekijken of hij weergegeven moet worden of niet. A la mijn voorbeeld dus...
De loops zijn allen zeer kort. Die van jou loopt een loop van 50. Ik gebruik alléén loops die ik nodig heb er zit geen enkele overbodige in.
(direct copy-paste uit een class :$)
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
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
<?php
//calculate available pages
$pages = ceil($totalcount/RESULTS_PER_PAGE);
//current page
if(isset($_GET['p']) && is_numeric($_GET['p']) && $_GET['p'] > 0 && $_GET['p'] <= $pages)
{
$this->current_page = $_GET['p'];
}
else
{
/**
* The requested page is not available
* Check if the page below the requested page exists
*
* This is usefull when we remove the last item from the list while
* the list item is placed on the last page without records.
*/
if(isset($_GET['p']) && is_numeric($_GET['p']) && ($_GET['p']-1) == $pages)
{
$this->current_page = $pages;
}
}
/**
* If we have more than 7 pages generate advanced paging
*/
if($pages > 7)
{
$page_numbers = array();
$page_numbers[] = 1;
$above = $this->current_page + 3;
$above = ($above > $pages-1) ? $pages : $above;
$above = ($above == ($pages-2)) ? ($pages-2) : $above;
$under = $this->current_page - 3;
$under = ($under < 2) ? 2 : $under;
$under = ($under == 3) ? 2 : $under;
for($i=$under;$i<$above;$i++)
{
$page_numbers[] = $i;
}
$page_numbers[] = $pages;
}
elseif($pages == 0)
{
//workaround when we have zero results
$page_numbers[] = 1;
$pages = 1;
$this->current_page = 1;
}
else
{
//easy paging
$page_numbers = range(1,$pages);
}
?>
//calculate available pages
$pages = ceil($totalcount/RESULTS_PER_PAGE);
//current page
if(isset($_GET['p']) && is_numeric($_GET['p']) && $_GET['p'] > 0 && $_GET['p'] <= $pages)
{
$this->current_page = $_GET['p'];
}
else
{
/**
* The requested page is not available
* Check if the page below the requested page exists
*
* This is usefull when we remove the last item from the list while
* the list item is placed on the last page without records.
*/
if(isset($_GET['p']) && is_numeric($_GET['p']) && ($_GET['p']-1) == $pages)
{
$this->current_page = $pages;
}
}
/**
* If we have more than 7 pages generate advanced paging
*/
if($pages > 7)
{
$page_numbers = array();
$page_numbers[] = 1;
$above = $this->current_page + 3;
$above = ($above > $pages-1) ? $pages : $above;
$above = ($above == ($pages-2)) ? ($pages-2) : $above;
$under = $this->current_page - 3;
$under = ($under < 2) ? 2 : $under;
$under = ($under == 3) ? 2 : $under;
for($i=$under;$i<$above;$i++)
{
$page_numbers[] = $i;
}
$page_numbers[] = $pages;
}
elseif($pages == 0)
{
//workaround when we have zero results
$page_numbers[] = 1;
$pages = 1;
$this->current_page = 1;
}
else
{
//easy paging
$page_numbers = range(1,$pages);
}
?>
Er zat nog 1 klein bugje in maar dit is het idee.
Aan het eind bevat de array $page_numbers de nummers die je wilt weergeven.
Nu heb ik in mijn template een klein checkje erin zitten of het vorige getal niet meer gelijk is aan huidig getal-1 dan even scheidings tekens zetten.
Nogmaals, dit is geen werkende code maar een voorbeeld :)
Ik moest nog 1 if-statement bij ||2|| :) Om te controleren of $iCurrent gelijk is aan $iTotalCharacters.
Ik ga het zo testen. Maar iig thnkz en zal die van jullie ook even door kijken.