ZoekScript
Ik ben bezig om een zoekscript te maken alleen het volgende probleem is dat ik maar op 1 veld kan zoeken.
dit is mijn sql query.
wat ik wil is dat ik op voornaam of achternaam of voornaam+achternaam kan zoeken.
ik heb geen idee meer hoe ik dit moet maken.
Heb al rond gezocht op het internet maar niet iets bruikbaars kunnen vinden.
Ik hoop dat jullie mij een duwtje in de goede richting kunnen geven.
Groet,
Nick
en als je dat achternaam doet wel en alleen voor naam ook inderdaad maar als je die 2 dingen samenvoegt doet ie het niet en dat wil ik weten hoe je dat op lost.
maar bedankt voor het mee denken !
mysql full text search
Misschien dat je verder komt al zoek je op Google iets van: Gewijzigd op 27/10/2017 12:10:31 door Marthijn Buijs
Nope, hier kom ik ook niet mee verder helaas.
https://www.phphulp.nl/php/tutorial/overig/fulltext-index-in-mysql/546/
Dit geeft een heldere kijk op de werking van Fulltext Search.
Vertel anders even waar je op vastloopt.
Als $zoekwoord een voornaam EN achternaam bevat, vind je niks op voornaam en niks op achternaam.
dan zou het zo iets moeten worden.
Code (php)
1
$sql="SELECT * FROM klantenregister WHERE MATCH(voornaam,achternaam) AGAINST($zoekwoord)";
maar dan krijg ik mysqli_num_rows error...
ip: Voer je query eerst een droog uit in je MySQL-client zoals phpMyAdmin
Gewijzigd op 27/10/2017 13:40:29 door - Ariën -
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
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
<h1>Zoeken</h1>
<form action="" method="POST">
<span class="formInput">zoek:</span><input type="text" name="zoekwoord" />
<input type="submit" name="searchBtn" value="zoek!" />
</form>
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
include('config.php');
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
// Als een zoekwoord wordt ingegeven:
if($_SERVER['REQUEST_METHOD']=="POST") {
if($zoekwoord = mysqli_real_escape_string($db,$_POST['zoekwoord'])){
print '<p style="float:right;">Resultaten voor <b>'.$zoekwoord.'</b></p><br />';
print '<p style="float:left;"><h1>Resultaat:</h1></p>';
// Zoekfunctie:
$sql="SELECT * FROM klantenregister WHERE MATCH(voornaam,achternaam) AGAINST($zoekwoord)";
$result=mysqli_query($db,$sql);
// Resultaten weergeven:
if(mysqli_num_rows($result)>=1){
while($res = mysqli_fetch_assoc($result))
{
echo"<p>";
echo $res['voornaam'];
echo" ";
echo $res['tussenvoegsel'];
echo" ";
echo $res['achternaam'];
echo"</p>";
echo $res['adres']; echo" ";echo $res['huisnummer'];
echo"<br>";
echo"-----------------------------------------------------";
}
}
else{
echo"Nothing to find!!";
}
}
else{
echo"Wat jammer nou er is niks gevonden, hoe kan dat?";
}}
?>
<form action="" method="POST">
<span class="formInput">zoek:</span><input type="text" name="zoekwoord" />
<input type="submit" name="searchBtn" value="zoek!" />
</form>
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
include('config.php');
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
// Als een zoekwoord wordt ingegeven:
if($_SERVER['REQUEST_METHOD']=="POST") {
if($zoekwoord = mysqli_real_escape_string($db,$_POST['zoekwoord'])){
print '<p style="float:right;">Resultaten voor <b>'.$zoekwoord.'</b></p><br />';
print '<p style="float:left;"><h1>Resultaat:</h1></p>';
// Zoekfunctie:
$sql="SELECT * FROM klantenregister WHERE MATCH(voornaam,achternaam) AGAINST($zoekwoord)";
$result=mysqli_query($db,$sql);
// Resultaten weergeven:
if(mysqli_num_rows($result)>=1){
while($res = mysqli_fetch_assoc($result))
{
echo"<p>";
echo $res['voornaam'];
echo" ";
echo $res['tussenvoegsel'];
echo" ";
echo $res['achternaam'];
echo"</p>";
echo $res['adres']; echo" ";echo $res['huisnummer'];
echo"<br>";
echo"-----------------------------------------------------";
}
}
else{
echo"Nothing to find!!";
}
}
else{
echo"Wat jammer nou er is niks gevonden, hoe kan dat?";
}}
?>
Dit klopt ook niet helemaal. mysqli_real_escape_string hoort in je query, en niet daarbuiten.
Ook raad ik aan je PHP-code bovenaan je HTML zetten. je wilt eerst de logisca uitvoeren, en dan pas de view.
Gewijzigd op 27/10/2017 13:45:07 door - Ariën -
als ik hem droog invoer dan krijg ik die mysqli_num_rows error niet
Zorg dan in ieder geval voor goede foutafhandeling. Dus controleer of $result===false is, en toon dan een mysqli_error($db);
ja dat heb ik nu maar blijf die zelfde fout houden
Bij false toon je de mysql_error($db), en anders laat je de query netjes uitvoeren.
aaah ik krijg deze Unknown column 'test' in 'where clause'
Ik vermoed dat je dus op 'test' zocht.
Gewijzigd op 27/10/2017 14:09:14 door - Ariën -
ja ik heb inderdaad op test gezocht want dat is de voornaam en nu moet ik bij zoeken intypen voornaam en dat is niet te bedoeling
Enne, zet die mysqli_real_escape_string() op de goede plek. Het hoort NIET in een if-controle.
maar het klopt nog steeds niet.
bij inputveld moet je nu dus blijkbaar voornaam in typen in plaats van de naam zelf is toch beetje raar.
ik heb geen idee meer
Toevoeging op 27/10/2017 14:49:42:
Aah probleem solved.
ik moest in de database de engine typ ofzo aanpassen en hij pakte elke keer de add fulltext niet.
Heb de hele database opnieuw gemaakt ennu werkt het :)
Een hele database opnieuw maken is ietwat overdreven. Het is een kwestie van je indexes goed instellen.