Hulp bij array en exacte match zoeken
ID ---- product ---- bproduct ----.....
Nu heb ik al volgende code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
$result = mysql_query("SELECT * FROM producten WHERE bproduct LIKE '%$postproduct%'");
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row['product'] . explode(" ", $row['bproduct']);
}
foreach ($data as $word) {
$lev = levenshtein($word, $postproduct);
if ($lev == 0) {
$closest = $begripd;
$shortest = 0;
break;
}
}
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row['product'] . explode(" ", $row['bproduct']);
}
foreach ($data as $word) {
$lev = levenshtein($word, $postproduct);
if ($lev == 0) {
$closest = $begripd;
$shortest = 0;
break;
}
}
Wat de bedoeling is van het script:
Iemand voert een woord in dat mogelijk verkeerd geschreven is om het makkelijk te houden: appel -> apel
in bproduct staan alle mogelijke schrijffouten die worden goedgekeurd dit kunnen er meer zijn vandaar dat het in een array wordt opgeslagen (met explode).
Nu post de gebruiker dus een misschien fout gespeld woord.
Nu is het de bedoeling dat wanneer het woord niet in de database staat als product er gekeken wordt naar bproduct of het daar mogelijk ergens staat (LIKE % %) en als er een exacte match wordt gevonden zou het het juiste product moeten echoen.
Dus ik geef een voorbeeldje:
ik voer als gebruiker apel in
in de database staat het volgende:
ID ---- product ---- bproduct ----.....
15 appel apel ppel appe
Dan zou het script als output moeten geven: appel
want in bproduct staat exact hetzelfde woord als apel
Alvast bedankt voor de hulp ik hoop dat ik al wat in de goede buurt zit maar durf het niet te zeggen aangezien ik een beetje aan het knoeien ben met die arrays ...
ik heb het zelf opgelost gekregen ik ga het anders doen LIKE '%$postproduct%'" heb ik vervangen naar LIKE '%' ' $postproduct' '%'" zo krijg ik precies wat ik wou en zonder veel moeite. Sorry voor hen die het al probeerden op te lossen, maar toch bedankt!
Gewijzigd op 04/08/2014 15:42:35 door Jos Verstraeten
Geen arrays opslaan in een database. Dan ben je direct alle voordelen van een database kwijt. Maak een aparte tabel voor al die verkeerde woorden en link die aan de producten via het id. 1 woord per record, zodat je gewoon alle records kan vinden die aan dat woord voldoen en vervolgens join je de product tabel eraan.
bedankt erwin !