Ik wil nummers filteren in mijn systeem. In mijn database heb ik de volgende prefixen (begin cijfers) ingevoerd:

PREFIX | Bedrijf
12- Bedrijf A
455- Bedrijf B
2344444456 - Bedrijf C
233 - Bedrijf D

Nu wil ik dat als ik via GET een waarde invoer, bijvoorbeeld 1233333 dat ik dan Bedrijf A krijg.

Hoe moet ik het aanpakken? Kan iemand mij helpen?
Bedankt!
strpos levert de positie waarop de gezochte string het eerst vookomt. Als je dus zoals in Blanche's voorbeeld op == 0 checkt, komt het goed.
Het is verboden om in dit tijdperk nog te denken aan ereg functies, deze zij `DEPRECATED`

Doe het nu gewoon met een SQL Statement dat is vele male handiger.

En ik zie nu dat er iemand zo onhandig is om de LIKE aan te brengen, daar gaat het uiteraard niet mee lukken.
Ben ik nou gek of ben ik 't hele principe van de LIKE functie kwijt? Of ik begrijp de vraag niet?
Blanche PHP op 31/05/2010 21:37:38

Door te kijken of strpos() de waarde 0 oplevert?

<?php
$nummer = '0632123456';

if(strpos($nummer, '0632') == 0) {
echo 'Simyo';
}
?>

En dan uiteraard ingevuld met behulp van de gegevens uit je database.

edit: Of uiteraard de SQL variant hiervan en dit direct in de query doen. Dat heeft de voorkeur!


Natuurlijk (als je dit soort dingen doet) de stricte vergelijkingsoperator gebruiken. Op deze manier krijg je alleen niet 'Simyo' te zien als '0632' zich wel in de string bevindt maar niet op de eerste positie.
Jesse Degger op 31/05/2010 22:09:09

Ben ik nou gek of ben ik 't hele principe van de LIKE functie kwijt? Of ik begrijp de vraag niet?


Ben bang dat je de vraag niet begrijpt, waardoor je dus nu verwarring zaait met LIKE
Okee! Ik begrijp het.
Dan maar Strpos() gebruiken. Nu kom ik bij de moeilijkste (voor mij althans), hoe kan ik het combineren met database? In mijn database gaan heel veel reeksen staan met heel veel providers.

Hoe kan ik het effectief doen?
Noppes Homeland op 31/05/2010 22:20:04

[quote="Jesse Degger op 31/05/2010 22:09:09"]
Ben ik nou gek of ben ik 't hele principe van de LIKE functie kwijt? Of ik begrijp de vraag niet?


Ben bang dat je de vraag niet begrijpt, waardoor je dus nu verwarring zaait met LIKE
[/quote]
Ik zie nu dat ik het juist omdraaide. Mijn fout.



Moet ik het controleren misschien met While doen?
Je zou de te controleren prefixen met bijbehorend bedrijf in een array kunnen opslaan. Vervolgens deze array met een foreach loop doorlopen en met strpos() kijken of de $_GET variabele hieraan voldoet...
Jesse Degger op 31/05/2010 21:54:45

Gewoon een
LIKE '".$prefix."%';


gebruiken?

inderdaad toch wel!
 WHERE '123333' LIKE CONCAT(veldnaam, '%') 

[edit]
Let erop dat dit soort queries niet super vlot zijn:
Toon Records 0 - 4 (5 totaal, Query duurde 25.1336 sec)

op een tabel met 20000 records (en ik gebruikte een veld waar een index op staat)
[/edit]

Reageren