Vorige / Volgende toevoegen
Bijv: http://www.wmcity.nl/artikelen.php?actie=bekijk&id=56
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<?php
include_once('database.inc.php');
if(isset($_POST['check'])) {
$trefwoord = htmlentities($_POST['trefwoord']);
$bedrijfsnaam = htmlentities($_POST['bedrijfsnaam']);
$plaatsnaam = htmlentities($_POST['plaatsnaam']);
$provincie = $_POST['provincie'];
$branche = $_POST['branche'];
if(!empty($provincie)) {
$i = 0;
foreach($provincie as $provincies) {
if($i == 0)
$sql_prov = " AND `provincie` = '" . $provincies . "' ";
else
$sql_prov .= " OR `provincie` = '" . $provincies . "' ";
$i++;
}
} else {
// er werden geen argumenten meegegeven voor provincie
$sql_prov = ' ';
}
if(!empty($branche)) {
$j = 0;
foreach($branche as $branches) {
if($j == 0)
$sql_branche = " AND `branche` = '" . $branches . "' ";
else
$sql_branche .= " OR `branche` = '" . $branches . "' ";
$j++;
}
} else {
// er werden geen argumenten meegegeven voor branche
$sql_branche = ' ';
}
if(!empty($trefwoord))
$sql_match_trefwoord = " AND MATCH(`bedrijfsnaam`, `plaatsnaam`, `extra`, `postcode`) AGAINST ('*" . $trefwoord . "*' IN BOOLEAN MODE)";
else
$sql_match_trefwoord = ' ';
if(!empty($functie))
$sql_match_functie = " AND MATCH(`functie`) AGAINST ('*" . $functie . "*' IN BOOLEAN MODE)";
else
$sql_match_functie = ' ';
if(!empty($plaats))
$sql_match_plaats = " AND MATCH(`plaatsnaam`) AGAINST ('*" . $plaats . "*' IN BOOLEAN MODE)";
else
$sql_match_plaats = ' ';
if(!empty($opleiding))
$sql_match_opleiding = " AND MATCH(`opleiding`) AGAINST ('*" . $opleiding . "*' IN BOOLEAN MODE)";
else
$sql_match_opleiding = ' ';
$sql = "SELECT * FROM `bedrijven` WHERE 1=1" . $sql_prov
. $sql_branche
. $sql_match_trefwoord
. $sql_match_functie
. $sql_match_plaats
. $sql_match_opleiding . "ORDER BY `bedrijfsnaam` ASC";
//print $sql;
$obj = new database;
$obj->connect();
$result = $obj->execute($sql);
$rowres = mysql_num_rows($result);
if(($rowres)<=0) {
print '<P><B>Uw zoekactie heeft geen resultaten opgeleverd.</B></P>
<P>Ga terug en probeer het opnieuw met een minder nauwkeurige zoekterm.</P>';
}else{
if(($rowres)<=2) {
print 'U heeft ' . $rowres . ' bedrijf gevonden:<BR /><BR />';
}else{
print 'U heeft ' . $rowres . ' bedrijven gevonden:<BR /><BR />';
}
while($obj = mysql_fetch_object($result)) {
echo "
<table width=\"470\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td><img src=\"/jpg/res_top.jpg\" width=\"470\" height=\"4\" /></td>
</tr>
<tr>
<td background=\"/jpg/res_content.jpg\"><span class=\"titelres\"><A target=\"_self\" href=\"index.php?pagina=resultaat&id=$obj->id\">" . $obj->bedrijfsnaam . "</A></span><br><span class=\"resinfo\">Branche: " . $obj->branche . " Plaatsnaam: " . $obj->plaatsnaam . "</span></td>
</tr>
<tr>
<td><img src=\"/jpg/res_bottom.jpg\" width=\"470\" height=\"18\" /></td>
</tr>
</table><br>";
}
print '<br><a href="javascript:history.go(-1);">Klik hier voor een nieuwe zoekopdracht</a>';
}
}else{
?>
<TABLE align="center" valign="top" class="vac">
<TR>
<TD>
<FORM name="search" method="POST" action="index.php?pagina=zoek">
<INPUT type="hidden" name="check" value="TRUE">
Trefwoord:
</TD>
<TD>
<INPUT type="text" name="trefwoord" maxwidth="255" size="37" value="<?php print $_POST['trefwoord']; ?>"> </TD>
</TR>
<TR>
<TD>
Plaats: </TD>
<TD>
<INPUT type="text" name="plaats" maxwidth="255" size="37"value="<?php print $_POST['plaats']; ?>"> </TD>
</TR>
<TR>
<TD valign="top">
Provincie: </TD>
<TD>
<SELECT MULTIPLE name="provincie[]" style="width: 250px;" size="5" width="40">
<?php
include "database.php";
$query = "SELECT * FROM provincies ORDER BY provincie ASC";
$sql = mysql_query($query);
while($record = mysql_fetch_object($sql))
{
echo "<option value=".$record->provincie.">".$record->provincie."</option> ";
}
?>
</SELECT> </TD>
</TR>
<TR>
<TD valign="top">
Rubriek: </TD>
<TD>
<SELECT MULTIPLE name="branche[]" style="width: 250px;" size="5" class="admin">
<?php
include "database.php";
$query = "SELECT * FROM branches ORDER BY branche ASC";
$sql = mysql_query($query);
while($record = mysql_fetch_object($sql))
{
echo "<option value=".$record->branche.">".$record->branche. "</option> ";
}
?>
</SELECT> </TD>
</TR>
<TR> </TR>
<TR>
<TD> </TD>
<TD> </TD>
</TR>
<TR>
<TD> </TD>
<TD align="right">
<INPUT type="submit" name="submit" value="Zoek nu!">
</TD>
</TR>
</TABLE>
<?php
}
?>
include_once('database.inc.php');
if(isset($_POST['check'])) {
$trefwoord = htmlentities($_POST['trefwoord']);
$bedrijfsnaam = htmlentities($_POST['bedrijfsnaam']);
$plaatsnaam = htmlentities($_POST['plaatsnaam']);
$provincie = $_POST['provincie'];
$branche = $_POST['branche'];
if(!empty($provincie)) {
$i = 0;
foreach($provincie as $provincies) {
if($i == 0)
$sql_prov = " AND `provincie` = '" . $provincies . "' ";
else
$sql_prov .= " OR `provincie` = '" . $provincies . "' ";
$i++;
}
} else {
// er werden geen argumenten meegegeven voor provincie
$sql_prov = ' ';
}
if(!empty($branche)) {
$j = 0;
foreach($branche as $branches) {
if($j == 0)
$sql_branche = " AND `branche` = '" . $branches . "' ";
else
$sql_branche .= " OR `branche` = '" . $branches . "' ";
$j++;
}
} else {
// er werden geen argumenten meegegeven voor branche
$sql_branche = ' ';
}
if(!empty($trefwoord))
$sql_match_trefwoord = " AND MATCH(`bedrijfsnaam`, `plaatsnaam`, `extra`, `postcode`) AGAINST ('*" . $trefwoord . "*' IN BOOLEAN MODE)";
else
$sql_match_trefwoord = ' ';
if(!empty($functie))
$sql_match_functie = " AND MATCH(`functie`) AGAINST ('*" . $functie . "*' IN BOOLEAN MODE)";
else
$sql_match_functie = ' ';
if(!empty($plaats))
$sql_match_plaats = " AND MATCH(`plaatsnaam`) AGAINST ('*" . $plaats . "*' IN BOOLEAN MODE)";
else
$sql_match_plaats = ' ';
if(!empty($opleiding))
$sql_match_opleiding = " AND MATCH(`opleiding`) AGAINST ('*" . $opleiding . "*' IN BOOLEAN MODE)";
else
$sql_match_opleiding = ' ';
$sql = "SELECT * FROM `bedrijven` WHERE 1=1" . $sql_prov
. $sql_branche
. $sql_match_trefwoord
. $sql_match_functie
. $sql_match_plaats
. $sql_match_opleiding . "ORDER BY `bedrijfsnaam` ASC";
//print $sql;
$obj = new database;
$obj->connect();
$result = $obj->execute($sql);
$rowres = mysql_num_rows($result);
if(($rowres)<=0) {
print '<P><B>Uw zoekactie heeft geen resultaten opgeleverd.</B></P>
<P>Ga terug en probeer het opnieuw met een minder nauwkeurige zoekterm.</P>';
}else{
if(($rowres)<=2) {
print 'U heeft ' . $rowres . ' bedrijf gevonden:<BR /><BR />';
}else{
print 'U heeft ' . $rowres . ' bedrijven gevonden:<BR /><BR />';
}
while($obj = mysql_fetch_object($result)) {
echo "
<table width=\"470\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td><img src=\"/jpg/res_top.jpg\" width=\"470\" height=\"4\" /></td>
</tr>
<tr>
<td background=\"/jpg/res_content.jpg\"><span class=\"titelres\"><A target=\"_self\" href=\"index.php?pagina=resultaat&id=$obj->id\">" . $obj->bedrijfsnaam . "</A></span><br><span class=\"resinfo\">Branche: " . $obj->branche . " Plaatsnaam: " . $obj->plaatsnaam . "</span></td>
</tr>
<tr>
<td><img src=\"/jpg/res_bottom.jpg\" width=\"470\" height=\"18\" /></td>
</tr>
</table><br>";
}
print '<br><a href="javascript:history.go(-1);">Klik hier voor een nieuwe zoekopdracht</a>';
}
}else{
?>
<TABLE align="center" valign="top" class="vac">
<TR>
<TD>
<FORM name="search" method="POST" action="index.php?pagina=zoek">
<INPUT type="hidden" name="check" value="TRUE">
Trefwoord:
</TD>
<TD>
<INPUT type="text" name="trefwoord" maxwidth="255" size="37" value="<?php print $_POST['trefwoord']; ?>"> </TD>
</TR>
<TR>
<TD>
Plaats: </TD>
<TD>
<INPUT type="text" name="plaats" maxwidth="255" size="37"value="<?php print $_POST['plaats']; ?>"> </TD>
</TR>
<TR>
<TD valign="top">
Provincie: </TD>
<TD>
<SELECT MULTIPLE name="provincie[]" style="width: 250px;" size="5" width="40">
<?php
include "database.php";
$query = "SELECT * FROM provincies ORDER BY provincie ASC";
$sql = mysql_query($query);
while($record = mysql_fetch_object($sql))
{
echo "<option value=".$record->provincie.">".$record->provincie."</option> ";
}
?>
</SELECT> </TD>
</TR>
<TR>
<TD valign="top">
Rubriek: </TD>
<TD>
<SELECT MULTIPLE name="branche[]" style="width: 250px;" size="5" class="admin">
<?php
include "database.php";
$query = "SELECT * FROM branches ORDER BY branche ASC";
$sql = mysql_query($query);
while($record = mysql_fetch_object($sql))
{
echo "<option value=".$record->branche.">".$record->branche. "</option> ";
}
?>
</SELECT> </TD>
</TR>
<TR> </TR>
<TR>
<TD> </TD>
<TD> </TD>
</TR>
<TR>
<TD> </TD>
<TD align="right">
<INPUT type="submit" name="submit" value="Zoek nu!">
</TD>
</TR>
</TABLE>
<?php
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Roy
Totaal aantal records / records per pagina = pagina's
Huidige pagina/record
En dan kan je toch gewoon uitrekenen waar je bent en wat er links en rechts is.
SELECT COUNT(1) AS total
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
//verkorte if/else
//kijken of het wel heel getal is ook!
//zo niet dan maken we er NULL van, oftewel ham&eggs
$page = (isset($_GET['p']) && ctype_digit($_GET['p'])) ? $_GET['p'] : NULL;
if(isset($page)){ //NULL geeft false bij isset();
//we hebben een pagina nummer!!!
echo '$_GET[\'page\'] = '.$page.'<br/>'.PHP_EOL;
}
else{
trigger_error('Missende pagina parameter!!!', E_USER_NOTICE);
}
?>
//verkorte if/else
//kijken of het wel heel getal is ook!
//zo niet dan maken we er NULL van, oftewel ham&eggs
$page = (isset($_GET['p']) && ctype_digit($_GET['p'])) ? $_GET['p'] : NULL;
if(isset($page)){ //NULL geeft false bij isset();
//we hebben een pagina nummer!!!
echo '$_GET[\'page\'] = '.$page.'<br/>'.PHP_EOL;
}
else{
trigger_error('Missende pagina parameter!!!', E_USER_NOTICE);
}
?>
Wellicht is dit nogal hokus-pokus voor je?!
zoek de betreffende functies dan maar eens op op http://www.php.net/
Hier heb ik een tweetal tips voor de realisatie van je zoekscript:
1. Gebruik een variabele bovenaan je script voor de declaratie en initiatie van het aantal items per pagina.
2. Maak gebruik van de SQL's LIMIT. Voorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// Aantal items per pagina
$max_items = 10;
// Bereken huidige pagina
if(isset($_GET['p']) && is_numeric($_GET['p']))
$page = $_GET['p'];
else
$page = 0;
// Bereken offset
$offset = $page * $max_items;
// Haal zoekresultaten op uit de database
$search_result = mysql_query("SELECT veld1, veld2 FROM table1 LIMIT $offset, $max_items;");
// Print resultaten uit
// TODO
?>
// Aantal items per pagina
$max_items = 10;
// Bereken huidige pagina
if(isset($_GET['p']) && is_numeric($_GET['p']))
$page = $_GET['p'];
else
$page = 0;
// Bereken offset
$offset = $page * $max_items;
// Haal zoekresultaten op uit de database
$search_result = mysql_query("SELECT veld1, veld2 FROM table1 LIMIT $offset, $max_items;");
// Print resultaten uit
// TODO
?>
Vooral die LIMIT is handig voor het selecteren van de juiste records, eerste parameter is start-offset, tweede parameter is aantal results wat hij na de offset selecteerd (onthoudt dat goed! Ik dacht eerst start-offset en eind-offset... duurde wel even voordat ik die fout door had :-)).
Patrick Niezen
Dit werkt in MySQL, pgSQL en voor zover ik weet alle gangbare SQL. Daarnaast is nu je LIMIT het aantal dat je wilt laten zien en de OFFSET is de start-offset.