Har en liten fråga. En kund skall ha ett rabattkodssystem där kunden skriver in olika koder för att få rabatter. Men nu har det även kommit fram att de även vill att vissa kunder skall kunna använda nummer från medlemskort, och inte köra en realtidscheckning av kortnummret, utan enbart gå på de 9 eller i vissa fall 6 första siffrorna på kortet. Vi admin-gränssnittet skall de alltså kunna lägga in wildcard kortnummer, typ 123456*******.
Hur matchar jag via PHP/mySQL så att om användaren skriver in 123456123456 så ska den förstå att den skall validera mot 123456*******?
Mjo, men det kan ju vara olika antal tecken som jag ska jämföra.... I vissa fall så skall 12345678900000 godkännas mot 123456789*****, men i vissa fall skall 123456000000 godkännas mot 123456******... typ...
Om jag förstått dig rätt så är 123456******* ett värde som skickas in via formulär eller motsvarande.
Då borde det inte vara några problem att rensa bort *** från det postade. Sedan använda strlen() för att att ta fram längden, och bygga upp SQL-frågan.
Nope.. Du har inte förstått mig rätt. 123456****** sparas i databasen. 123456000000 skickas in från formuläret. Problemet är att antalet tecken innan "wildcardsen" kan variera...
Det borde gå att med LOCATE() och SUBSTRING() plocka ut siffrorna, för att sedan göra en jämförelse med LIKE.
Har du då "tal" både med och utan * lär du troligtvis behöva använda IF() också.
Alternativt kan du loopa igenom alla rader och göra dina jämförelser med PHP, men detta är ingen höjdarvariant om du har många poster.
Hm... Jag tror nog att det enklaste är att göra allt omvänt liksom, plocka ut värderna från databasen och jämför med inputen, för att istället jämföra inputen mot databasen... Men som du säger, ingen höjdar variant direkt...