Zoeken in meerdere tabellen
die alleen zoekt op naam van de categorie
nu wil ik eigeik dat hij eerst zoek op naam categorie,
daarna verder gaat in de omschrijving,
of daar iets staat van de zoekterm...
is dit te realiseren?
deze code heb ik nu:
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
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
<?php
include('gegevens.php');
//ff checken of er op verzenden gedrukt is...
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
//variable zoekterm aanmaken waarin de post staat + nog wat beveiliging
$zoekterm = mysql_real_escape_string(addslashes(trim($_POST['zoekterm'])));
//even checken of er wel genoeg karakters zijn ingevoerd. Zoniet, maar de variable error aan met een boodschap
if(strlen($zoekterm) < 1)
{
$error = '<p>Je moet wel een zoekterm invoeren.</p>';
}
//hier checken we dus of de variable error bestaat
if(isset($error))
{
//ja hij bestaat... echo'en met die hap
echo $error;
}
//wanneer er GEEN error is
else
{
//de query uitvoeren
$sql = mysql_query("SELECT * FROM relatie WHERE Naam LIKE '%$zoekterm%' ORDER BY Naam ASC");
$aantal = mysql_num_rows($sql);
echo ($aantal == 1) ? $aantal.' resultaat gevonden' : $aantal.' resultaten gevonden';
echo '<br><br>';
//en de while loop wordt gestart om alles te weergeven
while($row = mysql_fetch_array($sql))
{
echo '<table border="1"><tr><th>Naam: </th><td><a href="cat_profiel.php?id='.$row['id'].'">'.$row['Naam'].'</a></td></tr></table><br>';
}
}
}
//er is nog niet op verzenden gedrukt. Show het formulier maar!!
else
{ ?>
<form action="categorie.php" method="post">
<p>Zoek gebruiker op zijn/haar naam:</p>
<input type="text" name="zoekterm"><br>
<input type="submit" value="Zoeken">
</form>
<br><br>
<a href="javascript:history.go(-1);">« Ga terug</a>
<?php
}
?>
include('gegevens.php');
//ff checken of er op verzenden gedrukt is...
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
//variable zoekterm aanmaken waarin de post staat + nog wat beveiliging
$zoekterm = mysql_real_escape_string(addslashes(trim($_POST['zoekterm'])));
//even checken of er wel genoeg karakters zijn ingevoerd. Zoniet, maar de variable error aan met een boodschap
if(strlen($zoekterm) < 1)
{
$error = '<p>Je moet wel een zoekterm invoeren.</p>';
}
//hier checken we dus of de variable error bestaat
if(isset($error))
{
//ja hij bestaat... echo'en met die hap
echo $error;
}
//wanneer er GEEN error is
else
{
//de query uitvoeren
$sql = mysql_query("SELECT * FROM relatie WHERE Naam LIKE '%$zoekterm%' ORDER BY Naam ASC");
$aantal = mysql_num_rows($sql);
echo ($aantal == 1) ? $aantal.' resultaat gevonden' : $aantal.' resultaten gevonden';
echo '<br><br>';
//en de while loop wordt gestart om alles te weergeven
while($row = mysql_fetch_array($sql))
{
echo '<table border="1"><tr><th>Naam: </th><td><a href="cat_profiel.php?id='.$row['id'].'">'.$row['Naam'].'</a></td></tr></table><br>';
}
}
}
//er is nog niet op verzenden gedrukt. Show het formulier maar!!
else
{ ?>
<form action="categorie.php" method="post">
<p>Zoek gebruiker op zijn/haar naam:</p>
<input type="text" name="zoekterm"><br>
<input type="submit" value="Zoeken">
</form>
<br><br>
<a href="javascript:history.go(-1);">« Ga terug</a>
<?php
}
?>
http://www.phphulp.nl/forum/showtopic.php?cat=12&id=67815&lasttopic=1
http://www.phphulp.nl/forum/showtopic.php?cat=12&id=67760
edit: 5 topics in 1 week..
08.10.2009 11:14 Zoeken in meerdere tabellen
07.10.2009 13:10 2 tabellen gegevens ophalen
05.10.2009 12:42 resultaten ophalen 2 tabellen
01.10.2009 11:20 catogorie id samenvoegen
01.10.2009 09:35 id posten
Gewijzigd op 01/01/1970 01:00:00 door Jaron T
maar op ncf, (ander forum)
meot voor alles een ander onderwerp aangemaakt worden,
ik denk dat is hier wel hetzelfde...
08.10.2009 11:14 Zoeken in meerdere tabellen
07.10.2009 13:10 2 tabellen gegevens ophalen
05.10.2009 12:42 resultaten ophalen 2 tabellen
Komt alle 3 op hetzelfde neer.
want dit topic,
gat over zoeken in meerdere tabellen...
en die andere 2 zou inderdaad 1 kunnen zijn (sorry daarvoor)
die betreffen allebei gegevens ophalen na een link...
--edit--
ik heb nu een code gevonden op het internet,
maar hij werkt niet helemaal,
er zitten ook nog erg veel querie's in zag ik al...
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
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
<?
include "gegevens.php";
//zoekmachine
if ($_POST['naamvantekstveld']) {
$naamvantekstveld=$_POST['naamvantekstveld'];
// querys, hier plaats je dus je querys die in je tabellen zoeken
$query1="SELECT Naam, Voornaam FROM `relatie` WHERE Zoeknaam LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query2="SELECT Naam, Voornaam FROM `relatie` WHERE Naam LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query3="SELECT Naam, Voornaam FROM `relatie` WHERE Voorvoeg LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query4="SELECT Naam, Voornaam FROM `relatie` WHERE Voornaam LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query5="SELECT Naam, Voornaam, datum FROM `relatie` WHERE Adres LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query6="SELECT Naam, Voornaam FROM `relatie` WHERE Pcode LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query7="SELECT Naam, Voornaam FROM `relatie` WHERE Email LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
// resultaten ophalen
$sql1 = mysql_query($query1) or die (mysql_error());
$aantal1=mysql_num_rows($sql1);
$sql2 = mysql_query($query2) or die (mysql_error());
$aantal2=mysql_num_rows($sql2);
$sql3 = mysql_query($query3) or die (mysql_error());
$aantal3=mysql_num_rows($sql3);
$sql4 = mysql_query($query4) or die (mysql_error());
$aantal4=mysql_num_rows($sql4);
$sql5 = mysql_query($query5) or die (mysql_error());
$aantal5=mysql_num_rows($sql5);
$sql6 = mysql_query($query6) or die (mysql_error());
$aantal6=mysql_num_rows($sql6);
$sql7 = mysql_query($query7) or die (mysql_error());
$aantal7=mysql_num_rows($sql7);
// aantal resultaten
$aantal = $aantal1 + $aantal2 + $aantal3 + $aantal4 + $aantal5 + $aantal6 + $aantal7;
if ($aantal1 == 0 AND $aantal2 == 0 AND $aantal3 == 0 AND $aantal4 == 0 AND $aantal5 == 0 AND $aantal6 == 0 AND $aantal7 == 0) {
echo "Er zijn <B>geen</B> resultaten gevonden";
} else {
echo "$aantal gevonden resultaten:<BR><BR>";
// hier resultaten
echo "<b>$aantal1 gevonden reviews:</b><br>";
while ($obj1 = mysql_fetch_object($sql1)) {
echo "<a href=\"review.php?id=$obj1->id\">$obj1->Zoeknaam</a> - <a href=\"mailto:$obj1->email\">$obj1->auteur</a><br>";
}
echo "<br>";
echo "<b>$aantal2 gevonden downloads:</b><br>";
while ($obj2 = mysql_fetch_object($sql2)) {
echo "<a href=\"download.php?id=$obj2->id\">$obj2->Naam</a><br>";
}
echo "<br> ";
echo "<b>$aantal3 gevonden (aankomende) releases:</b><br>";
while ($obj3 = mysql_fetch_object($sql3)) {
echo "<a href=\"upcomingmovie.php?id=$obj3->id\">$obj3->Voornaam</a><br>";
}
echo "<br> ";
echo "<b>$aantal4 gevonden streamfiles:</b><br>";
while ($obj4 = mysql_fetch_object($sql4)) {
echo "<a href=\"streamfile.php?id=$obj4->id\">$obj4->titel</a><br>";
}
echo "<br> ";
echo "<b>$aantal5 gevonden nieuwsberichten:</b><br>";
while ($obj5 = mysql_fetch_object($sql5)) {
echo "<a href=\"leesnieuws.php?id=$obj5->id\">$obj5->titel</a> - $obj5->datum<br>";
}
echo "<br> ";
echo "<b>$aantal6 gevonden imagegalleries:</b><br>";
while ($obj6 = mysql_fetch_object($sql6)) {
echo "<a href=\"imglist.php?id=$obj6->titel\">$obj6->titel</a><br>";
}
echo "<br> ";
echo "<b>$aantal7 gevonden filmposters:</b><br>";
while ($obj7 = mysql_fetch_object($sql7)) {
echo "<a href=\"imglist.php?id=$obj7->id\">$obj7->titel</a><br>";
}
}
}
echo "<FORM ACTION=\"\" METHOD=\"post\">";
echo "<center>Zoeken naar:";
echo "<INPUT TYPE=\"text\" NAME=\"naamvantekstveld\"> - ";
echo "<INPUT TYPE=\"submit\" NAME=\"Zoek\" VALUE=\"Zoek\"></center>";
echo "</FORM>";
//einde zoekmachine
?>
include "gegevens.php";
//zoekmachine
if ($_POST['naamvantekstveld']) {
$naamvantekstveld=$_POST['naamvantekstveld'];
// querys, hier plaats je dus je querys die in je tabellen zoeken
$query1="SELECT Naam, Voornaam FROM `relatie` WHERE Zoeknaam LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query2="SELECT Naam, Voornaam FROM `relatie` WHERE Naam LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query3="SELECT Naam, Voornaam FROM `relatie` WHERE Voorvoeg LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query4="SELECT Naam, Voornaam FROM `relatie` WHERE Voornaam LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query5="SELECT Naam, Voornaam, datum FROM `relatie` WHERE Adres LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query6="SELECT Naam, Voornaam FROM `relatie` WHERE Pcode LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
$query7="SELECT Naam, Voornaam FROM `relatie` WHERE Email LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
// resultaten ophalen
$sql1 = mysql_query($query1) or die (mysql_error());
$aantal1=mysql_num_rows($sql1);
$sql2 = mysql_query($query2) or die (mysql_error());
$aantal2=mysql_num_rows($sql2);
$sql3 = mysql_query($query3) or die (mysql_error());
$aantal3=mysql_num_rows($sql3);
$sql4 = mysql_query($query4) or die (mysql_error());
$aantal4=mysql_num_rows($sql4);
$sql5 = mysql_query($query5) or die (mysql_error());
$aantal5=mysql_num_rows($sql5);
$sql6 = mysql_query($query6) or die (mysql_error());
$aantal6=mysql_num_rows($sql6);
$sql7 = mysql_query($query7) or die (mysql_error());
$aantal7=mysql_num_rows($sql7);
// aantal resultaten
$aantal = $aantal1 + $aantal2 + $aantal3 + $aantal4 + $aantal5 + $aantal6 + $aantal7;
if ($aantal1 == 0 AND $aantal2 == 0 AND $aantal3 == 0 AND $aantal4 == 0 AND $aantal5 == 0 AND $aantal6 == 0 AND $aantal7 == 0) {
echo "Er zijn <B>geen</B> resultaten gevonden";
} else {
echo "$aantal gevonden resultaten:<BR><BR>";
// hier resultaten
echo "<b>$aantal1 gevonden reviews:</b><br>";
while ($obj1 = mysql_fetch_object($sql1)) {
echo "<a href=\"review.php?id=$obj1->id\">$obj1->Zoeknaam</a> - <a href=\"mailto:$obj1->email\">$obj1->auteur</a><br>";
}
echo "<br>";
echo "<b>$aantal2 gevonden downloads:</b><br>";
while ($obj2 = mysql_fetch_object($sql2)) {
echo "<a href=\"download.php?id=$obj2->id\">$obj2->Naam</a><br>";
}
echo "<br> ";
echo "<b>$aantal3 gevonden (aankomende) releases:</b><br>";
while ($obj3 = mysql_fetch_object($sql3)) {
echo "<a href=\"upcomingmovie.php?id=$obj3->id\">$obj3->Voornaam</a><br>";
}
echo "<br> ";
echo "<b>$aantal4 gevonden streamfiles:</b><br>";
while ($obj4 = mysql_fetch_object($sql4)) {
echo "<a href=\"streamfile.php?id=$obj4->id\">$obj4->titel</a><br>";
}
echo "<br> ";
echo "<b>$aantal5 gevonden nieuwsberichten:</b><br>";
while ($obj5 = mysql_fetch_object($sql5)) {
echo "<a href=\"leesnieuws.php?id=$obj5->id\">$obj5->titel</a> - $obj5->datum<br>";
}
echo "<br> ";
echo "<b>$aantal6 gevonden imagegalleries:</b><br>";
while ($obj6 = mysql_fetch_object($sql6)) {
echo "<a href=\"imglist.php?id=$obj6->titel\">$obj6->titel</a><br>";
}
echo "<br> ";
echo "<b>$aantal7 gevonden filmposters:</b><br>";
while ($obj7 = mysql_fetch_object($sql7)) {
echo "<a href=\"imglist.php?id=$obj7->id\">$obj7->titel</a><br>";
}
}
}
echo "<FORM ACTION=\"\" METHOD=\"post\">";
echo "<center>Zoeken naar:";
echo "<INPUT TYPE=\"text\" NAME=\"naamvantekstveld\"> - ";
echo "<INPUT TYPE=\"submit\" NAME=\"Zoek\" VALUE=\"Zoek\"></center>";
echo "</FORM>";
//einde zoekmachine
?>
ik krijg deze error:
Unknown column 'titel' in 'order clause'
Gewijzigd op 01/01/1970 01:00:00 door Jaap V
Kan je niet gewoon als je 0 resultaten hebt, een nieuwe query uitvoeren ipv 0 resultaten weergeven? Of bedoel je dat je het in 1 query wil doen?
werkt zeker met if-else methode?
maar dat is niet ideaal...
hij moet eigelijk in alle 3 tegelijk zoeken...
omdat als je bijv 1 categorie hebt mt ip adres...
en de andere gaat ook over ip maar daar is de titel pc...
en je weet dat niet meer...
dan krijg je die resultaten noit meer te zien...
SELECT ... FROM ... WHERE veld1 LIKE ... OR veld2 LIKE OR veld3 LIKE ......
SELECT ... FROM ... WHERE veld1 LIKE ... OR veld2 LIKE OR veld3 LIKE ......
wordt hij dan zo ingevuld?
vind er nogal vaak zoekterm in voorkomen :P
SELECT * FROM relatie WHERE Naam LIKE '%$zoekterm%' OR Zoeknaam LIKE '%$zoekterm%' OR Adres LIKE '%$zoekterm%'
Probeer het eens zou ik zeggen.
bedankt voor de moeite! :)
--edit--
ik moet nu eigeljk zoeken in 2 tabellen:
dit is mijn code:
$sql = mysql_query("SELECT * FROM categorie WHERE Categorie LIKE '%$zoekterm%' OR Omschrijving LIKE '%$zoekterm%' ORDER BY Categorie ASC");
en deze werkt niet:
$sql = mysql_query("SELECT * FROM categorie, logboek WHERE Categorie LIKE '%$zoekterm%' OR Omschrijving LIKE '%$zoekterm%' OR Logboek LIKE '%$zoekterm%' ORDER BY Categorie ASC");
Gewijzigd op 01/01/1970 01:00:00 door Jaap V
Met de volgende query worden alle records opgehaald uit de tabel categorie die aan de voorwaarden voldoen. Daarnaast worden, als categorie_id ook bestaat in de tabel logboek, de bijbehorende gegevens uit de logboek tabel toegevoegd aan de rij.
SELECT *, categorie.categorie_id AS categorie_id FROM categorie
LEFT JOIN logboek ON categorie.categorie_id = logboek.categorie_id
WHERE categorie.Categorie LIKE '%$zoekterm%'
OR categorie.Omschrijving LIKE '%$zoekterm%'
OR categorie.Logboek LIKE '%$zoekterm%'
ORDER BY categorie.Categorie ASC
Eenvoudige LEFT JOIN tutorial:
http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php
Code (php)
1
2
3
2
3
SELECT relatie.Naam, categorie.Categorie
FROM relatie, categorie
WHERE relatie.id = categorie.c_id
FROM relatie, categorie
WHERE relatie.id = categorie.c_id
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT *
FROM categorie
WHERE Categorie
LIKE '%$zoekterm%'
OR Omschrijving
LIKE '%$zoekterm%'
ORDER BY Categorie ASC
FROM categorie
WHERE Categorie
LIKE '%$zoekterm%'
OR Omschrijving
LIKE '%$zoekterm%'
ORDER BY Categorie ASC
nu heb ik nog een klein vraagje,
als je de zoekpagina opent zoekt hij automatisch in de opgegeven kollomen...
nu wil ik eigelijk dat er boven aan de zoekpagina checkboxxen staan,
die automatisch aangevinkt zijn...
en die je uit kan vinken als je daar niet in wilt zoeken...
is dit gemakelijk te doen via if checked ofzo?
Gewijzigd op 01/01/1970 01:00:00 door Jaap V
Ja, dat is basic html.
en hoe je ze automatisch laat aanvinken...
maar geen idee als je ze uitvinkt dat hij dan niet in die kollom zoekt...
dat werkt via if else ofniet?
--edit--
dit is nu het form:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<form action="categorie_cat.php" method="post">
<p>Zoek op Categorie:</p>
<INPUT TYPE=CHECKBOX NAME="Categorie" checked>Categorie
<INPUT TYPE=CHECKBOX NAME="Omschrijving_cat" checked>Categorie omschrijving<BR>
<INPUT TYPE=CHECKBOX NAME="Logboek" checked>Logboek
<INPUT TYPE=CHECKBOX NAME="Omschrijving_log" checked>Logboek omschrijving<P>
<input type="text" name="zoekterm"><br>
<input type="submit" value="Zoeken">
</form>
<br><br>
<p>Zoek op Categorie:</p>
<INPUT TYPE=CHECKBOX NAME="Categorie" checked>Categorie
<INPUT TYPE=CHECKBOX NAME="Omschrijving_cat" checked>Categorie omschrijving<BR>
<INPUT TYPE=CHECKBOX NAME="Logboek" checked>Logboek
<INPUT TYPE=CHECKBOX NAME="Omschrijving_log" checked>Logboek omschrijving<P>
<input type="text" name="zoekterm"><br>
<input type="submit" value="Zoeken">
</form>
<br><br>
Gewijzigd op 01/01/1970 01:00:00 door Jaap V
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if(!empty($_POST['Omschrijving_cat']) OR
!empty($_POST['Omschrijving_log']))
{
echo 'SELECT *
FROM categorie ';
echo 'WHERE ';
if(!empty($_POST['Omschrijving_cat']))
echo "Categorie
LIKE '%$zoekterm%' ";
if(!empty($_POST['Omschrijving_cat']) AND
!empty($_POST['Omschrijving_log']))
echo 'OR ';
if(!empty($_POST['Omschrijving_log']))
echo "Omschrijving
LIKE '%$zoekterm%' ";
echo 'ORDER BY Categorie ASC';
} else echo 'Er is niks aangevinkt';
?>
if(!empty($_POST['Omschrijving_cat']) OR
!empty($_POST['Omschrijving_log']))
{
echo 'SELECT *
FROM categorie ';
echo 'WHERE ';
if(!empty($_POST['Omschrijving_cat']))
echo "Categorie
LIKE '%$zoekterm%' ";
if(!empty($_POST['Omschrijving_cat']) AND
!empty($_POST['Omschrijving_log']))
echo 'OR ';
if(!empty($_POST['Omschrijving_log']))
echo "Omschrijving
LIKE '%$zoekterm%' ";
echo 'ORDER BY Categorie ASC';
} else echo 'Er is niks aangevinkt';
?>
Zoiets. Moet je maar kijken hoe je 't precies doet.
Edit: iets verbeterd
Gewijzigd op 01/01/1970 01:00:00 door Michael -
komt wss omdat ik dit stukje code mis:
$sql = mysql_query
en daardoor geeft hij geen resultaten...
als ik die voor de andere code zet.
dan post hij gewoon de hele query...
heb al veel dingen geprobeerd,
maar blijf errors krijgen...
*bump*
Wat turmin post is een aanvulling op je script... , dit moet je binnen je sql query zetten .
LEFT JOIN relatie ON relatie.id = categorie.c_id
WHERE Categorie LIKE '%$zoekterm%' OR Omschrijving LIKE '%$zoekterm%'
ORDER BY Categorie ASC
Volgens mij zoek je zoiets dergelijks. Als hij meldt dat er kollommen "ambiguous" zijn betekend dit dat er 2 kollommen met dezelfde naam zijn in de tabellen, specificeer dan uit welke tabel de kollom gehaald moet worden bijvoorbeeld: SELECT *, categorie.id AS id FROM.....
Gewijzigd op 01/01/1970 01:00:00 door Lauren Zonneveld