login  Naam:   Wachtwoord: 
Registreer je!
 Forum

MySQL - Query formulier met checkbox en meerdere gecheckte waarden

Offline Mesjoggah - 19/08/2011 14:50
Avatar van MesjoggahLid Goedendag,

Op mijn website kunnen bedrijven onder andere met behulp van een checkbox groep meerdere waardes aanvinken die de capaciteit van hun bedrijf weergeven.

In de back-end van de website heb ik een formulier gemaakt. Hierin vul ik de regio en de capaciteit is, waarna de adresgegevens van de bedrijven zichtbaar worden.

Dit gaat bijna goed. 
Het probleem is dat mijn script de exacte waarde wil die in de database staat.
Heeft een bedrijf meerder waardes aangevinkt, vb. 10, 20, 30 en ik zoek iemand met een capaciteit van 20, dan wordt deze niet gevonden.

Ik moet dan exact invullen dat ik iemand zoek met een capaciteit van 10, 20, 30 en dan wordt deze gevonden.

Kan iemand mij helpen dit probleempje op te lossen ?

Het script staat hier:
http://www.plaatscode.be/141240/

(PS de sql injection kwetsbaarheid los ik nog op  )

Alvast bedankt !
Mesjoggah

13 antwoorden

Gesponsorde links
Offline vinTage - 19/08/2011 15:03
Avatar van vinTage Nieuw lid Je kan met LIKE controleren of 20 in desbetreffende kolom voorkomt.
Bedankt door: Mesjoggah
Offline Mesjoggah - 19/08/2011 15:41
Avatar van Mesjoggah Lid Dit begint mijn pet een beetje te boven te gaan ben ik bang voor.
Hoe kan ik LIKE toepassen in onderstaande ?
Zou u mij hier een beetje mee op weg willen helpen ?


INNER
JOIN jos_RSFORM_SUBMISSION_VALUES D
ON D.SubmissionId = B.SubmissionId
AND D.FieldName = 'capaciteit'
AND D.FieldValue = '" . $_POST['Capaciteit'] . "'
WHERE A.FormId = 2";


Bedankt,
Mesjoggah
Offline vinTage - 19/08/2011 15:50 (laatste wijziging 19/08/2011 15:53)
Avatar van vinTage Nieuw lid AND D.FieldValue LIKE '" . $_POST['Capaciteit'] . "'

als ik je goed begrijp 

als je een % (wildcard) gebruikt zoek je niet exact natuurlijk.

bv als je zoekt naar 20

like '% 20' // 12320 zal ook voorkomen
like '20 %' // 20123 zal ook voorkomen
like '20' //je zoekt naar exact 20
Offline Mesjoggah - 19/08/2011 16:03 (laatste wijziging 19/08/2011 16:07)
Avatar van Mesjoggah Lid Ik denk dat je me wel begrijpt !
En anders moet ik beter mijn best doen on mijn probleem duidelijk te maken ! 
In de database staan onder andere deze waarden, welke door een gebruiker op de frontend van de website in een formulier zijn ingevuld:
Capaciteit 10-20
20-30
175-200
400-450

In de backend heb ik ook een formulier met een identieke checkbox, maar met de action de in het script in de eerste post staat. In dit formulier vink ik maar 1 waarde aan.

Als ik in de backend aanvink dat ik iemand zoek met een capaciteit van 20-30, dan wil ik graag dat het bedrijf wat ik in dit voorbeeld noem tevoorschijn komt.
Offline vinTage - 19/08/2011 16:09
Avatar van vinTage Nieuw lid Ik denk dan dat je gewoon dit kunt gebruiken:
AND D.FieldValue LIKE '" . $_POST['Capaciteit'] . "'


als iemand <input .. value = '20' /> verzend, zal die gevonden worden.
Offline Mesjoggah - 19/08/2011 17:05 (laatste wijziging 19/08/2011 22:21)
Avatar van Mesjoggah Lid Hmm, ik krijg geen error, maar een blanco pagina.
Het lijkt er op dat er niets wordt gevonden.....

Even verder gekeken, geexperimenteerd etc, Dit geeft wel resultaten weer:

JOIN jos_RSFORM_SUBMISSION_VALUES D
ON D.SubmissionId = B.SubmissionId
AND D.FieldName = 'capaciteit'
AND D.FieldValue LIKE '%10-20%'
WHERE A.FormId = 2
Offline Ibrahim - 27/08/2011 02:29
Avatar van Ibrahim PHP expert @vintage, als je naar exacte waarden zoekt, kun je net zo goed "=" gebruiken...
Offline vinTage - 27/08/2011 08:08 (laatste wijziging 27/08/2011 08:13)
Avatar van vinTage Nieuw lid
Ibrahim schreef:
@vintage, als je naar exacte waarden zoekt, kun je net zo goed "=" gebruiken...


Nee...Want als hij in zn database iets in deze vorm heeft staan
10-20-30-40 dan krijg je nooit resultaat met = '10-20'

Als hij zn database zodanig heeft ingericht dat er maar -een- waarde in dat veld staat, dan kan het weer wel, maar dit lijkt mij van niet als je onderstaande quote bekijkt.

Mesjoggah schreef:
In de database staan onder andere deze waarden, welke door een gebruiker op de frontend van de website in een formulier zijn ingevuld:
Capaciteit 10-20
20-30
175-200
400-450
Offline Ibrahim - 27/08/2011 14:40
Avatar van Ibrahim PHP expert Dan krijg je ook nooit waarden als je LIKE '10-20' gebruikt, daarvoor moet je wel degelijk de % teken gebruiken.
Offline vinTage - 27/08/2011 22:03 (laatste wijziging 27/08/2011 22:40)
Avatar van vinTage Nieuw lid Duh, dat zei ik toch in deze reply...dat was een opsomming van mogelijkheden, waarvan de laatse idd vervangen kan worden door =.

Geef die jongen anders zelf antwoord ipv mij te 'corrigeren' ik wist dat al  


edit 25:
oh je doelt op mn post waarbij ik zei like($_POST..

In dat geval heb je gelijk :aureooltje:
Maar dat was ook slechts een voorbeeld, ik hoopte daar dat de ts de wildcard al begreep 

Ibrahim schreef:
Ik wilde dat de poster inzag wat de oplossing was. Net zoals jij inzag wat ik bedoelde 
Offline larssy1 - 29/08/2011 11:26
Avatar van larssy1 MySQL beginner Vind het wel grappig om te zien dat iemand geen verstand heeft van basic LIKES terwijl hij toch echt INNER JOINS gebruikt 

daarnaast..
AND D.FieldValue LIKE '%10-20%' ??

Nu zoek je alsnog op 10-20 en niet op 20..
Offline vinTage - 29/08/2011 11:41
Avatar van vinTage Nieuw lid Dat moest ook volgens deze post 
Offline larssy1 - 29/08/2011 13:04 (laatste wijziging 29/08/2011 13:05)
Avatar van larssy1 MySQL beginner
vinTage schreef:
Dat moest ook volgens deze post 

Oh, had deze post niet bepaald goed gelezen mijn excuses xD
dacht dat hij alleen hierop zocht omdat hij anders 94520 etc ook kreeg 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.171s