Om het dan echt duidelijk te maken:
Ik werk met een hoofdtabel hierin krijg een geregistreerde bezoeker van de site dus zijn ID, daarnaast zijn er totaal 4 tabellen met eigenschappen en 4 koppeltabellen om de hoofdtabel met de eigenschappentabel te verbinden.
Nu heb ik een formulier met daarin 4 lists/selects waarmee gezocht kan worden naar de geregistreerde bezoekers.
Nu zoek ik dus een manier om via de lists in het formulier de waarde van een veld in de koppeltabel terug te geven en aan de hand van die waarde de bijbehorende hoofdrecords op te zoeken zonder duplicaten uiteraard.
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
| $myq = " tblbedrijven.actief != 0 ";
if (isset($_POST['branche'])) {
if ($_POST['branche'] != "") {
$voorwaarde1_rsLaatmaarzien = (get_magic_quotes_gpc()) ? $_POST
['branche'] : addslashes($_POST['branche']);
$myq = $myq." AND tblbedrijven.id = koppelbranche.bedrijf AND
koppelbranche.branche = ".$voorwaarde1_rsLaatmaarzien;
// echo $myq."<br>";
}}
if (isset($_POST['werkdenk'])) {
if ($_POST['werkdenk'] != "") {
$voorwaarde2_rsLaatmaarzien = (get_magic_quotes_gpc()) ? $_POST
['werkdenk'] : addslashes($_POST['werkdenk']);
$myq = $myq." AND tblbedrijven.id = koppelwerkdenk.bedrijf AND
koppelwerkdenk.werkdenk = ".$voorwaarde2_rsLaatmaarzien;
// echo $myq."<br>";
}}
if (isset($_POST['functiecat'])) {
if ($_POST['functiecat'] != "") {
$voorwaarde3_rsLaatmaarzien = (get_magic_quotes_gpc()) ? $_POST
['functiecat'] : addslashes($_POST['functiecat']);
$myq = $myq." AND tblbedrijven.id = koppelfunctiecat.bedrijf AND
koppelfunctiecat.functiecat = ".$voorwaarde3_rsLaatmaarzien;
// echo $myq."<br>";
}}
if (isset($_POST['vakgebied'])) {
if ($_POST['vakgebied'] != "") {
$voorwaarde4_rsLaatmaarzien = (get_magic_quotes_gpc()) ? $_POST
['vakgebied'] : addslashes($_POST['vakgebied']);
$myq = $myq." AND tblbedrijven.id = koppelvakgebied.bedrijf AND
koppelvakgebied.vakgebied = ".$voorwaarde4_rsLaatmaarzien;
// echo $myq."<br>";
}}
if (isset($_POST['provbedrijf'])) {
if ($_POST['provbedrijf'] != "") {
$colname5_rsResultaat = (get_magic_quotes_gpc()) ? $_POST['provbedrijf'] :
addslashes($_POST['provbedrijf']);
$myq = $myq." AND tblbedrijven.provbedrijf = ".$colname5_rsResultaat;
// echo $myq."<br>";
}}
if (isset($_POST['PostcodeGebied'])) {
if ($_POST['PostcodeGebied'] != "") {
$colname6_rsResultaat = (get_magic_quotes_gpc()) ? $_POST
['PostcodeGebied'] : addslashes($_POST['PostcodeGebied']);
$colname6a_rsResultaat = $colname6_rsResultaat + 50;
$colname6b_rsResultaat = $colname6_rsResultaat - 50;
$myq = $myq." AND tblbedrijven.postcodebedrijf > ".$colname6b_rsResultaat."
AND tblbedrijven.postcodebedrijf <".$colname6a_rsResultaat;
// echo $myq."<br>";
}}
$colname7_rsResultaat = $_POST['dienstenbedrijf1'];
if (isset($_POST['dienstenbedrijf1'])) {
if ($colname7_rsResultaat != "") {
$colname7_rsResultaat = (get_magic_quotes_gpc()) ? $_POST
['dienstenbedrijf1'] : addslashes($_POST['dienstenbedrijf1']);
$myq = $myq." AND tblbedrijven.dienstenbedrijf1 LIKE '%".$colname7_rsResultaat."%'";
// echo $myq."<br>";
}}
mysql_select_db($database_testDBcn, $testDBcn);
$query_rsLaatmaarzien = sprintf("SELECT * FROM tblbedrijven, koppelbranche,
koppelfunctiecat, koppelwerkdenk, koppelvakgebied WHERE".$myq." GROUP BY
tblbedrijven.id LIMIT 10");
$rsLaatmaarzien = mysql_query($query_rsLaatmaarzien, $testDBcn) or die
(mysql_error());
$row_rsLaatmaarzien = mysql_fetch_assoc($rsLaatmaarzien);
$totalRows_rsLaatmaarzien = mysql_num_rows($rsLaatmaarzien);
?> |
Met als resultaat de volgende querystring:
SELECT * FROM tblbedrijven, koppelbranche, koppelfunctiecat, koppelwerkdenk, koppelvakgebied WHERE tblbedrijven.actief != 0 AND tblbedrijven.id = koppelbranche.bedrijf AND koppelbranche.branche = 19 AND tblbedrijven.id = koppelwerkdenk.bedrijf AND koppelwerkdenk.werkdenk = 4 AND tblbedrijven.id = koppelfunctiecat.bedrijf AND koppelfunctiecat.functiecat = 1 AND tblbedrijven.id = koppelvakgebied.bedrijf AND koppelvakgebied.vakgebied = 31 AND tblbedrijven.provbedrijf = 12 AND tblbedrijven.postcodebedrijf > 4450 AND tblbedrijven.postcodebedrijf <4550 AND tblbedrijven.dienstenbedrijf1 LIKE '%ererer%' GROUP BY tblbedrijven.id LIMIT 10
Het lijkt me dat dit niet de bedoeling kan zijn.... het werkt wel maar ja...
Om de tabellen even kort nogmaals weer te geven:
De hoofdtabel:
ID NAAM NOG VEEL MEER VELDEN
De eigenschappentabellen 4x:
ID NAAM ACTIEF
De koppeltabellen 4x:
ID BEDRIJFID EIGENSCHAPID
koppelt aan hoofdtabel koppelt aan eigenschappentabel
[
Voor 13% gewijzigd door
Verwijderd op 19-04-2004 14:35
. Reden: Aanvulling ]