PHP zoekfunctie in sql
Ik wil een zoekfunctie hebben waarbij ik op een aantal criteria (checkboxes, en een dropdown)gegevens uit de database kan lezen en deze plaatst op een result.php pagina.
hoe krijg ik dit voor elkaar kan iemand mij helpen??
Niet echt simpel. Hoe ziet je MySQL tabel eruit en wat worden de elementen in je formulier?
ik heb hem ff op een tripod gezet
http://members.lycos.nl/interfoon/mettoestel.php
en de sql tabel bevat die criteria
zoiets al die site van jou ongeveer
De eerste kan een aantal waarden hebben. De andere drie zijn uitsluiten ja/nee?
de eerste is variabel of geen keuze en de bedoeling is dat deze op de andere 3 criteria dan zoekt
Ik moet even een half uurtje weg. Als je tijd hebt kijk straks nog even. Ik kan je hier wel mee helpen.
Ik stel je hulp heel erg op prijs.
alvast bedankt
Ik stel je hulp heel erg op prijs.
alvast bedankt
<select name="merk" style="background-color: #dcdcdc; border: 1px solid #000000;">
<option value="geen voorkeur">geen voorkeur</option>
<option value="Blackberry">Blackberry</option>
<option value="Imate">Imate</option>
<option value="LG">LG</option>
<option value="Motorola">Motorola</option>
<option value="Nokia">Nokia</option>
<option value="Samsung">Samsung</option>
<option value="Sharp">Sharp</option>
<option value="Siemens">Siemens</option>
<option value="Sony-Ericsson">Sony-Ericsson</option>
</select>
<input name="camera" type="checkbox" value="camera">
<input name="bluetooth" type="checkbox" value="bluetooth">
<input name="umts" type="checkbox" value="umts">
De eerste checkbox (voor je select) kan weg. Als mensen geen voorkeur hebben kunnen ze dat immers in de lijst aangeven.
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
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
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_POST['merk'] != 'geen voorkeur') {
$voorwaarden = '';
$and = false;
}
else {
$voorwaarden = "merk LIKE '".$_POST['merk']."'";
$and = true;
}
if (isset ($_POST['camera'])) {
if ($and) {
$voorwaarden = ' AND camera = 1';
}
else {
$voorwaarden = 'camera = 1';
$and = true;
}
}
if (isset ($_POST['bluetooth'])) {
if ($and) {
$voorwaarden = ' AND bluetooth = 1';
}
else {
$voorwaarden = 'bluetooth = 1';
$and = true;
}
}
if (isset ($_POST['umts'])) {
if ($and) {
$voorwaarden = ' AND umts = 1';
}
else {
$voorwaarden = 'umts = 1';
$and = true;
}
}
$sql = "
SELECT veld1, veld2
FROM tabel
WHERE " . $voorwaarden;
// hierna je query uitvoeren
}
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_POST['merk'] != 'geen voorkeur') {
$voorwaarden = '';
$and = false;
}
else {
$voorwaarden = "merk LIKE '".$_POST['merk']."'";
$and = true;
}
if (isset ($_POST['camera'])) {
if ($and) {
$voorwaarden = ' AND camera = 1';
}
else {
$voorwaarden = 'camera = 1';
$and = true;
}
}
if (isset ($_POST['bluetooth'])) {
if ($and) {
$voorwaarden = ' AND bluetooth = 1';
}
else {
$voorwaarden = 'bluetooth = 1';
$and = true;
}
}
if (isset ($_POST['umts'])) {
if ($and) {
$voorwaarden = ' AND umts = 1';
}
else {
$voorwaarden = 'umts = 1';
$and = true;
}
}
$sql = "
SELECT veld1, veld2
FROM tabel
WHERE " . $voorwaarden;
// hierna je query uitvoeren
}
?>
code is uit mijn hoofd en niet getest
Gewijzigd op 19/01/2006 22:02:00 door Jan Koehoorn
bedankt ik ga em ff testen
ik heb heb naar het adres geupload
misschien kan jij zeggen wat er mis is
Ik zal ff kijken.
Moet dan bij de else (dus dat $and nog false is) niet de WHERE erbij worden gezet en in de standaard query eruit?
EDIT:
Dus als er geen voorkeur is is dit je query:
SELECT veld1, veld2
FROM tabel
WHERE
Gewijzigd op 20/01/2006 15:51:00 door Robert Deiman
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if ($_POST['merk'] != 'geen voorkeur') {
$voorwaarden = 1;
$and = false;
}
?>
if ($_POST['merk'] != 'geen voorkeur') {
$voorwaarden = 1;
$and = false;
}
?>
Dan geeft ie gewoon WHERE 1, wat ik in phpMyAdmin ook vaak tegenkom.
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
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
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_POST['merk'] != 'geen voorkeur') {
$voorwaarden = '';
$and = false;
}
else {
$voorwaarden = "WHERE merk LIKE '".$_POST['merk']."'";
$and = true;
}
if (isset ($_POST['camera'])) {
if ($and) {
$voorwaarden = ' AND camera = 1';
}
else {
$voorwaarden = 'WHERE camera = 1';
$and = true;
}
}
if (isset ($_POST['bluetooth'])) {
if ($and) {
$voorwaarden = ' AND bluetooth = 1';
}
else {
$voorwaarden = 'WHERE bluetooth = 1';
$and = true;
}
}
if (isset ($_POST['umts'])) {
if ($and) {
$voorwaarden = ' AND umts = 1';
}
else {
$voorwaarden = 'WHERE umts = 1';
$and = true;
}
}
$sql = "
SELECT veld1, veld2
FROM tabel
" . $voorwaarden;
// hierna je query uitvoeren
}
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_POST['merk'] != 'geen voorkeur') {
$voorwaarden = '';
$and = false;
}
else {
$voorwaarden = "WHERE merk LIKE '".$_POST['merk']."'";
$and = true;
}
if (isset ($_POST['camera'])) {
if ($and) {
$voorwaarden = ' AND camera = 1';
}
else {
$voorwaarden = 'WHERE camera = 1';
$and = true;
}
}
if (isset ($_POST['bluetooth'])) {
if ($and) {
$voorwaarden = ' AND bluetooth = 1';
}
else {
$voorwaarden = 'WHERE bluetooth = 1';
$and = true;
}
}
if (isset ($_POST['umts'])) {
if ($and) {
$voorwaarden = ' AND umts = 1';
}
else {
$voorwaarden = 'WHERE umts = 1';
$and = true;
}
}
$sql = "
SELECT veld1, veld2
FROM tabel
" . $voorwaarden;
// hierna je query uitvoeren
}
?>
Die kan natuurlijk ook, maar dan heb je dus overal die WHERE's in je code.
Kan dat dan niet met switches?
php icm sql is nog te nieuw voor me denk ik
heb hem wederom geupload
Ik zie trouwens heel gekke dingen staan in de HTML:
<body>
<body text="#668014">
<body link="#009ACD">
<body vlink="#556B2F">
<body alink="#009ACD">
Kun je ter controle eens dit doen nadat de query door het script in elkaar is gesleuteld?
Dan kunnen we kijken wat er uit rolt.