Juist nietquote:Op dinsdag 16 juni 2009 12:39 schreef Intrepidity het volgende:
Wat ik meestal wel een nette oplossing voor dat soort dingen vind is een extra tabelletje, iets als events ofzo.. en met een trigger noteer ik daar dan timestamps in die ik moet bewaren. Zo heb je een complete geschiedenis, niet alleen de vorige gebeurtenis.. Misschien wat overkill voor je situatie
1 2 3 4 5 6 7 8 | { if(isset($sql) { return $sqlcount++; } return 0; } |
Hoe bedoel je met loggen?quote:Op woensdag 17 juni 2009 07:38 schreef Scorpie het volgende:
Waarom log je niet gewoon welke query je uitvoert op het moment dat je hem uitvoert? Zo doe ik het iig, tijdens developen log ik alle sql query`s.
1 2 | $count_query++: |
Naar een log-bestand, een textbestandje met niks anders dan informatie over acties die een gebruiker doet, query`s die uitgevoerd worden, en alle andere informatie waar je als ontwikkelaar wat aan kan hebben als er zich bugs bevinden of tijdens het ontwikkelen.quote:
quote:02-05-2009 21:25:55: DEBUG: coredatabase class - Executed query SELECT * from SB_sandwiches | Duration 0.00066400 seconds
Hoe maak je zoietsquote:Op woensdag 17 juni 2009 07:42 schreef Scorpie het volgende:
[..]
Naar een log-bestand, een textbestandje met niks anders dan informatie over acties die een gebruiker doet, query`s die uitgevoerd worden, en alle andere informatie waar je als ontwikkelaar wat aan kan hebben als er zich bugs bevinden of tijdens het ontwikkelen.
Vrij simpel: je maakt een aparte class die een textbestandje opent, een regel wegschrijft en weer dicht doet.quote:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | private function log($message, $level) { if (CMS_DB_QUERY_DEBUG) { if ($log = @fopen(LOG_FILE, "a+")) { $date = date(INTERNAL_DATE_CONSTANT); $string = $date.": ".$level.": ".$message; fwrite($log, $string."\r\n"); fclose($log); } else { echo "Logging failed!"; } } } ?> |
ik heb hem gekopieerd :p alleen waar moet ik hem erinstoppen?quote:Op woensdag 17 juni 2009 07:45 schreef Scorpie het volgende:
[..]
Vrij simpel: je maakt een aparte class die een textbestandje opent, een regel wegschrijft en weer dicht doet.
Mijn functie:
[ code verwijderd ]
tof stel ik wil bijhouden welke php errors de gebruiker kreeg op welk bestandquote:Op woensdag 17 juni 2009 07:54 schreef Scorpie het volgende:
Je moet hem wel ff goed nalopen, er staan een aantal constantes van mij in die moet je aanpassen.
Daarna moet je ff het woord private ervanaf halen, anders kom je er niet bij.
Daarna is het een kwestie van aanroepen door log("dit ging fout!","error"); te doen.
ah dat is een optie die ik zeker ga overwegenquote:Op woensdag 17 juni 2009 08:41 schreef Xcalibur het volgende:
je kan ook gewoon van $sql een array maken, en daar al je queries inzetten
Dan kan je met een count($sql) zien hoeveel queries je hebt gedraaid
1 2 3 | count($sql); |
quote:Op woensdag 17 juni 2009 07:57 schreef cablegunmaster het volgende:
[..]
tof stel ik wil bijhouden welke php errors de gebruiker kreeg op welk bestand
Alvast bedankt ik denk dat ik dit wel kan aanpassen![]()
ja , maar ik kom er niet achter hoe ik die kan veranderen. denk dat mijn config file niet meewerkt herstart ik xampp doet hij het nog niet.quote:Op woensdag 17 juni 2009 09:12 schreef Scorpie het volgende:
[..]
Nou ja ik gebruik deze logger vooral om acties te loggen, dus zeg maar wanneer iemand inlogged, dan schrijf ik een regel weg met "Gebruiker A is ingelogged", dat soort dingen.
Je kan het ook wel gebruiken om errors van PHP te loggen, maar die worden standaard al gelogged.
Das ook wat anders dan deze loggerclass die ik gemaakt hebquote:Op woensdag 17 juni 2009 09:36 schreef cablegunmaster het volgende:
[..]
ja , maar ik kom er niet achter hoe ik die kan veranderen. denk dat mijn config file niet meewerkt herstart ik xampp doet hij het nog niet.
wat ik doe :
ik open php5.ini C:\xampp\php\php5.ini
1: reg 353 error_log = "C:\xampp\htdocs\cablegunmaster v3.0\log_file.txt"
alleen hij wil hem niet zo hebben :p want hij logt nog steeds in de standaard locatie
Kwam ik ook achter dit is voor nette foutmelding naar de user toequote:Op woensdag 17 juni 2009 09:42 schreef Scorpie het volgende:
[..]
Das ook wat anders dan deze loggerclass die ik gemaakt heb
zet eens voor de functie LOG_FILE = "c:\log.txt";
In principe wel ja. Het is alleen wel handig om je query een naam te gevenquote:Op woensdag 17 juni 2009 09:06 schreef cablegunmaster het volgende:
[..]
ah dat is een optie die ik zeker ga overwegen.
maar dan maak ik voor elke query. als praktisch voorbeeld:
[ code verwijderd ]
?![]()
Ik heb zelf een functie die mysql_query() overkoepelt en wanneer ik mijn Boolean $Log aan zet, de queries die uitgevoerd worden in String-vorm naar een log bestand schrijven. Want de query die je in functie mysql_query() gebruikt is niet meer dan dat, een String.quote:Op woensdag 17 juni 2009 09:55 schreef Intrepidity het volgende:
Over het loggen van SQL queries gesproken.. Is er ook een manier om af te vangen wat er EXACT naar de database gestuurd word? Ik maak gebruik van PDO, en als ik mijn queries log staan de variabelen hier nog in.. iets als "SELECT * FROM tabel WHERE veld = :waarde". Bij debuggen heb ik daar soms niet zo gek veel aan..
Ja, maar ik wil wel gebruik blijven maken van PDO in combinatie met prepared statements, dus da ga nie werken nie.quote:Op woensdag 17 juni 2009 13:01 schreef Tuvai.net het volgende:
[..]
Ik heb zelf een functie die mysql_query() overkoepelt en wanneer ik mijn Boolean $Log aan zet, de queries die uitgevoerd worden in String-vorm naar een log bestand schrijven. Want de query die je in functie mysql_query() gebruikt is niet meer dan dat, een String.
Zoiets gelijks hebben wij hier ook inderdaad.quote:Op woensdag 17 juni 2009 13:01 schreef Tuvai.net het volgende:
[..]
Ik heb zelf een functie die mysql_query() overkoepelt en wanneer ik mijn Boolean $Log aan zet, de queries die uitgevoerd worden in String-vorm naar een log bestand schrijven. Want de query die je in functie mysql_query() gebruikt is niet meer dan dat, een String.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function afstandTotPunt($lat1,$lng1,$lat2,$lng2) { $a1 = deg2rad($lat1); //lat 1 in radialen $a2 = deg2rad($lat2); //lat 2 (het xcoordinaat) in radialen $b1 = deg2rad($lng1); //lng 1 in radialen $b2 = deg2rad($lng2); //lng 2 (het ycoordinaat) in radialen $r = 6378.8; //de radius / straal van de aarde in kilometers return (acos(cos($a1)*cos($b1)*cos($a2)*cos($b2) + cos($a1)*sin($b1)*cos($a2)*sin($b2) + sin($a1)*sin($a2)) * $r); } ?> |
Je hebt die 300.000+ records in een database. Ik neem aan dat die dingen ook allemaal een eigen id hebben. Dan maak je een tabel aan met de velden id1, id2 en afstand (vergeet ook de indexen niet). En een scriptje om die tabel te vullen.quote:
1 2 3 4 5 6 7 8 | for(i = 1; i <= x; i++) { for(j = i + 1; j <= x; j++) { afstand = berekenAfstand(i, j) sql = 'insert into matrix(id1, id2, afstand) values (i, j, afstand)' doQuery(sql); } } |
Ja, ik had de drie weken vakantie nog maar niet genoemdquote:Op donderdag 18 juni 2009 19:45 schreef Xcalibur het volgende:
je kan ze ook ALLEMAAL uitrekenen
Dus zowel de heenweg als de terugweg zeg maar... Dan voorkom je je nadeel, en heb je feitelijk de helft aan overbodige records
Ik zou preg_replace() gebruiken.quote:Op vrijdag 19 juni 2009 18:33 schreef splendor het volgende:
Ik wil een str_ireplace gebruiken om een link ergens omheen te zetten, maar hij moet het originele woord niet veranderen qua hoofd/kleine letters. Is dat mogelijk of wordt het een eregi oid?
Bijvoorbeeld "Dit IS eEn Test" wordt niet "dit is een test" (met link eromheen dan).
Lekker goed voor de performance ookquote:
1 2 3 4 5 6 7 8 9 | function str_ireplace_case($input, $compare) { if(strcasecmp($input, $compare) === 0) return "<a href=\"whatever\">{$input}</a>"; else return $input; } ?> |
Ik ben het met je eens dat het sneller is als je geen regular expression nodig hebt. Maar van de regular expression functies presteren de preg_* functies over het algemeen veel beter dan de ereg_* functies.quote:Op vrijdag 19 juni 2009 23:51 schreef Intrepidity het volgende:
[..]
Lekker goed voor de performance ook![]()
![]()
Aangezien de functionaliteit in php (afaik) niet bestaat om hoofdletterongevoelig te vergelijken maar vervolgens wel de hoofdletters te behouden zou ik er gewoon een eigen functietje voor maken:
[ code verwijderd ]
Stuk beter voor de performance dan een regular expression
Goed punt, het is ook al laatquote:Op zaterdag 20 juni 2009 00:08 schreef Light het volgende:
[..]
Ik ben het met je eens dat het sneller is als je geen regular expression nodig hebt. Maar van de regular expression functies presteren de preg_* functies over het algemeen veel beter dan de ereg_* functies.
En jouw functie is leuk, maar werkt alleen als de input een exacte match is met de compare-tekst (hoofdletters buiten beschouwing gelaten). Met preg_replace() mag er ook tekst voor en/of achter de gezochte tekst staan en kun je toch een goede vervanging maken.
Wat is een te verwachten waarde voor de straal? 1km? 10km? 100km? Dit is namelijk heel erg bepalend voor hoeveel procent van je records je terug zou kunnen krijgen. Bij 100km zou je in theorie bijna alle locaties terug kunnen krijgen, dus dan heeft slim querien weinig zin, bijvoorbeeld.quote:Op donderdag 18 juni 2009 17:30 schreef Likkende_Lassie het volgende:
Vraagje:
Ik heb de volgende functie om te berekenen hoeveel afstand er tussen 2 coordinaten zit:
[ code verwijderd ]
Echter, nu heb ik een database met +300.000 records.
Ik wil dat de gebruiker kan zeggen: ik wil binnen een straal van xx KM de resultaten zien.
Dat kunnen ze doen door een postcode in te vullen, waar ik een ander script voor heb om de coordinaten te berekenen.
Maar, om nu elk record te doorlopen om te kijken wat de afstand is, komt natuurlijk niet ten goede van de performance.
Weet iemand hoe ik het bovenstaande het beste kan berekenen? Ik heb in de database de coordinaten al opgeslagen. Dus ik zou eigenlijk in mijn mysql query kunnen zoeken op bijvoorbeeld: LIKE Lat = 1234'%' ,,, maar hoe dit te berekenen?
Niet waar, ook met MySQL 5.x niet:quote:Op zaterdag 20 juni 2009 10:44 schreef HenryHill het volgende:
Het voordeel is dat je deze vierkant rechtstreeks kan gebruiken in je query ("WHERE Lat between 51,201 and 51,323 and Long between 54.30 and 54.37") en dat dit geoptimaliseerd kan door de indexen op de Lat en Long kolommen.
quote:If a range scan is possible on some key, the optimizer will not consider using Index Merge Union or Index Merge Sort-Union algorithms. For example, consider this query
Hmm, volgens mij zou je dan het stuk over index intersections moeten quoten, en ik maak hieruit op dat MySQL dan wel beide indexen gebruikt?quote:Op zaterdag 20 juni 2009 11:23 schreef GlowMouse het volgende:
[..]
Niet waar, ook met MySQL 5.x niet:
[..]
De enige ongelijkheid die ik zie staan daar is er eentje op een primary key van een InnoDB-tabel. Dat zal er wel mee te maken hebben dat die key bij elke entry in de index op key_col1 opgeslagen wordt, en MySQL dus eigenlijk alleen de index op key_col1 hoeft te raadplegen en daarbij direct en 'gratis' de ongelijkheid kan checken.quote:Op zaterdag 20 juni 2009 11:40 schreef HenryHill het volgende:
[..]
Hmm, volgens mij zou je dan het stuk over index intersections moeten quoten, en ik maak hieruit op dat MySQL dan wel beide indexen gebruikt?
Oh, zo, ja dat zou ook kunnen.quote:Op zaterdag 20 juni 2009 11:46 schreef GlowMouse het volgende:
[..]
De enige ongelijkheid die ik zie staan daar is er eentje op een primary key van een InnoDB-tabel.
Ik heb een andere verklaringquote:Dat zal er wel mee te maken hebben dat die key bij elke entry in de index op key_col1 opgeslagen wordt, en MySQL dus eigenlijk alleen de index op key_col1 hoeft te raadplegen en daarbij direct en 'gratis' de ongelijkheid kan checken.
De meeste webapplicaties gebruiken dan ook geen coordinatenquote:Queries op grote tabellen die geen resultaat kunnen geven op basis van maximaal één index, vermijd ik zelf liever bij webapplicaties.
Maar wat doe je dan met die index op key_col1?quote:Op zaterdag 20 juni 2009 12:05 schreef HenryHill het volgende:
Ik heb een andere verklaringIk denk dat InnoDB zijn primary key index altijd 'clustered' maakt, d.w.z. dat de records fysiek geordend op primary key worden opgeslagen. En wanneer gegevens fysiek gesorteerd opgeslagen zijn, is het heel efficient om een range query uit te voeren: je zoekt het beginpunt, het eindpunt, en je retourneert alle rijen ertussenin.
Het feit dat je gegevens fysiek geordend zijn op key_col1 maakt dat de tabel al geindexeerd is - het heeft geen aparte opslagstructuur nodig. Je tabel is tevens je index, als het ware.quote:Op zaterdag 20 juni 2009 12:09 schreef GlowMouse het volgende:
[..]
Maar wat doe je dan met die index op key_col1?
Welke situatie heb je nu uitgeprobeerd dan?quote:edit: EXPLAIN geeft aan toch iets te doen met index_intersect. Vreemd, ik zou zeggen dat alleen de index op key_col1 gebruiken efficienter is.
Dankje, die werkte een stuk beter.quote:
Moet je dat niet met \b doen?quote:Op zaterdag 20 juni 2009 19:48 schreef splendor het volgende:
[..]
Dankje, die werkte een stuk beter.
Alleen heb ik met /b gezegd dat het alleen hele woorden moeten zijn, maar dat pakt ie niet erg.
Een WHERE pkey>val1 AND other_key=val2.quote:Op zaterdag 20 juni 2009 12:14 schreef HenryHill het volgende:
[..]
Welke situatie heb je nu uitgeprobeerd dan?
map met includes (oa init.php), map met templates (oa header/footer.php), map met plaatjes, en voor elke pagina een pagina.php.quote:Op zaterdag 20 juni 2009 22:16 schreef cablegunmaster het volgende:
Vraag hoe zetten jullie je website op ?
ik neem aan een ... header + footer aparte files een configuration.php met alle functions.
hoe doen jullie het met alle pagina's toevoegen met bvb www.website.nl/pagina/ ipv pagina.php
is daar een scriptje voor? of gebruiken jullie htacces?
Want ik zit nu in een mentale knoop in m'n hoofd. genoeg leuke scriptjes en ideetjes. maar een opzet in m'n kop loop ik mee vast
maar hoe doe je het eigenlijk met het omzetten dat je de .php niet meer ziet?quote:Op zaterdag 20 juni 2009 22:22 schreef GlowMouse het volgende:
map met includes (oa init.php), map met templates (oa header/footer.php), map met plaatjes, en voor elke pagina een pagina.php.
Als ik mij daar al druk om maak, mod_rewrite.quote:Op zaterdag 20 juni 2009 22:25 schreef cablegunmaster het volgende:
[..]
maar hoe doe je het eigenlijk met het omzetten dat je de .php niet meer ziet?.
ik ga dit eens doornemenquote:Op zaterdag 20 juni 2009 22:26 schreef GlowMouse het volgende:
[..]
Als ik mij daar al druk om maak, mod_rewrite.
RewriteRule ^nieuws/(.*)$ page/nieuws.php [NC]quote:Op zaterdag 20 juni 2009 22:45 schreef cablegunmaster het volgende:
[..]
ik ga dit eens doornemen![]()
http://www.sitepoint.com/article/guide-url-rewriting/
lijkt me droge kost en na verloop van tijd simpeler om een variabel van te maken. als mogelijk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $file = "index.php"; if (file_exists($file)) { echo "1.The file $file exists"; } else { echo "1.The file $file does not exist"; } // poging 2 met een variabele url. $file = basename($path,".php"); echo "<br>".$file."<br/>"; if (file_exists($file)) { echo "2.The file $file exists"; } else { echo "2.The file $file does not exist<br/>"; } |
Wat is de waarde van $path ?quote:Op zondag 21 juni 2009 09:43 schreef cablegunmaster het volgende:
Maar dan zat ik met het volgende probleem:
de functie als het bestand bestaat dat hij hem weergeeft en anders error bestand bestaat niet.
probleem:
index.php
[ code verwijderd ]
basename kan ik hiervoor niet gebruiken? terwijl ze beide als output geven
1. The file index.php exist.
2. The file index.php does not exist.
bij 2 echo krijg je index.php te zien.
Raar... in mijn ogen zit er precies hetzelfde in de functie
uiteindelijk wou ik een vervanging voor een soort van Iframe in php.
echo $path;quote:
1 2 3 4 5 6 7 8 | $file = basename($path); echo "<br>".$file."<br/>"; if (file_exists($file)) { echo "1.The file $file exists"; } else { echo "1.The file $file does not exist<br/>"; } |
Ik begrijp wat je/jullie zeggen, maar mijn vraag is eigenlijk eenvoudigquote:Op zaterdag 20 juni 2009 10:44 schreef HenryHill het volgende:
[..]
Wat is een te verwachten waarde voor de straal? 1km? 10km? 100km? Dit is namelijk heel erg bepalend voor hoeveel procent van je records je terug zou kunnen krijgen. Bij 100km zou je in theorie bijna alle locaties terug kunnen krijgen, dus dan heeft slim querien weinig zin, bijvoorbeeld.
Stel dat je straal maximaal zo'n 40 km is, dan zou je het volgende kunnen doen:
* Sla de lattitude op in z'n eigen kolom, met een aparte index op alleen deze kolom.
* Sla de longitude op in z'n eigen kolom, met een aparte index op alleen deze kolom.
* Als je gaat querien, gebruik dan niet de cirkel met een straal van X kilometer, maar het vierkant wat deze cirkel omsluit (oftewel "teken het kleinst mogelijke vierkant om de cirkel met straal X"). Het voordeel is dat je deze vierkant rechtstreeks kan gebruiken in je query ("WHERE Lat between 51,201 and 51,323 and Long between 54.30 and 54.37") en dat dit geoptimaliseerd kan door de indexen op de Lat en Long kolommen.
* De resultset die je terugkrijgt bevat nu nog wel punten die wel binnen het vierkant vielen, maar niet binnen de cirkel. Deze zul je er in code uit moeten filteren met de berekening die je postte, maar dat is niet zo erg, omdat dit slechts ong. 20% van je rijen zal betreffen - de overige 80% valt zowel binnen het vierkant als binnen de cirkel.
Dit lijkt me de best haalbare combinatie van een eenvoudige query die relatief weinig nutteloze rijen teruggeeft.
Je had aan de beveiliging gedacht?quote:Op zondag 21 juni 2009 09:43 schreef cablegunmaster het volgende:
Maar dan zat ik met het volgende probleem:
de functie als het bestand bestaat dat hij hem weergeeft en anders error bestand bestaat niet.
Je dacht dat ik uit ging zoeken voor je hoe je rekent met lat/long?quote:Op zondag 21 juni 2009 09:59 schreef Likkende_Lassie het volgende:
[..]
Ik begrijp wat je/jullie zeggen, maar mijn vraag is eigenlijk eenvoudig:
Hoeveel is Lat / Long + bijvoorbeeld 10 of 100 Kilometer?
Dan zal de techniek erachter wel moeten lukken!
hoe bedoel je?quote:
Nougoed, als iemand enig idee heeft hoe de som in elkaar zit, graag!quote:Op zondag 21 juni 2009 11:28 schreef GlowMouse het volgende:
[..]
Je dacht dat ik uit ging zoeken voor je hoe je rekent met lat/long?
Dat ik geen pagina's kan opvragen waarvan jij niet wilt dat ik ze kan opvragen. Bv je index.php maar ook files in een andere map.quote:
ah nee de beveiliging is htacces ingesteld dat je bepaalde mappen geen toegang hebt. via get maar wel via a href kan weergeven dus kun je niet extern op de pagina komen.quote:Op zondag 21 juni 2009 12:27 schreef GlowMouse het volgende:
[..]
Dat ik geen pagina's kan opvragen waarvan jij niet wilt dat ik ze kan opvragen. Bv je index.php maar ook files in een andere map.
Dat moet wel een heel goede beveiliging zijn! Ik zou me toch eens inlezen.quote:Op zondag 21 juni 2009 12:30 schreef cablegunmaster het volgende:
[..]
ah nee de beveiliging is htacces ingesteld dat je bepaalde mappen geen toegang hebt. via get maar wel via a href kan weergeven dus kun je niet extern op de pagina komen.
Dat is schijnveiligheid, met een NUL-byte (chr(0)) te omzeilen.quote:Op zondag 21 juni 2009 12:30 schreef cablegunmaster het volgende:
[..]
voor elke $variabele .pagina.php erachter plakkenzodat elke andere opvraging niet toegangelijk is
![]()
ik krijg volgend jaar nog een hoofdstuk beveiliging maar wat bedoel je?quote:Op zondag 21 juni 2009 12:31 schreef GlowMouse het volgende:
[..]
Dat moet wel een heel goede beveiliging zijn! Ik zou me toch eens inlezen.
Wat ik bedoel is dat je met "a href" een normale GET krijgt, dus als dat werkt dan heb je gewoon geen beveiliging tegen GET.quote:Op zondag 21 juni 2009 12:33 schreef cablegunmaster het volgende:
[..]
ik krijg volgend jaar nog een hoofdstuk beveiliging maar wat bedoel je?ik weet dat je via htacces de post en get kan uitschakelen voor een bepaalde map
Zelf een whitelist bijhouden met pagina's die de user op mag vragen. Of het idee laten varen om alles via één index.php te doen en voor elke pagina een aparte file gebruiken.quote:Op zondag 21 juni 2009 12:36 schreef cablegunmaster het volgende:
vertel, hoe zou je dit kunnen oplossen? want ik heb al heel wat stukjes gelezen over mogelijke aanvallen op websites beginnend met sql escape eindigend met bruteforce md5.
Ik heb geen idee wat dit op postcode.nl doet, maardeze pagina bevat een berekening die wellicht doet wat je wilt...quote:Op zondag 21 juni 2009 12:24 schreef Likkende_Lassie het volgende:
[..]
Nougoed, als iemand enig idee heeft hoe de som in elkaar zit, graag!
ja opzich heb je wel gelijk.quote:Op zondag 21 juni 2009 12:38 schreef GlowMouse het volgende:
[..]
Zelf een whitelist bijhouden met pagina's die de user op mag vragen. Of het idee laten varen om alles via één index.php te doen en voor elke pagina een aparte file gebruiken.
Volgens mij ontbreekt pi in je formule. De omtrek van een cirkel is 2 * pi * r en dat vind ik niet terug in je formule. Ook is de straal van de aarde niet constant.quote:Op zondag 21 juni 2009 12:24 schreef Likkende_Lassie het volgende:
[..]
Nougoed, als iemand enig idee heeft hoe de som in elkaar zit, graag! :)
1 2 3 4 5 6 7 8 9 10 11 | (Lat, Lng) (Lat, Lng) ( 0, 0) ( 15, 0) ( 0, 60) ( 15, 60) ( 0, 120) ( 15, 120) ( 0, 180) ( 15, 180) ( 0, 0) ( 0, 15) ( 30, 0) ( 30, 15) ( 60, 0) ( 60, 15) ( 90, 0) ( 90, 15) |
Hier heb ik wel iets waar PI in voorkomt:quote:Op zondag 21 juni 2009 13:05 schreef Light het volgende:
[..]
Volgens mij ontbreekt pi in je formule. De omtrek van een cirkel is 2 * pi * r en dat vind ik niet terug in je formule. Ook is de straal van de aarde niet constant.
Verder kun je natuurlijk zelf aan het rekenen gaan. Bereken eens de afstand tussen de volgende punten:
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $r = 6378.8; //de radius / straal van de aarde in kilometers $fltDistance = ( $r * 3.1415926 * sqrt( ( $fltLat2 - $fltLat1 ) * ( $fltLat2 - $fltLat1 ) + cos ( $fltLat2 / 57.29578 ) * cos ( $fltLat1 / 57.29578 ) * ( $fltLon2 - $fltLon1 ) * ( $fltLon2 - $fltLon1 ) ) / 180 ); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | iRadius = 150 istartlat=Session("lat" istartlong=Session("long" LatRange = iradius / ((6076 / 5280) * 60) LongRange = iRadius / (((cos(cdbl(iStartLat * _ 3.141592653589 / 180)) * 6076.) / 5280.) * 60) LowLatitude = istartlat - LatRange HighLatitude = istartlat + LatRange LowLongitude = istartlong - LongRange HighLongitude = istartlong + LongRange SELECT * FROM Locations WHERE Latitude <= [HighLatitude] AND Latitude >= [LowLatitude] AND Longitude >= [LowLongitude] AND Longitude <= [HighLongitude] |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |