ik ben bezig met een systeem wat interessante opdrachten kan opleveren voor een gebruiker.
Zeg maar een "interessant voor u" systeem...
Hierbij moet rekening worden gehouden of de postcode van de opdracht valt binnen de straal
wat gelinkt is aan zijn account. En of het gekozen vakgebied waaronder de opdracht valt,
ook gekozen is binnen zijn vakgebieden pakket.
Onderstaand de code, het script werkt maar het is ontzettend traag... hoe kan ik dit beter aanpakken?
Hoor het graag van jullie!
<?php
$vakgebieden_SQL = mysql_query($vakgebieden_select);
while($vakgebieden = mysql_fetch_array($vakgebieden_SQL)){
echo "<h3>".$vakgebieden["vgebied_naam"]."</h3>";
$postcode_a = str_replace(' ', '', preg_replace("/[^a-z0-9]/i", "", $user['gebruiker_postcode']));
$postcode = substr_replace($postcode_a, ' ', 4, -2);
// NAGELEGEN POSTCODES ZOEKEN ADHV DE STRAAL
$rs = mysql_query("SELECT * FROM beheer_postcodes WHERE 6PP LIKE '%".$postcode."%'");
if(mysql_num_rows($rs) == 0) {
echo "Er werd geen postcode gevonden";
} else {
//if found, set variables
$row = mysql_fetch_array($rs);
$lat1 = $row['Lat'];
$lon1 = $row['Lng'];
$d = $pakket['pakket_straal'];
//echo $postcode;
//earth's radius in kms
$r = 6371;
//compute max and min latitudes / longitudes for search square
$latN = rad2deg(asin(sin(deg2rad($lat1)) * cos($d / $r) + cos(deg2rad($lat1)) * sin($d / $r) * cos(deg2rad(0))));
$latS = rad2deg(asin(sin(deg2rad($lat1)) * cos($d / $r) + cos(deg2rad($lat1)) * sin($d / $r) * cos(deg2rad(180))));
$lonE = rad2deg(deg2rad($lon1) + atan2(sin(deg2rad(90)) * sin($d / $r) * cos(deg2rad($lat1)), cos($d / $r) - sin(deg2rad($lat1)) * sin(deg2rad($latN))));
$lonW = rad2deg(deg2rad($lon1) + atan2(sin(deg2rad(270)) * sin($d / $r) * cos(deg2rad($lat1)), cos($d / $r) - sin(deg2rad($lat1)) * sin(deg2rad($latN))));
$postcodes_SQL = mysql_query("SELECT * FROM beheer_postcodes WHERE (Lat <= ".$latN." AND Lat >= ".$latS." AND Lng <= ".$lonE." AND Lng >= ".$lonW.")");
// QUERY SUFGGESTIES
$suggesties_SQL = "SELECT o.*, p.*
FROM beheer_opdrachten o
LEFT JOIN beheer_gebruikers p
ON (p.gebruiker_randID = o.gebruiker_randID AND p.gebruiker_soort='2' AND o.opdracht_vgebied = '".$vakgebieden["vgebied_id"]."')
WHERE o.opdracht_actief != '0' AND o.opdracht_gesloten != '1'
";
while($postcodes = mysql_fetch_array($postcodes_SQL)){
//echo $postcodes['6PP'];
$suggesties_SQL .= " OR p.gebruiker_postcode LIKE '".$postcodes['6PP']."'
OR p.gebruiker_postcode LIKE '".str_replace(' ', '', $postcodes['6PP'])."' ";
}
$suggesties_SQL .= "";
//echo $suggesties_SQL;
$suggesties = mysql_query($suggesties_SQL);
while($suggestie = mysql_fetch_array($suggesties)){
echo $vakgebieden["vgebied_id"]." ".$suggestie['opdracht_titel'];
echo "<br /><br />";
}
}
}
?>