PHP និង SQL: គណនាឬសួរចំងាយរង្វង់ដ៏ធំរវាងចំនុចនៃរយៈទទឹងនិងបណ្តោយជាមួយរូបមន្តហាវ៉េស

រូបមន្តហាវ៉េន - គណនាចម្ងាយរង្វង់ដ៏អស្ចារ្យជាមួយ PHP ឬ MySQL

ខែនេះខ្ញុំបានសរសេរកម្មវិធីក្នុងកម្មវិធី PHP និង MySQL បន្តិចទាក់ទងទៅនឹងជីអេសអាយអេស។ ក្រឡេកជុំវិញសំណាញ់ខ្ញុំពិតជាមានការលំបាកក្នុងការស្វែងរករបស់ខ្លះ ការគណនាភូមិសាស្ត្រ ដើម្បីស្វែងរកចម្ងាយរវាងទីតាំងពីរដូច្នេះខ្ញុំចង់ចែករំលែកវានៅទីនេះ។

ផែនទីហោះហើរអ៊ឺរ៉ុបដែលមានចំងាយឆ្ងាយ

វិធីសាមញ្ញក្នុងការគណនាចំងាយរវាងចំនុចពីរគឺការប្រើរូបមន្តពីតាហ្គ័រដើម្បីគណនាអ៊ីប៉ូតេនុសនៃត្រីកោណ (A² + B² = C²) ។ នេះត្រូវបានគេស្គាល់ថាជា ចម្ងាយ Euclidean.

នោះគឺជាការចាប់ផ្តើមគួរឱ្យចាប់អារម្មណ៍ប៉ុន្តែវាមិនត្រូវបានអនុវត្តជាមួយភូមិសាស្ត្រទេព្រោះចម្ងាយរវាងបន្ទាត់រយៈទទឹងនិងរយៈបណ្តោយ មិនមែនជាចម្ងាយស្មើគ្នា ដាច់ពីគ្នា។ នៅពេលអ្នកកាន់តែខិតទៅជិតខ្សែអេក្វាទ័របន្ទាត់រយៈទទឹងដាច់ឆ្ងាយពីគ្នា។ ប្រសិនបើអ្នកប្រើសមីការត្រីកោណប្រភេទខ្លះវាអាចវាស់ចម្ងាយបានយ៉ាងត្រឹមត្រូវនៅក្នុងទីតាំងមួយនិងខុសយ៉ាងខ្លាំងនៅកន្លែងមួយទៀតដោយសារតែភាពកោងនៃផែនដី។

ចម្ងាយរង្វង់ដ៏អស្ចារ្យ

ផ្លូវដែលធ្វើដំណើរឆ្ងាយពីផែនដីត្រូវបានគេស្គាល់ថាជាផ្លូវធ្វើដំណើរ ចម្ងាយរង្វង់ដ៏អស្ចារ្យ។ នោះគឺ ... ចម្ងាយខ្លីបំផុតរវាងចំណុចពីរនៅលើស្វ៊ែគឺខុសគ្នាជាងចំនុចនៅក្នុងផែនទីរាបស្មើ។ ផ្សំជាមួយនឹងការពិតដែលថាបន្ទាត់រយៈទទឹងនិងរយៈបណ្តោយមិនមានភាពធន់ទ្រាំ ... ហើយអ្នកមានការគណនាពិបាក។

នេះគឺជាការពន្យល់ជាវីដេអូដ៏អស្ចារ្យអំពីរបៀបដែលមហារង្វង់។

រូបមន្តហាវ៉េន

ចម្ងាយដោយប្រើកោងនៃផែនដីត្រូវបានដាក់បញ្ចូលនៅក្នុងឯកសារ រូបមន្តហាវ៉េនដែលប្រើត្រីកោណមាត្រដើម្បីអនុញ្ញាតឱ្យកោងផែនដី។ នៅពេលអ្នករកឃើញចម្ងាយរវាង ២ កន្លែងនៅលើផែនដី (ដូចជាសត្វក្អែករុយ) បន្ទាត់ត្រង់គឺពិតជាធ្នូ។

នេះអាចអនុវត្តបាននៅក្នុងការហោះហើរតាមអាកាស - តើអ្នកធ្លាប់បានមើលផែនទីនៃជើងហោះហើរពិតប្រាកដហើយបានកត់សម្គាល់ឃើញថាវាត្រូវបានគេតម្រង់ជួរដែរឬទេ? នោះដោយសារតែវាខ្លីជាងមុនក្នុងការហោះហើរនៅក្នុងសំខាន់មួយរវាងពីរចំនុចជាងទីតាំងដោយផ្ទាល់។

PHP: គណនាចំងាយរវាង ២ ចំនុចនៃរយៈទទឹងនិងរយៈបណ្តោយ

ទោះយ៉ាងណានេះគឺជារូបមន្ត PHP សម្រាប់គណនាចម្ងាយរវាងចំណុចពីរ (រួមជាមួយមីលទល់នឹងការបម្លែងគីឡូម៉ែត្រ) បានបង្គត់ទៅខ្ទង់ទសភាគពីរខ្ទង់។

function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'miles') {
  $theta = $longitude1 - $longitude2; 
  $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); 
  $distance = acos($distance); 
  $distance = rad2deg($distance); 
  $distance = $distance * 60 * 1.1515; 
  switch($unit) { 
    case 'miles': 
      break; 
    case 'kilometers' : 
      $distance = $distance * 1.609344; 
  } 
  return (round($distance,2)); 
}

SQL: កំពុងយកមកវិញនូវរាល់កំណត់ត្រាទាំងអស់នៅក្នុងជួរមួយដោយគណនាចម្ងាយគិតជាគីឡូម៉ែត្រដោយប្រើរយៈទទឹងនិងរយៈបណ្តោយ

វាក៏អាចប្រើ SQL ដើម្បីធ្វើការគណនាដើម្បីរកកំណត់ត្រាទាំងអស់នៅចំងាយជាក់លាក់មួយ។ ក្នុងឧទាហរណ៍នេះខ្ញុំនឹងសាកសួរ MyTable ក្នុង MySQL ដើម្បីរកកំណត់ត្រាទាំងអស់ដែលតូចជាងឬស្មើអថេរ $ distance (គិតជាម៉ែល) ទៅទីតាំងខ្ញុំនៅ $ latitude និង $ longitude:

សំណួរសម្រាប់ការយកមកវិញនូវកំណត់ត្រាទាំងអស់នៅក្នុងរបាយការណ៍ជាក់លាក់មួយ ចម្ងាយ ដោយគណនាចម្ងាយគិតជាគីឡូម៉ែត្ររវាងចំនុចពីរនិងរយៈបណ្តោយគឺ៖

$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`)*pi()/180)))) * 180/pi()) * 60 * 1.1515) as distance FROM `table` WHERE distance <= ".$distance."

អ្នកត្រូវប្ដូរតាមបំណងនេះ៖

  • រយៈបណ្តោយ $ - នេះគឺជាអថេរ PHP ដែលខ្ញុំកំពុងឆ្លងកាត់រយៈបណ្តោយនៃចំនុច។
  • $ រយៈទទឹង - នេះគឺជាអថេរ PHP ដែលខ្ញុំកំពុងឆ្លងកាត់រយៈបណ្តោយនៃចំនុច។
  • ចម្ងាយ $ - នេះគឺជាចម្ងាយដែលអ្នកចង់ស្វែងរកកំណត់ត្រាទាំងអស់តិចឬស្មើ។
  • តារាង - នេះជាតារាង ... អ្នកនឹងចង់ជំនួសឈ្មោះតុរបស់អ្នក។
  • latitude - នេះគឺជាវាលនៃរយៈទទឹងរបស់អ្នក។
  • រយៈបណ្តោយ - នេះគឺជាវិស័យនៃរយៈបណ្តោយរបស់អ្នក។

SQL: កំពុងយកមកវិញនូវកំណត់ត្រាទាំងអស់នៅក្នុងជួរមួយដោយគណនាចម្ងាយគិតជាគីឡូម៉ែត្រដោយប្រើរយៈទទឹងនិងរយៈបណ្តោយ

ហើយនេះគឺជាសំណួរ SQL ដោយប្រើគីឡូម៉ែត្រនៅក្នុង MySQL៖

$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`) * pi()/180)))) * 180/pi()) * 60 * 1.1515 * 1.609344) as distance FROM `table` WHERE distance <= ".$distance."

អ្នកត្រូវប្ដូរតាមបំណងនេះ៖

  • រយៈបណ្តោយ $ - នេះគឺជាអថេរ PHP ដែលខ្ញុំកំពុងឆ្លងកាត់រយៈបណ្តោយនៃចំនុច។
  • $ រយៈទទឹង - នេះគឺជាអថេរ PHP ដែលខ្ញុំកំពុងឆ្លងកាត់រយៈបណ្តោយនៃចំនុច។
  • ចម្ងាយ $ - នេះគឺជាចម្ងាយដែលអ្នកចង់ស្វែងរកកំណត់ត្រាទាំងអស់តិចឬស្មើ។
  • តារាង - នេះជាតារាង ... អ្នកនឹងចង់ជំនួសឈ្មោះតុរបស់អ្នក។
  • latitude - នេះគឺជាវាលនៃរយៈទទឹងរបស់អ្នក។
  • រយៈបណ្តោយ - នេះគឺជាវិស័យនៃរយៈបណ្តោយរបស់អ្នក។

ខ្ញុំបានប្រើលេខកូដនេះនៅក្នុងកម្មវិធីធ្វើផែនទីសហគ្រាសដែលយើងបានប្រើសម្រាប់ហាងលក់រាយដែលមានទីតាំងជាង ១០០០ កន្លែងនៅអាមេរិកខាងជើងហើយវាដំណើរការបានយ៉ាងល្អ។

76 យោបល់

  1. 1

    សូមអរគុណច្រើនចំពោះការចែករំលែក។ នេះគឺជាការថតចម្លងងាយស្រួលនិងបិទភ្ជាប់ការងារហើយដំណើរការល្អ។ អ្នកបានសន្សំពេលវេលាច្រើនណាស់។
    FYI សម្រាប់អ្នកដែលធ្វើដំណើរទៅស៊ី:
    deg2rad ទ្វេរដង (deg ទ្វេ) {ត្រឡប់ deg * (3.14159265358979323846 / 180.0); }

  2. 2

    ការបិទផ្សាយដ៏ល្អមួយ - ដំណើរការល្អណាស់ - ខ្ញុំត្រូវប្តូរឈ្មោះតារាងដែលកាន់វែង។ វាដំណើរការលឿនទៅ .. ខ្ញុំមានប្រវែងវែង (៤០០) ប៉ុន្តែខ្ញុំគិតថាវានឹងមានទំហំល្អ។ គេហទំព័រល្អផងដែរ - ខ្ញុំទើបតែបន្ថែមវាទៅក្នុងគណនី del.icio.us របស់ខ្ញុំហើយនឹងពិនិត្យមើលទៀងទាត់។

  3. 4
  4. 5

    ខ្ញុំបានស្វែងរកពេញមួយថ្ងៃសម្រាប់ការគណនាចម្ងាយហើយបានរកឃើញក្បួនដោះស្រាយការត្រេកត្រអាលអរគុណដែលអ្នកបានផ្តល់ឧទាហរណ៍អំពីរបៀបដាក់វានៅក្នុងសេចក្តីថ្លែងការ៉េ។ សូមអរគុណនិងសួរសុខទុក្ខដានីយ៉ែល

  5. 8

    ខ្ញុំគិតថា SQL របស់អ្នកត្រូវការសេចក្តីថ្លែងការណ៍មាន។
    ជំនួសឱ្យចម្ងាយ WHERE ចម្ងាយ <= $ ចម្ងាយអ្នកប្រហែលជាត្រូវការ
    ប្រើចម្ងាយ HAVING <= $ distance

    បើមិនដូច្នេះទេអរគុណសម្រាប់ការសន្សំពេលវេលានិងថាមពលរបស់ខ្ញុំ។

    • 9

      សួស្តីដាវីឌ

      ប្រសិនបើអ្នកកំពុងធ្វើសេចក្តីថ្លែងប្រភេទ GROUP BY ណាមួយអ្នកនឹងត្រូវការពេលវេលាច្រើន។ ខ្ញុំមិនធ្វើដូចក្នុងឧទាហរណ៍ខាងលើទេ។

      លោក Doug

  6. 10
  7. 11
  8. 12

    សូមអរគុណច្រើនដែលបានចែករំលែកលេខកូដនេះ។ វាបានជួយសន្សំពេលវេលាអភិវឌ្ឍន៍ជាច្រើន។ ដូចគ្នានេះផងដែរសូមអរគុណដល់អ្នកអានរបស់អ្នកសម្រាប់ចង្អុលបង្ហាញថាសេចក្តីថ្លែង HAVING គឺចាំបាច់សម្រាប់ MySQL 5.x ។ មាន​ប្រយោជន៍​ណាស់។

  9. 14

    រូបមន្តខាងលើកំពុងសន្សំសំចៃពេលវេលាឱ្យខ្ញុំច្រើន។ អរគុណ​ច្រើន។
    ខ្ញុំក៏ត្រូវប្តូររវាងទំរង់ NMEA និងដឺក្រេ។ ខ្ញុំបានរកឃើញរូបមន្តនៅ URL នេះនៅខាងក្រោមទំព័រ។ http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html

    តើមានអ្នកណាដឹងពីរបៀបផ្ទៀងផ្ទាត់រឿងនេះទេ?

    អរគុណ!
    លោក Harry

  10. 15

    ជំរាបសួរ,

    សំណួរមួយទៀត។ តើមានរូបមន្តសម្រាប់ខ្សែរ NMEA ដូចខាងក្រោមដែរឬទេ?

    ១៣៤២.៧៥០០, អិន, ១០០៥២.២២៨៧, អ៊ី

    $GPRMC,032731.000,A,1342.7500,N,10052.2287,E,0.40,106.01,101106,,*0B

    សូមអរគុណ,
    លោក Harry

  11. 16

    ខ្ញុំក៏បានរកឃើញថា WHERE មិនដំណើរការសម្រាប់ខ្ញុំទេ។ បានប្តូរវាទៅជាថ្មីហើយអ្វីៗដំណើរការបានល្អឥតខ្ចោះ។ ដំបូងខ្ញុំមិនបានអានយោបល់ហើយសរសេរវាឡើងវិញដោយប្រើជម្រើសជ្រើសរើស។ ទាំងពីរនឹងដំណើរការល្អ។

  12. 17
  13. 18

    មានប្រយោជន៍មិនគួរឱ្យជឿសូមអរគុណអ្នកខ្លាំងណាស់! ខ្ញុំកំពុងមានបញ្ហាខ្លះជាមួយពាក្យថា“ ថ្មី” ជាជាង“ កន្លែងណា” ប៉ុន្តែនៅពេលដែលខ្ញុំអានយោបល់នៅទីនេះ (បន្ទាប់ពីកិនធ្មេញប្រហែលកន្លះម៉ោង = អន់) ខ្ញុំធ្វើវាបានល្អ។ សូមអរគុណ ^ _ ^

  14. 19
  15. 20

    សូមចងចាំថាសេចក្តីថ្លែងការណ៍ជ្រើសរើសបែបនេះនឹងមានលក្ខណៈប្រៀបធៀបខ្លាំងហើយយឺត។ ប្រសិនបើអ្នកមានសំណួរច្រើនវាអាចធ្វើឱ្យអាក់អន់ចិត្តយ៉ាងឆាប់រហ័ស។

    វិធីសាស្រ្តមិនសូវខ្លាំងគឺដំណើរការជ្រើសរើស (ឆៅ) ដោយប្រើតំបន់ SQUARE ដែលកំណត់ដោយចំងាយដែលបានគណនាពោលគឺ“ ជ្រើសរើស * ពីឈ្មោះតុដែលរយៈទទឹងរវាងទទឹង ១ និងរយៈទទឹង ២ និងរយៈបណ្តោយរវាងឡូ ១ និងឡុង ២” ។ lat1 = ទំហំគោលដៅ - រយៈទទឹង, ឡាទី ២ = ទំហំកំណត់ + រយៈទទឹង, ស្រដៀងនឹងលន់។ រយៈទទឹង ~ = ចម្ងាយ / ១១១ (សម្រាប់គីឡូម៉ែត្រ), ឬចម្ងាយ / ៦៩ សម្រាប់ម៉ាយល៍ចាប់តាំងពីរយៈបណ្តោយ ១ ដឺក្រេគឺ ~ ១១១ គ។ ម។ (មានការប្រែប្រួលបន្តិចបន្តួចចាប់តាំងពីផែនដីមានរាងពងក្រពើបន្តិចប៉ុន្តែគ្រប់គ្រាន់សម្រាប់គោលបំណងនេះ) ។ londiff = ចម្ងាយ / (abs (cos (deg2rad (រយៈទទឹង)) * ១១១)) - ឬ ៦៩ ម៉ៃល៍ (អ្នកពិតជាអាចយកការ៉េធំជាងបន្តិចដើម្បីគិតពីការប្រែប្រួល) ។ បន្ទាប់មកយកលទ្ធផលនៃរឿងនោះហើយចិញ្ចឹមវាទៅក្នុងជម្រើសមូល។ កុំភ្លេចគិតពីកូអរដោនេក្រៅព្រំដែនពោលគឺជួរនៃរយៈបណ្តោយដែលអាចទទួលយកបានគឺ -១៨០ ដល់ +១៨០ ហើយជួរនៃរយៈទទឹងដែលអាចទទួលយកបានគឺពី -៩០ ដល់ +៩០ ក្នុងករណីដែល latdiff ឬ londiff របស់អ្នករត់នៅខាងក្រៅជួរនេះ។ ។ ចំណាំក្នុងករណីភាគច្រើនវាមិនអាចអនុវត្តបានទេព្រោះវាប៉ះពាល់តែការគណនាលើខ្សែឆ្លងកាត់មហាសមុទ្រប៉ាស៊ីហ្វិកពីបង្គោលមួយទៅបង្គោលទោះបីជាវាកាត់ផ្នែកខ្លះនៃជុកតាកានិងផ្នែកខ្លះនៃអាល់សាកាក៏ដោយ។

    អ្វីដែលយើងសំរេចបានតាមរយៈនេះគឺការកាត់បន្ថយចំនួនពិន្ទុដែលអ្នកធ្វើការគណនានេះ។ ប្រសិនបើអ្នកមានចំណុចសកលរាប់លាននៅក្នុងមូលដ្ឋានទិន្នន័យដែលត្រូវបានចែកចាយស្មើៗគ្នាហើយអ្នកចង់ស្វែងរកក្នុងចម្ងាយ ១០០ គីឡូម៉ែត្រនោះការស្វែងរកដំបូងរបស់អ្នកមានទំហំ ១០០០០ គីឡូម៉ែត្រក្រឡាហើយប្រហែលជាផ្តល់លទ្ធផលប្រហែល ២០ (ផ្អែកលើការចែកចាយសូម្បីតែមួយ ផ្ទៃក្រឡាប្រហែល ៥០០ ម។ ម។ ម។ ដែលមានន័យថាអ្នកដំណើរការការគណនាចំងាយស្មុគស្មាញ ២០ ដងសំរាប់សំណួរនេះជំនួសអោយមួយលានដង។

    • 21

      កំហុសតូចតាចនៅក្នុងឧទាហរណ៍…ដែលនឹងមានក្នុងចម្ងាយ ៥០ គីឡូម៉ែត្រ (មិនមែន ១០០) ទេព្រោះយើងកំពុងមើលកាំនៃការ៉េរបស់យើង។

      • 22

        ដំបូន្មានអស្ចារ្យ! ខ្ញុំពិតជាបានធ្វើការជាមួយអ្នកអភិវឌ្ឍន៍ដែលបានសរសេរមុខងារដែលទាញផ្នែកខាងក្នុងការេហើយបន្ទាប់មកមុខងារហៅខ្លួនឯងដែលបង្កើតជា 'ការ៉េ' ជុំវិញបរិវេណដើម្បីរាប់បញ្ចូលនិងដកចំនុចដែលនៅសល់។ លទ្ធផលគឺជាលទ្ធផលលឿនមិនគួរឱ្យជឿ - គាត់អាចវាយតម្លៃពិន្ទុរាប់លានមីក្រូសេស។

        វិធីសាស្រ្តរបស់ខ្ញុំខាងលើគឺពិតជាប្រេងឆៅប៉ុន្តែមានសមត្ថភាព។ អរគុណ​ម្តង​ទៀត!

        • 23

          ឌុក,

          ខ្ញុំបានព្យាយាមប្រើ mysql និងភីភីដើម្បីវាយតម្លៃថាតើរយៈទទឹងវែងស្ថិតនៅក្នុងពហុកោណ។ តើអ្នកដឹងទេប្រសិនបើមិត្តអ្នកអភិវឌ្ឍន៍របស់អ្នកបោះពុម្ភឧទាហរណ៍ណាមួយអំពីវិធីដើម្បីសម្រេចកិច្ចការនេះ។ ឬតើអ្នកដឹងឧទាហរណ៍ល្អទេ។ អរគុណ​យ៉ាង​ជ្រាលជ្រៅ។

  16. 24

    សួស្តីអ្នករាល់គ្នានេះគឺជាសេចក្តីថ្លែងការណ៍ SQL របស់ខ្ញុំដែលបានធ្វើតេស្តៈ

    SELECT DISTINCT area_id, (
    (
    (
    acos( sin( ( 13.65 * pi( ) /180 ) ) * sin( (
    `lat_dec` * pi( ) /180 ) ) + cos( ( 13.65 * pi( ) /180 ) ) * cos( (
    `lat_dec` * pi( ) /180 )
    ) * cos( (
    ( 51.02 - `lon_dec` ) * pi( ) /180 )
    )
    )
    ) *180 / pi( )
    ) *60 * 1.1515 * 1.609344
    ) AS distance
    FROM `post_codes` WHERE distance <= 50

    ហើយ Mysql កំពុងប្រាប់ខ្ញុំថាចម្ងាយមិនមានជាជួរឈរទេខ្ញុំអាចប្រើសណ្តាប់ធ្នាប់ខ្ញុំអាចធ្វើវាដោយគ្មាន WHERE ហើយវាដំណើរការប៉ុន្តែមិននៅជាមួយវាទេ។

  17. 26

    នេះពិតជាអស្ចារ្យណាស់ទោះយ៉ាងណាវាដូចជាបក្សីហើរដែរ។ វាជាការប្រសើរណាស់ក្នុងការសាកល្បងនិងបញ្ចូលហ្គូហ្គលផែនទីអេសអិលទៅនឹងវិធីនេះ (ប្រហែលជាប្រើផ្លូវថ្នល់។ ល។ ) គ្រាន់តែផ្តល់គំនិតដោយប្រើទម្រង់នៃការដឹកជញ្ជូនផ្សេង។ ខ្ញុំនៅតែមិនទាន់បានធ្វើមុខងារក្លែងបន្លំនៅក្នុងកម្មវិធី PHP ដែលនឹងអាចផ្តល់នូវដំណោះស្រាយដ៏មានប្រសិទ្ធិភាពចំពោះបញ្ហាអ្នកលក់ធ្វើដំណើរ។ ប៉ុន្តែខ្ញុំគិតថាខ្ញុំប្រហែលជាអាចប្រើលេខកូដខ្លះរបស់អ្នកឡើងវិញបាន។

  18. 27

    សួស្តីលោក Douglas
    អរគុណច្រើនចំពោះអត្ថបទនេះ - អ្នកទើបតែសន្សំពេលវេលាឱ្យខ្ញុំ។
    ថែរក្សា,
    nimrod @ អ៊ីស្រាអែល

  19. 28

    អត្ថបទល្អ! ខ្ញុំបានរកឃើញអត្ថបទជាច្រើនដែលពិពណ៌នាអំពីវិធីគណនាចម្ងាយរវាងចំនុចពីរប៉ុន្តែខ្ញុំពិតជាកំពុងស្វែងរកឃ្លីប SQL ។

  20. 29
  21. 30
  22. 31
  23. 32
  24. 36

    ការស្រាវជ្រាវ ២ ថ្ងៃដើម្បីរកឃើញទំព័រនេះដែលអាចដោះស្រាយបញ្ហារបស់ខ្ញុំ។ មើលទៅខ្ញុំល្អជាង WolframAlpha របស់ខ្ញុំហើយដុសខាត់គណិតវិទ្យារបស់ខ្ញុំ។ ការផ្លាស់ប្តូរពី WHERE ទៅ HAVING មានអក្សររបស់ខ្ញុំតាមលំដាប់លំដោយ។ សូមអរគុណ

  25. 37
  26. 39

    ខ្ញុំសង្ឃឹមថានេះគឺជាទំព័រដំបូងដែលខ្ញុំបានរកឃើញនៅលើនេះ។ បន្ទាប់ពីសាកល្បងពាក្យបញ្ជាផ្សេងៗគ្នាជាច្រើននេះគឺជាការងារតែមួយដែលដំណើរការបានត្រឹមត្រូវហើយត្រូវការការផ្លាស់ប្តូរតិចតួចបំផុតដើម្បីឱ្យត្រូវនឹងមូលដ្ឋានទិន្នន័យផ្ទាល់ខ្លួនរបស់ខ្ញុំ។
    សូមអរគុណច្រើន!

  27. 40

    ខ្ញុំសង្ឃឹមថានេះគឺជាទំព័រដំបូងដែលខ្ញុំបានរកឃើញនៅលើនេះ។ បន្ទាប់ពីសាកល្បងពាក្យបញ្ជាផ្សេងៗគ្នាជាច្រើននេះគឺជាការងារតែមួយដែលដំណើរការបានត្រឹមត្រូវហើយត្រូវការការផ្លាស់ប្តូរតិចតួចបំផុតដើម្បីឱ្យត្រូវនឹងមូលដ្ឋានទិន្នន័យផ្ទាល់ខ្លួនរបស់ខ្ញុំ។
    សូមអរគុណច្រើន!

  28. 41
  29. 42
  30. 43
  31. 45
  32. 46
  33. 47

    ខ្ញុំដឹងថារូបមន្តនេះមានប្រសិទ្ធភាពប៉ុន្តែខ្ញុំមិនអាចដឹងថាតើកាំនៃផែនដីត្រូវបានគេយកមកពិចារណាទេ។ តើអ្នកណាអាចបំភ្លឺខ្ញុំបានទេ?

  34. 49
  35. 50
  36. 52

    អរគុណឌូក្លាសសំណួរ SQL ពិតជាអ្វីដែលខ្ញុំត្រូវការហើយខ្ញុំគិតថាខ្ញុំត្រូវសរសេរវាដោយខ្លួនឯង។ អ្នកបានសង្គ្រោះខ្ញុំពីខ្សែកោងរយៈទទឹងនៃរយៈទទឹងរយៈបណ្តោយដែលអាចរៀនបាន!

  37. 53
  38. 55
  39. 56

    លោក Douglas សូមអរគុណចំពោះលេខកូដដ៏អស្ចារ្យនេះ។ បានបង្ក្រាបក្បាលខ្ញុំពីរបៀបធ្វើវានៅលើវិបផតថលសហគមន៍ជីភីអេសរបស់ខ្ញុំ។ អ្នកបានរក្សាទុកខ្ញុំជាច្រើនម៉ោង។

  40. 58

    អរគុណដែលបានចុះផ្សាយអត្ថបទមានប្រយោជន៍នេះ។  
    ប៉ុន្តែសម្រាប់ហេតុផលខ្លះខ្ញុំចង់សួរ
    តើធ្វើដូចម្តេចដើម្បីទទួលបានចម្ងាយរវាងខ្សែនៅក្នុង mysql db និងខ្សែដែលបានបញ្ចូលទៅ php ដោយអ្នកប្រើប្រាស់?
    សម្រាប់ការពិពណ៌នាកាន់តែច្បាស់៖
    អ្នកប្រើត្រូវតែបញ្ចូល [លេខសម្គាល់] សម្រាប់ជ្រើសរើសទិន្នន័យដែលបានបញ្ជាក់ពីឌីប៊ីនិងខ្សែរបស់អ្នកប្រើប្រាស់ផ្ទាល់
    ឯកសារ php ទទួលបានទិន្នន័យគោលដៅ (ខ្សែ) ដោយប្រើ [លេខសម្គាល់] ហើយបន្ទាប់មកគណនាចម្ងាយរវាងអ្នកប្រើប្រាស់និងចំណុចគោលដៅ

    ឬគ្រាន់តែអាចទទួលបានចម្ងាយពីកូដខាងក្រោម?

    $ qry =“ SELECT *, (((acos (sin ((“ ។ $ latitude ។ ” * pi () / ១៨០)) * sin ((`Latitude` * pi () / ១៨០)) + cos ((“ ។ $ រយៈទទឹង។ "* pi () / ១៨០)) * cos ((` រយៈទទឹង '* pi () / ១៨០)) * cos (((" ))) * ១៨០ / ភី ()) * ៦០ * ១.១៥១៥ * ១.៦០៩៣៤៤) ចម្ងាយពី `MyTable` WHERE ចំងាយ> = "។ ចម្ងាយ $ ។ " >>>> តើខ្ញុំអាចយកចម្ងាយពីទីនេះបានទេ?
    អរគុណ​ម្តង​ទៀត,
    ធីមមីអេស

  41. 60

    យល់ព្រមអ្វីគ្រប់យ៉ាងដែលខ្ញុំបានព្យាយាមមិនដំណើរការទេ។ ខ្ញុំមានន័យថាអ្វីដែលខ្ញុំមានការងារធ្វើប៉ុន្តែចម្ងាយឆ្ងាយ។

    អ្នកណាម្នាក់អាចមើលឃើញអ្វីដែលខុសនឹងក្រមនេះ?

    ប្រសិនបើ (ការចេញ ($ _ POST ['បានដាក់ស្នើ'])) {$ z = $ _POST ['zipcode']; $ r = $ _POST ['កាំ']; អេកូ“ លទ្ធផលសំរាប់“ ។ $ sql = mysql_query (“ SELECT DISTINCT m.zipcode, m.MktName, m.LocAddSt, m.LocAddCity, m.LocAddState, m.x1, m.y1, m.verified, z1.lat, z2.lon, z1 ។ city, z1.state FROM mrk m, zip z1, zip z2 WHERE m.zipcode = z1.zipcode AND z2.zipcode = $ z AND (3963 * acos (កាត់ចេញ (sin (z2.lat / 57.2958)) * sin (m ។ y1 / 57.2958) + cos (z2.lat / 57.2958) * cos (m.y1 / 57.2958) * cos (m.x1 / 57.2958 - z2.lon / 57.2958, 8))) <= $ r ") ឬស្លាប់ (mysql_error ()); ខណៈពេល ($ ជួរ = mysql_fetch_array ($ sql)) {$ store1 = $ ជួរ ['MktName'] ។ ""; $ store = $ ជួរ ['LocAddSt'] ។ " $ store ។ = $ ជួរ ['LocAddCity'] ។ "," ។ $ ជួរ ['LocAddState'] ។ " “ $ ជួរដេក ['លេខកូដតំបន់']; $ latitude1 = $ ជួរ ['lat']; $ longitude1 = $ ជួរ ['អូន']; $ latitude2 = $ ជួរ ['y1']; $ longitude2 = $ ជួរ ['x1']; $ city = $ ជួរ ['ទីក្រុង']; $ state = $ ជួរ ['រដ្ឋ']; $ dis = getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi'); // $ dis = ចម្ងាយ ($ lat1, $ lon1, $ lat2, $ lon2); $ បានផ្ទៀងផ្ទាត់ = $ ជួរ ['បានផ្ទៀងផ្ទាត់']; ប្រសិនបើ ($ ផ្ទៀងផ្ទាត់ = = '១') {បន្ទរ“”; អេកូ““ ។ $ ហាង។ ””; អេកូ $ dis ។ ” ម៉ាយល៍ឆ្ងាយ”; អេកូ ""; } ផ្សេងទៀត {អេកូ“” ។ $ ហាង។ ”; អេកូ $ dis ។ ” ម៉ាយល៍ឆ្ងាយ”; អេកូ ""; }}}

    កូដ functions.php របស់ខ្ញុំ
    មុខងារ getnew ($ latitude1, $ longitude1, $ latitude2, $ longitude2, $ unit = 'Mi') {$ theta = $ longitude1 - $ longitude2; $ distance = (sin (deg2rad ($ latitude1)) * sin (deg2rad ($ latitude2))) + (cos (deg2rad ($ latitude1)) * cos (deg2rad ($ latitude2)) * cos (deg2rad ($ theta)) ); $ distance = អាកូស ($ ចម្ងាយ); $ distance = rad2deg ($ ចម្ងាយ); $ distance = $ ចម្ងាយ * ៦០ * ១.១៥១៥; switch ($ unit) {case 'Mi': break; ករណី 'គីឡូម៉ែត្រ': $ distance = $ ចម្ងាយ * ១.៦០៩៣៤៤; } ត្រឡប់មកវិញ (ជុំ ($ ចម្ងាយ, ២)); }

    សូម​អរគុណ​ជាមុន

  42. 61
  43. 62

    ហេ Douglas, អត្ថបទដ៏អស្ចារ្យ។ ខ្ញុំបានរកឃើញការពន្យល់របស់អ្នកអំពីគំនិតភូមិសាស្ត្រនិងលេខកូដគួរឱ្យចាប់អារម្មណ៍ណាស់។ សំណូមពរតែមួយគត់របស់ខ្ញុំគឺត្រូវដកឃ្លានិងចូលបន្ទាត់កូដសម្រាប់បង្ហាញ (ដូចជា Stackoverflow ឧទាហរណ៍) ។ ខ្ញុំយល់ថាអ្នកចង់អភិរក្សកន្លែងទំនេរប៉ុន្តែការដកឃ្លា / ការចូលបន្ទាត់អាចធ្វើឱ្យខ្ញុំកាន់តែងាយស្រួលសម្រាប់ខ្ញុំក្នុងនាមជាអ្នកសរសេរកម្មវិធីអាននិងវែកញែក។ ទោះយ៉ាងណានោះជារឿងតូចតាច។ រក្សាការងារល្អ។

  44. 64
  45. 65

    នៅទីនេះខណៈពេលដែលប្រើជាមួយមុខងារយើងកំពុងទទួលបានចម្ងាយមួយប្រភេទខណៈពេលដែលកំពុងប្រើសំណួរប្រភេទនៃចម្ងាយផ្សេងទៀតរបស់ខ្លួន

  46. 66
  47. 67
  48. 68
  49. 69
  50. 70

    វាហាក់ដូចជាលឿនជាងមុន (mysql 5.9) ប្រើរូបមន្តទ្វេដងក្នុងការជ្រើសរើសនិងកន្លែង៖
    $ រូបមន្ត = "((((អេ។ អេ។ (រយៈទទឹង។ (* ។ ។ រយៈទទឹង។ " * ភី () / ១៨០)) * បាប ((`រយៈទទឹង '* ភី () / ១៨០)) + cos (((។ ។ រយៈទទឹង។ $ ។ ” * pi () / ១៨០)) * cos ((`រយៈទទឹង * * ពយ () / ១៨០)) * cos ((((“ ។ រយៈបណ្តោយ $ ។ ” -` បណ្តោយ)) * pi () / ១៨០)))) * ១៨០ / ភី ()) * ៦០ * ១.១៥១៥ * ១.៦០៩៣៤៤)”;
    $ sql = 'SELECT *,' ។ $ រូបមន្ត។ ' ដូចជាចម្ងាយពីតុពីកន្លែងណា .. រូបមន្ត $ ។ ' <= '។ $ ចម្ងាយ;

  51. 71
  52. 72

    សូមអរគុណច្រើនសម្រាប់ការកាត់អត្ថបទអត្ថបទនេះ។
    ដំបូងឡើយកម្មវិធី PHP ត្រូវបានបង្កើតជាវេទិកាស្គ្រីបសាមញ្ញមួយដែលមានឈ្មោះថា“ គេហទំព័រផ្ទាល់ខ្លួន” ។ សព្វថ្ងៃ PHP (ខ្លីសំរាប់ Hypertext Preprocessor) គឺជាជំរើសមួយនៃបច្ចេកវិទ្យារបស់ Microsoft សកម្ម (ទំព័រអេអេអេសអេស) ។

    PHP គឺជាភាសាផ្នែកខាងប្រភពបើកចំហរដែលត្រូវបានប្រើសម្រាប់បង្កើតទំព័របណ្តាញ។ វាអាចត្រូវបានបញ្ចូលទៅក្នុង HTML ។ PHP ត្រូវបានប្រើជាធម្មតាភ្ជាប់ជាមួយប្រព័ន្ធទិន្នន័យ MySQL នៅលើម៉ាស៊ីនមេគេហទំព័រលីនុច / យូនីក។ វាប្រហែលជាភាសាស្គ្រីបដែលពេញនិយមបំផុត។

  53. 73

    ខ្ញុំបានរកឃើញដំណោះស្រាយខាងលើមិនដំណើរការត្រឹមត្រូវទេ។
    ខ្ញុំត្រូវប្តូរទៅ៖

    $ qqq =“ SELECT *, (((acos (sin ((“ ។ $ latitude ។ ” * pi () / ១៨០)) * sin ((`latt` * pi () / ១៨០)) + cos ((”) ។ $ latitude ។ “ * pi () / 180)) * cos ((`latt` * pi () / 180)) * cos ((((។ $ longitude ។ “ -` longt`) * pi () / 180)) ))) * ១៨០ / ភី ()) * ៦០ * ១.១៥១៥) ចម្ងាយពី `ចុះឈ្មោះ`;;

  54. 75

    សូមអរគុណលោកគ្រវីយ៉ាងឥតខ្ចោះ .. ប៉ុន្តែខ្ញុំមានសំណួរមួយប្រសិនបើខ្ញុំចង់ចេញដោយគ្មានចំណុចគោលដប់បន្ទាប់មកតើខ្ញុំអាចធ្វើអ្វីបាន .. ?

    អរគុណ​យ៉ាង​ជ្រាលជ្រៅ។

  55. 76

    សួស្តី, ខ្ញុំពិតជាត្រូវការជំនួយពីអ្នក។

    ខ្ញុំបានធ្វើសំណូមពរទៅកាន់បណ្តាញមេរបស់ខ្ញុំ http://localhost:8000/users/findusers/53.47792/-2.23389/20/
    ៥៣.៤៧៧៩២ = = រយៈទទឹង
    -២.២៣៣៨៩ = រយៈបណ្តោយ $
    និង ២០ = ចំងាយដែលខ្ញុំចង់ទាញយកមកវិញ

    ទោះយ៉ាងណាដោយប្រើរូបមន្តអ្នកវាទាញយកជួរទាំងអស់នៅក្នុង db របស់ខ្ញុំ

    $ លទ្ធផល = DB :: ជ្រើសរើស (DB :: ឆៅ (“ SELECT *, ((acos (sin ((“ ។ $ latitude ។ ” * pi () / ១៨០)) * sin ((lat * pi () / 180 )) + cos (((“ ។ $ រយៈទទឹង។ ” * pi () / ១៨០)) * cos ((lat * pi () / ១៨០)) * cos ((((“ ។ $ longitude ។ ” - lng) * pi ( ) / ១៨០)))) * ១៨០ / ភី ()) * ៦០ * ១.១៥១៥ * ១.៦០៩៣៤៤) ជាចម្ងាយ FROM គំនូសសញ្ញាសម្គាល់ចម្ងាយ> =“ ។ ចម្ងាយចម្ងាយ) =) ។

    [{“ លេខសម្គាល់”៖ ១,” ឈ្មោះ”:” ហ្វ្រេនជីចូនីនិងលូហ្គូផងដែរ”, អាស័យដ្ឋាន”:” ៩៣៩ វ៉លអេលខេមណូនី, មើលលើភ្នំ, CA”, ឡាត់”៖ ៣៧.៣៨៦៣៣៧២២២២៣,” លីង”៖ - ១២២.០៨៥៨២៣០៥៩០៨, "ចម្ងាយ": ១៦០៧៩,២៩៤៧១៩៦៦៣}, {លេខសម្គាល់ "៖ ២," ឈ្មោះ "៖" ឆ្នេរសមុទ្រអាមីស៊ីភាគខាងកើត "," អាសយដ្ឋាន ":" ៧៩០ កាស្ត្រូ, ទិដ្ឋភាពភ្នំ, CA "," ឡាំង "៖ ៣៧.៣៨៧១៣៨៣៦៦៩៩," អិល "៖ -១២២.០៨៣២៣៦៦៤៣៤,“ ចំងាយ”៖ ១៦០៧៩.១៧៥៩៤០១២២}, {“ លេខសម្គាល់”៖ ៣, ឈ្មោះ”:” បារភីហ្សាភីហ្សានិងអាំង”,” អាស័យដ្ឋាន”:” ១៩១ កាស្ត្រូ, ទេសភាពភ្នំ, CA,, ឡាប”: ៣៧.៣៩៣៨៨៦៥៦៦២២, "lng": - ១២២.០៧៨៩១៨៤៥៧០៣, "ចំងាយ"៖ ១៦០៧៨.៣៨១៣៧៣៨២៦}, {លេខសម្គាល់ៈ ៤, ឈ្មោះ " "lat": 1, "lng": - 939, "ចំងាយ": 37.386337280273}, {"លេខសម្គាល់": 122.08582305908, "ឈ្មោះ": "តូនី & អាបារបស់ភីហ្សានិងប៉ាស្តា", "អាសយដ្ឋាន": "16079.294719663 Escuela Ave, Mountain មើល, CA "," lat ": 2," lng ": - 790," ចំងាយ ": 37.387138366699}, {" លេខសម្គាល់ ": 122.08323669434," ឈ្មោះ ":" ភីហ្សាដែលមានភ្លើងឆេះឈើអូរីហ្គោ "," អាសយដ្ឋាន ":" 16079.175940152 El Camino Real, Los Altos, CA "," lat ": ៣៧.៤០១៧២៥៧៦៩០៤៣," lng ": - ១២២.១១៤៦៤៦៩១១៦២," ចម្ងាយ "៖ ១៦០៧៧.៩៣៧៥៦០៧៩៥}, { លេខសម្គាល់ ": ៧," ឈ្មោះ ":" បារនិងអាំង "," អាសយដ្ឋាន ":" ២៤ វិថី Whiteley, Manchester "," lat ": ៥៣.៤៨៥១១៨៨៦៥៩៦៧," lng ": - ២.១៨២៨៦៩៩១១៣៨៨," ចម្ងាយ "៖ ៨០៣៨,៧៦២០១២១៤១២}]

    ខ្ញុំចង់ទៅយកជួរដេកតែ ២០ ម៉ាយល៍តែវានាំមកជួរដេកទាំងអស់។ សូមអ្វីដែលខ្ញុំកំពុងធ្វើខុស

តើ​អ្នក​គិត​អ្វី?

តំបន់បណ្ដាញនេះប្រើ Akismet ដើម្បីកាត់បន្ថយសារឥតបានការ។ សិក្សាអំពីរបៀបដែលទិន្នន័យរបស់អ្នកត្រូវបានដំណើរការ.