hulp pagination
Ik heb een script waarmee ik gegevens uit mijn database haal. Alles wordt echter op een pagina getoond. Ik wil de resultaten over meerdere pagina's spreiden. Ik heb veel gelezen over verschillende manieren van pagination.
Bij deze roep ik jullie hulp in om mijn script aan te passen/aan te vullen met een werkende pagination.
Ja ik weet dat ik misschien ene broep doe wat ongebruikelijk is, maar toch help svp als je kan.
mijn code:
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
92
93
94
95
96
97
98
99
100
101
102
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
92
93
94
95
96
97
98
99
100
101
102
<?php
$server = 'localhost';
$user = 'naam';
$pass = 'wachtwoord';
$dbname = 'databasenaam';
$type = $_POST['type'];
$regio = $_POST['regio'];
$plaats = $_POST['plaats'];
if($type != "" && ($regio == "" && $plaats == ""))
{
$query = "SELECT * FROM naamdatabase WHERE type='$type' ORDER BY 'naam'";
}
elseif($type == "" && ($regio == "" && $plaats == ""))
{
$message = "Vul plaats of branche";
}
elseif($type == "" && $regio != "" && $plaats == "")
{
$query = "SELECT * FROM naamdatabase WHERE regio='$regio' ORDER BY 'naam'";
}
elseif($type == "" && $regio == "" && $plaats != "")
{
$query = "SELECT * FROM naamdatabase WHERE plaats='$plaats' ORDER BY 'naam'";
}
elseif($type != "" && $regio != "" && $plaats == "")
{
$query = "SELECT * FROM naamdatabase WHERE type='$type' AND regio='$regio' ORDER BY 'naam'";
}
elseif($type != "" && $regio == "" && $plaats != "")
{
$query = "SELECT * FROM naamdatabase WHERE type='$type' AND plaats='$plaats' ORDER BY 'naam'";
}
elseif($type != "" && $regio != "" && $plaats != "")
{
$query = "SELECT * FROM naamdatabase WHERE type='$type' AND regio='$regio' AND plaats='$plaats' ORDER BY 'naam'";
}
else
{
$message .= "kan niet op aparte criteria sorteren.<\br>\n"; //wat moet er in dit geval gebeuren?
}
if($db = mysql_connect($server, $user, $pass))
{
$message = "";
if(mysql_select_db($dbname, $db))
{
$message .= "";
if($result = mysql_query($query, $db))
{
$message .= "";
}
else
{
$message .= "tabel kan niet geselecteerd worden.<\br>\n";
}
}
else
{
$message .= " Database $dbname niet gevonden.<\br>\n";
}
}
else
{
$message = "Verbinden met database is mislukt.<\br>\n";
}
while(list($id, $type, $naam, $website, $websitenaam, $regio, $postcode, $plaats, $adres, $telefoonnummer) = mysql_fetch_row($result))
{ echo "<div id='tabeldiv'>
<a href='$website' target='_blank'>
<div id='naam'>$naam </div>
<div id='adres'>$adres </div>
<div id='postcode'>$postcode </div>
<div id='plaats'>$plaats </div>
<div id='telefoonnummer'>$telefoonnummer</div>
<div id='websitenaam'>$websitenaam</div>
</a>
</div>";
}
echo "</table>\n";
mysql_close($db);
?>
$server = 'localhost';
$user = 'naam';
$pass = 'wachtwoord';
$dbname = 'databasenaam';
$type = $_POST['type'];
$regio = $_POST['regio'];
$plaats = $_POST['plaats'];
if($type != "" && ($regio == "" && $plaats == ""))
{
$query = "SELECT * FROM naamdatabase WHERE type='$type' ORDER BY 'naam'";
}
elseif($type == "" && ($regio == "" && $plaats == ""))
{
$message = "Vul plaats of branche";
}
elseif($type == "" && $regio != "" && $plaats == "")
{
$query = "SELECT * FROM naamdatabase WHERE regio='$regio' ORDER BY 'naam'";
}
elseif($type == "" && $regio == "" && $plaats != "")
{
$query = "SELECT * FROM naamdatabase WHERE plaats='$plaats' ORDER BY 'naam'";
}
elseif($type != "" && $regio != "" && $plaats == "")
{
$query = "SELECT * FROM naamdatabase WHERE type='$type' AND regio='$regio' ORDER BY 'naam'";
}
elseif($type != "" && $regio == "" && $plaats != "")
{
$query = "SELECT * FROM naamdatabase WHERE type='$type' AND plaats='$plaats' ORDER BY 'naam'";
}
elseif($type != "" && $regio != "" && $plaats != "")
{
$query = "SELECT * FROM naamdatabase WHERE type='$type' AND regio='$regio' AND plaats='$plaats' ORDER BY 'naam'";
}
else
{
$message .= "kan niet op aparte criteria sorteren.<\br>\n"; //wat moet er in dit geval gebeuren?
}
if($db = mysql_connect($server, $user, $pass))
{
$message = "";
if(mysql_select_db($dbname, $db))
{
$message .= "";
if($result = mysql_query($query, $db))
{
$message .= "";
}
else
{
$message .= "tabel kan niet geselecteerd worden.<\br>\n";
}
}
else
{
$message .= " Database $dbname niet gevonden.<\br>\n";
}
}
else
{
$message = "Verbinden met database is mislukt.<\br>\n";
}
while(list($id, $type, $naam, $website, $websitenaam, $regio, $postcode, $plaats, $adres, $telefoonnummer) = mysql_fetch_row($result))
{ echo "<div id='tabeldiv'>
<a href='$website' target='_blank'>
<div id='naam'>$naam </div>
<div id='adres'>$adres </div>
<div id='postcode'>$postcode </div>
<div id='plaats'>$plaats </div>
<div id='telefoonnummer'>$telefoonnummer</div>
<div id='websitenaam'>$websitenaam</div>
</a>
</div>";
}
echo "</table>\n";
mysql_close($db);
?>
Haal eerst maar eens de variabelen buiten quotes.
Selecteer wat je wilt hebben, gebruik niet *.
Kan je niet beter mysql_fetch_assoc gebruiken?
Waarom heb je op regel zesennegentig een table sluit tag staan?
Regel 96 was een foutje. heb het weggehaald.
Ik ben een beginneling en worstel al dagen met pagination,maar kom niet uit. daarom mijn hulpvraag.
Oké, wat gaat er dan mis? Waar kom je dan niet uit?
Met limit in max lukte het om het aantal reultaten te beperken, maar dat is niet wat ik wil
Ik heb geprobeerd een pagnationscript in te bouwen, maar ook niet gelukt.
Kan je ons laten zien wat er niet goed ging? Als ik naar de code van jou hierboven kijk, dan snap de php volgens mij wel. Dus dit moet je ook wel kunnen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$itemsOnPage = 10;
// SQL-injection bescherming
$page = (int)$_GET['p'];
// Beginnen bij 1
if($page < 1) $page = 1;
$currentOffset = ($page-1) * $itemsOnPage;
$sql = 'SELECT * FROM tabel LIMIT '.$currentOffset.', '.$itemsOnPage;
if($page > 1) echo '<a href="index.php?p='.$page-1.'">Vorige</a>';
echo '<a href="index.php?p='.$page+1.'">Volgende</a>';
?>
$itemsOnPage = 10;
// SQL-injection bescherming
$page = (int)$_GET['p'];
// Beginnen bij 1
if($page < 1) $page = 1;
$currentOffset = ($page-1) * $itemsOnPage;
$sql = 'SELECT * FROM tabel LIMIT '.$currentOffset.', '.$itemsOnPage;
if($page > 1) echo '<a href="index.php?p='.$page-1.'">Vorige</a>';
echo '<a href="index.php?p='.$page+1.'">Volgende</a>';
?>
Dit is de basis. Zorgen dat je niet te hoog kan gaan met de pagina nummers mag je er zelf toevoegen.
Gewijzigd op 18/09/2010 13:27:12 door Pim -
ik ga het uitproberen
alvast bedankt.
groet,
shyaak