Bepaalde klanten ophalen op basis van aanvrager gegevens
Ik ben bezig met een offerte website waar een consument offertes kan ontvangen van bedrijven in een straal van 20 km op basis van de latitude en longitude.
De consument heeft tijdens het aanvragen de optie om 3 checkboxes te selecteren:
Garantie,
Leentoestel,
Klaar terwijl u wacht service.
De code om de klanten op te halen binnen 20 km heb ik al en werkt perfect maar om enkel de klanten te selecteren die aan de aanvraag eisen voldoen heb ik meer moeite mee. Ik hoop dat ik dit rechtstreeks in de sql query kan doen, alle kolommen die bovenstaand genoemd zijn staan in dezelfde tabel "klanten".
Dit is de code voor enkel de klanten in 20 km straal op te halen ,ik wil graag ook de opties erin verwerken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$tableName = "klanten";
$origLat = $sLatitude;
$origLon = $sLongitude;
$dist = 20 ; // This is the maximum distance (in miles) away from $origLat, $origLon in which to search
$query = "SELECT *, 6371 * 2 *
ASIN(SQRT( POWER(SIN(($origLat - abs(latitude))*pi()/180/2),2)
+COS($origLat*pi()/180 )*COS(abs(latitude)*pi()/180)
*POWER(SIN(($origLon-longitude)*pi()/180/2),2)))
as distance FROM $tableName WHERE
longitude between ($origLon-$dist/abs(cos(radians($origLat))*69))
and ($origLon+$dist/abs(cos(radians($origLat))*69))
and latitude between ($origLat-($dist/69))
and ($origLat+($dist/69))
having distance < $dist ORDER BY distance limit 100;";
$result = $db->query($query);
while ($rows = mysqli_fetch_assoc($result))
{
// Hier binnen zijn de dichtsbijzijnde bedrijven in 20 km straal.
}
?>
$tableName = "klanten";
$origLat = $sLatitude;
$origLon = $sLongitude;
$dist = 20 ; // This is the maximum distance (in miles) away from $origLat, $origLon in which to search
$query = "SELECT *, 6371 * 2 *
ASIN(SQRT( POWER(SIN(($origLat - abs(latitude))*pi()/180/2),2)
+COS($origLat*pi()/180 )*COS(abs(latitude)*pi()/180)
*POWER(SIN(($origLon-longitude)*pi()/180/2),2)))
as distance FROM $tableName WHERE
longitude between ($origLon-$dist/abs(cos(radians($origLat))*69))
and ($origLon+$dist/abs(cos(radians($origLat))*69))
and latitude between ($origLat-($dist/69))
and ($origLat+($dist/69))
having distance < $dist ORDER BY distance limit 100;";
$result = $db->query($query);
while ($rows = mysqli_fetch_assoc($result))
{
// Hier binnen zijn de dichtsbijzijnde bedrijven in 20 km straal.
}
?>
Gewijzigd op 22/12/2015 15:34:46 door Furio Scripting
Op basis daarvan bouw je de query op met where.
Obelix en Idefix op 22/12/2015 15:52:51:
Je kunt toch controleren of 1 of meer checkboxen zijn aangevinkt?
Op basis daarvan bouw je de query op met where.
Op basis daarvan bouw je de query op met where.
Ja ik heb via if elses of een 0 of een 1.
Dus if checkbox "garantie" == aangevinkt
{
$garantie = 1;
}
Dan zou ik in de query kunnen zeggen WHERE garantie = 1 maar waar voeg ik die in bij de huidige query, ik krijg steeds sql errors dus ik zal hem wel niet op de juiste plek zetten?
wat doe je dan precies?
Query bouw je op in delen. Je huidige query zul je moeten opsplitsen.
Het is gelukt en was dus heel simpel achter de WHERE kon ik zetten AND garantie = "'.$iGarantie.'".... ANd leentoestel = "'.$ileentoestel.'" etc..