De situatie
Ik heb een aantal rijen in de tabel `onderdelen`, de kolommen zijn;
ond_id (unique) en omschrijving (varchar, 50).
Het id wordt tevens getoond aan de gebruiker, echter wordt deze geconverteerd naar een zogeheten onderdeelnummer.
De conversie is niets anders als de som van het id met een honderdduizend-tal; in mijn situatie is dit id+500000- en tevens wordt er een number_format() overheen gehaald die een punt plaatst voor de duizendtallen.
Ofwel; 5 wordt bijvoorbeeld getoond als 500.005.
Het probleem..
Dit tonen is vanzelfsprekend geen probleem, maar het zoeken wel- de bezoeker heeft de mogelijkheid te zoeken in de database mb.v. een POST-formuliertje. Met de ontvangen zoek-string stel ik een query samen die zoekt binnen alle velden (ter informatie, mijn voorbeeld tabelstructuur is uiterst versimpeld daar tevens gebruik gemaakt wordt van joins e.d.).
Een voorbeeld record;
ond_id = 1,
omschrijving = 'grote stekker'
Als de bezoeker gaat zoeken op `stekker` dan wordt dit record gevonden, dit levert geen enkel probleem op. Echter, als de bezoeker zoekt op `500.001` - iets wat veel gaat gebeuren - dan vindt hij de record vanzelfsprekend níet.
Ik ben totaal niet thuis in de MySQL string functies maar mijn vraag is eigenlijk hoe ik dit het beste ga aanpakken.
Eventuele oplossing
Een oplossing kán zijn om alvorens de query op te bouwen met de ontvangen waarde, te kijken of deze waarde voldoet aan een reguliere expressie, bijv.
... maar ik ben van mening dat dit ook wel direct in de query te converteren is.
Daarnaast gaat dat toch problemen opleveren, omdat er bijvoorbeeld ook gezocht kan worden op onderdeelnummers (`fabrikantnummers`) die er bijvoorbeeld zo uitzien:
`1234.45.678`.
Ik heb een aantal rijen in de tabel `onderdelen`, de kolommen zijn;
ond_id (unique) en omschrijving (varchar, 50).
Het id wordt tevens getoond aan de gebruiker, echter wordt deze geconverteerd naar een zogeheten onderdeelnummer.
De conversie is niets anders als de som van het id met een honderdduizend-tal; in mijn situatie is dit id+500000- en tevens wordt er een number_format() overheen gehaald die een punt plaatst voor de duizendtallen.
Ofwel; 5 wordt bijvoorbeeld getoond als 500.005.
Het probleem..
Dit tonen is vanzelfsprekend geen probleem, maar het zoeken wel- de bezoeker heeft de mogelijkheid te zoeken in de database mb.v. een POST-formuliertje. Met de ontvangen zoek-string stel ik een query samen die zoekt binnen alle velden (ter informatie, mijn voorbeeld tabelstructuur is uiterst versimpeld daar tevens gebruik gemaakt wordt van joins e.d.).
Een voorbeeld record;
ond_id = 1,
omschrijving = 'grote stekker'
Als de bezoeker gaat zoeken op `stekker` dan wordt dit record gevonden, dit levert geen enkel probleem op. Echter, als de bezoeker zoekt op `500.001` - iets wat veel gaat gebeuren - dan vindt hij de record vanzelfsprekend níet.
Ik ben totaal niet thuis in de MySQL string functies maar mijn vraag is eigenlijk hoe ik dit het beste ga aanpakken.
Eventuele oplossing
Een oplossing kán zijn om alvorens de query op te bouwen met de ontvangen waarde, te kijken of deze waarde voldoet aan een reguliere expressie, bijv.
code:
1
| ^([0-9]{0,3})?\.[0-9]{1,}$ |
... maar ik ben van mening dat dit ook wel direct in de query te converteren is.
Daarnaast gaat dat toch problemen opleveren, omdat er bijvoorbeeld ook gezocht kan worden op onderdeelnummers (`fabrikantnummers`) die er bijvoorbeeld zo uitzien:
`1234.45.678`.