Zoekopdracht
Code (php)
1
2
3
4
2
3
4
<?php $result = mysql_query("SELECT * FROM database
WHERE Naamveld='". $Naam . "'") or die(mysql_error());
Echter wil ik graag dat hij niet naar het exacte woord ($Naam) zoekt maar dat een veld (Naamveld) dit woord ($Naam) dient te bevatten. Contain dus. Hoe ziet de code er dan uit?
WHERE Naamveld='". $Naam . "'") or die(mysql_error());
Echter wil ik graag dat hij niet naar het exacte woord ($Naam) zoekt maar dat een veld (Naamveld) dit woord ($Naam) dient te bevatten. Contain dus. Hoe ziet de code er dan uit?
kijk eens naar LIKE
Thanks. Hoe ziet dit er dan uit in de code?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php $result = mysql_query("SELECT * FROM horeca
WHERE
Naam LIKE '%". $Naam_temp . "%'OR
Leeftijd LIKE '%" . $Leeftijd_temp ."%' OR
Sluitingstijd LIKE '%" . $Sluitingstijd_temp . "%' OR
Muziekstijl LIKE '%" . $Muziekstijl_temp . "%' OR
Biermerk LIKE '%" . $Biermerk_temp . "%'
") or die(mysql_error());
WHERE
Naam LIKE '%". $Naam_temp . "%'OR
Leeftijd LIKE '%" . $Leeftijd_temp ."%' OR
Sluitingstijd LIKE '%" . $Sluitingstijd_temp . "%' OR
Muziekstijl LIKE '%" . $Muziekstijl_temp . "%' OR
Biermerk LIKE '%" . $Biermerk_temp . "%'
") or die(mysql_error());
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
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
<?php
$sql = "SELECT * FROM horeca
WHERE
Naam LIKE '%". $Naam_temp . "%'OR
Leeftijd LIKE '%" . $Leeftijd_temp ."%' OR
Sluitingstijd LIKE '%" . $Sluitingstijd_temp . "%' OR
Muziekstijl LIKE '%" . $Muziekstijl_temp . "%' OR
Biermerk LIKE '%" . $Biermerk_temp . "%'
"; // sql code
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql); // fout weergeven indien
}
elseif(mysql_num_rows($res) == 0) // kijken of aantal rijen niet 0 is
{
echo 'Geen resultaten gevonden';
}
else
{
while($row = mysql_fetch_assoc($res))
{
echo $row['voornaam'].'<br />';
}
}
?>
$sql = "SELECT * FROM horeca
WHERE
Naam LIKE '%". $Naam_temp . "%'OR
Leeftijd LIKE '%" . $Leeftijd_temp ."%' OR
Sluitingstijd LIKE '%" . $Sluitingstijd_temp . "%' OR
Muziekstijl LIKE '%" . $Muziekstijl_temp . "%' OR
Biermerk LIKE '%" . $Biermerk_temp . "%'
"; // sql code
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql); // fout weergeven indien
}
elseif(mysql_num_rows($res) == 0) // kijken of aantal rijen niet 0 is
{
echo 'Geen resultaten gevonden';
}
else
{
while($row = mysql_fetch_assoc($res))
{
echo $row['voornaam'].'<br />';
}
}
?>
SELECT * FROM horeca WHERE Naam LIKE '%bar%'OR Leeftijd LIKE '%%' OR Sluitingstijd LIKE '%%' OR Muziekstijl LIKE '%%' OR Biermerk LIKE '%%'
Probeer eens een spatie toe te voegen net voor Leeftijd en als er %% betekent dat dat alle resultaten waarschijnlijk worden weergegeven, want alles lijkt op alles.
Dat betekent dus dat je (bijvoorbeeld) met een foreach() door alle $_POST waarden moet wandelen om te kijken in welke kolommen (van je databasetabel) je wilt kijken.
Je moet dus de query al dynamisch bouwen. Daarna (op dezelfde manier) laten echoën.
Ik heb een mysql database als volgt:
Kolom "Naam" Kolom "Minimumleeftijd" Kolom "Muziekstijl"
Regels:
Cafe1 18,21 house, RenB
Cafe2 21 apreski, nederlands, top40
Cafe3 16 top40, 90s, 80s
Hoe krijg ik nu output dat bij zoekopdracht top40 cafe2 en cafe3 weergegeven worden
Dan kan natuurlijk niet.
meende door te zoeken naar een woord ( LIKE "%%") in een kolom dit op te lossen maar werkt dus schijnbaar niet. Hoe kan ik dit beter oplossen en hoe kan ik de tabel dan het beste opzetten.
Of is dit een ongeldige syntax? Kreeg dit voorbeeld zo snel niet gevonden.
Is die link nu voor Hay of mij bedoeld?
Voornamelijk voor de TS
Chris NVT op 29/05/2012 11:35:25:
Ik was benieuwd of dit ook mag/werkt. Aangezien ik het nu zelf niet kan testen, vraag ik het maar gelijk.
Of is dit een ongeldige syntax? Kreeg dit voorbeeld zo snel niet gevonden.
Of is dit een ongeldige syntax? Kreeg dit voorbeeld zo snel niet gevonden.
Nee, je mist hier het WHERE gedeelte. LIKE kan je alleen gebruiken in een vergelijking met een kolom. Dit is dus wel geldig:
Waar je dan alleen rekening mee moet houden is dat als $var een lege string is, dat je dan alle records terugkrijgt. Dat is ook waar de TS op vast loopt. Als je dus een zoekopdracht wil doen op meerdere velden, moet je de WHERE condities weglaten waar de zoekstring leeg is. Je zal dan dus dynamisch je SQL statement moeten opbouwen.
Thnx! Ik wist dus niet zeker of de WHERE ook verplicht was, wel dus :D Ik denk dan heb je het probleem in 1x getackeld en zoekt hij gewoon die hele tabel door ;).
Ik ben momeneteel ook bezig met een database driven website, en wil er een zoekfunctie in maken. Maar dan heb ik nog een leuke uitdaging om een goed script te schrijven.
Echter wil ik het wel met maar 1 zoekveld doen, dus zal ik dat op verschillende kollommen moeten toepassen. Zoals bijv titel, summary, content, etc. Maar dat moet geen probleem zijn lijkt me. Gewoon een foutafhandeling erin maken dat bij een lege string hij een melding weergeeft.
Dank u voor de opheldering :D
Eerst controleren of de var's gevuld zijn, dan de OR er in gooien.
Chris NVT op 29/05/2012 11:46:52:
@SanThe,
Is die link nu voor Hay of mij bedoeld?
Is die link nu voor Hay of mij bedoeld?
Voor Hay.
$sql = "SELECT * FROM tabel1 WHERE Waarde='" . $1_temp . "' OR Waarde='" . $2_temp . "' OR Waarde='" . $3_temp . "' OR Waarde='" . $4_temp . "'" ;
// sql code
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql); // fout weergeven indien
}
elseif(mysql_num_rows($res) == 0) // kijken of aantal rijen niet 0 is
{
echo 'Geen resultaten gevonden';
}
else
{
while($row = mysql_fetch_assoc($res))
{
echo $row['Alias'].'<br />';
}
}
echo $sql
echter moet niet het veld Alias een echo krijgen maar een aantal velden uit tabel waarbij veld Alias uit tabel 1 overeenkomt met het veld alias uit tabel 2