Ik heb de opdracht van mijn werkgever gekregen om een nieuwe webshop te ontwikkelen. Dit moet gaan gebeuren m.b.v. PHP & MySQL. Nou heb ik hier al wel enige ervaring mee, maar tog loop ik nog tegen een aantal puntjes aan !
Wij krijgen onze product informatie aangeleverd van een leverancier. Alle artikelnummers, prijzen, extra text, bijna alles staat er in. En dus ook zoek termen. En daar zin mijn probleem, dat ik ga proberen uit te leggen met een voorbeeld:
Ik werk bij een bedrijf dat vooral veel in printers doet, neem nou de volgende artikelnummers van toners: HPCB540A (zwart), HPCB541A (cyaan), HPCB542A (yellow), HPCB543A (magenta). Het gaat hier om 4 toners voor in een kleuren laserjet. Zoals je ziet zijn de eerste 6 tekens het zelfde. Als ik nou op "HPCB54" zoek in de database krijg ik geen resultaten terug, omdat FULLTEXT search alleen op hele woorden zoekt. Dus is de oplossing, zoeken m.b.v. LIKE, maar ik een database met meer dan 10 000 producten is dat ook geen pretje !
Is er iemand die mij op de goede weg kan helpen ??
Is het niet gewoon mogelijk om het invoeren handmatig al dan niet automatisch aan te passen. Dus dat in het ene veld de informatie komt die de doorslag geeft bij het bepalen van de soort en in het andere veld de informatie die de kleur bepaald. Nou zul je al snel bij het punt komen dat je er achter komt dat niet ieder merk de zelfde structuur heeft op het gebied van benaming (dus lengte). Hier zou je bij het programeren wel rekening me kunnen houden. Zo stel je dan bijvoorbeeld in dat als de string met HP begint dat dan de eerste 6 tekens bepalend zijn. Bij een ander merk kun je dus ook een ander getal instellen.
Het is dus even zoeken naar alternatieven. Dit lijkt mij een oplossing die het overwegen waard is, maar kijk ook zeker naar andere alternatieven.
Edit: Heb het even voor je uitgewerkt:
<?php
// de volgende variabelen geven aan hoe lang een productcode is ZONDER de kleur
$hp_length = 6;
// de volledige product code
$een_product_code_van_hp = 'HPCB541A';
// de functie
function split_code($complete_code, $length_product_code){
return $code;
}
$code = split_code($een_product_code_van_hp, $hp_length);
echo 'De code '.$een_product_code_van_hp.' is op te delen in de volgende onderdelen: kleur ('.$code['color'].') en de productbepalende code ('.$code['product'].')';
?>
output:
De code HPCB541A is op te delen in de volgende onderdelen: kleur (1A) en de productbepalende code (HPCB54)
Dit script kun je dus ook gebruiken voor andere merken. Zo zou je de lengte van de merken in de database kunnen zetten. Bovendien moet je nog bepalen tot welk merk een code behoort. Maar dat bepalen lijkt mij niet al te moeilijk.
nee dat zijn ze niet! 10 duizend records is niets! Ik zou mijn applicatie niet aanpassen om jou reden! Sterker nog, als je weet dat de 1e 6 karakters ALTIJD hetzelfde zijn voor 1 merk, dan maakt dit het zoeken vrij eenvoudig! Ik voorzie hier niet zo veel problemen hoor!
@Danny:
Ik begrijp heel goed dat dit niet de beste oplossing is maar ik had begrepen dat marc niet kon wisselen van database type en dus aan het zoeken was naar alternatieven, nou dit is er een. Natuurlijk is het even slikken als je heel je database moet omgooien. Maargoed, ik zei al dat er meerdere alternatieven waren.