Vorige / Volgende toevoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roy

Roy

18/02/2008 09:38:00
Quote Anchor link
Ik heb hier nog een zoekscript op mijn computer staan (ja, nog in tabellen.. dat weet ik), maar hoe moet ik hier een "vorige 1 - 2 - 3 volgende" script aan toevoegen. Heb op internet een aantal van die scripts gevonden (vrijwel allemaal hetzelfde), maar het lukt me gewoon niet.

Bijv: http://www.wmcity.nl/artikelen.php?actie=bekijk&id=56

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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:&nbsp;" . $obj->branche . "&nbsp;&nbsp;&nbsp;Plaatsnaam:&nbsp;" . $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>&nbsp;</TD>
                <TD>&nbsp;</TD>
        </TR>
        <TR>
                <TD>&nbsp;                </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
 
PHP hulp

PHP hulp

21/11/2024 16:59:06
 
Lode

Lode

18/02/2008 09:52:00
Quote Anchor link
Even back to basics... Om te bepalen of/en hoeveel pagina's er zijn heb je nodig:

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
}

?>


Wellicht is dit nogal hokus-pokus voor je?!
zoek de betreffende functies dan maar eens op op http://www.php.net/
 
Patrick Niezen

Patrick Niezen

18/02/2008 10:18:00
Quote Anchor link
Hallo Roy,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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

?>


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
 
Robert Deiman

Robert Deiman

18/02/2008 10:23:00
Quote Anchor link
Je kan de query ook als volgt doen, wat ook nog eens volgens de echte SQL standaard is en niet volgens de MySQL standaard:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT
    kolomnaam
FROM
    tabel
LIMIT
    10
OFFSET
    11


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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.