Jump to content

GaneshNaiknavre

New Members
  • Posts

    4
  • Joined

  • Last visited

GaneshNaiknavre's Achievements

Newbie

Newbie (1/5)

0

Reputation

  1. Message: Hello, I am working on a PHP project where I need to fetch mileage and location data from an API for vehicles stored in my database. The code below is meant to: Fetch an access token using the appid and login_key. Retrieve mileage and location data for each vehicle using the IMEI from the database. Update the created_jobs table with the fetched data (run KM, current KM, latitude, longitude). However, the data is not being updated correctly in the database. The issue seems to be with fetching or processing the API responses. Here’s the code I’m using: <?php // Enable error reporting and logging error_reporting(E_ALL); ini_set('display_errors', 0); ini_set('log_errors', 1); ini_set('error_log', 'php_error.log'); header('Content-Type: application/json'); // Include database connection include('db.php'); // Ensure this file contains valid DB connection details if ($mysqli->connect_error) { error_log("Database connection failed: " . $mysqli->connect_error); exit("Database connection error"); } // Function to call API function callApi($url, $headers = [], $method = 'GET', $data = null) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); if ($method === 'POST' && $data !== null) { curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); } if (!empty($headers)) { curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } $response = curl_exec($ch); if (curl_errno($ch)) { error_log("cURL Error: " . curl_error($ch)); return null; } curl_close($ch); return json_decode($response, true); } // Function to fetch access token function getAccessToken($appid, $login_key) { $timestamp = time(); $signature = md5(md5($login_key) . $timestamp); $url = "https://open.iopgps.com/api/auth"; $data = [ "appid" => $appid, "time" => $timestamp, "signature" => $signature ]; $response = callApi($url, ["Content-Type: application/json"], 'POST', $data); if (isset($response['accessToken'])) { return $response['accessToken']; } error_log("Failed to fetch access token. API response: " . json_encode($response)); return null; } // API credentials $appid = "xyz"; $login_key = "xyz"; // Fetch access token $access_token = getAccessToken($appid, $login_key); if (!$access_token) { error_log("Failed to fetch access token"); exit("Access token error"); } // Fetch distinct vehicles from customer table $query = "SELECT DISTINCT vehicle_no, gps_imei FROM customer"; $result = $mysqli->query($query); if ($result && $result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $vehicle_no = $row['vehicle_no']; $imei = $row['gps_imei']; // Log the IMEI and Vehicle Number for debugging error_log("Processing vehicle_no: {$vehicle_no}, IMEI: {$imei}"); // Define time range for mileage API (last 1 hour) $start_time = date("Y-m-d H:i:s", strtotime("-1 hour")); // last hour dynamically $end_time = date("Y-m-d H:i:s", time()); // current time // Fetch mileage data (distance traveled) $mileage_api_url = "https://open.iopgps.com/api/device/miles?accessToken={$access_token}&startTime={$start_time}&endTime={$end_time}&imei={$imei}"; $mileage_response = callApi($mileage_api_url, ["Content-Type: application/json"]); // Log the response for mileage data error_log("Mileage API Response: " . json_encode($mileage_response)); // Fetch location data (latitude and longitude) $location_api_url = "https://open.iopgps.com/api/device/location?imei={$imei}&accessToken={$access_token}"; $location_response = callApi($location_api_url, ["Content-Type: application/json"]); // Log the response for location data error_log("Location API Response: " . json_encode($location_response)); // Validate mileage data $api_miles = 0; if (isset($mileage_response['miles']) && is_numeric($mileage_response['miles'])) { $api_miles = $mileage_response['miles']; } else { error_log("Invalid mileage data for IMEI: {$imei}. API response: " . json_encode($mileage_response)); } // Validate location data $latitude = $longitude = null; if (isset($location_response['lat']) && isset($location_response['lng'])) { $latitude = $location_response['lat']; $longitude = $location_response['lng']; } else { error_log("Invalid location data for IMEI: {$imei}. API response: " . json_encode($location_response)); } // Update the database if data is valid if ($api_miles > 0 && $latitude !== null && $longitude !== null) { $update_query = "UPDATE created_jobs SET run_km = IFNULL(run_km, 0) + ?, current_km = IFNULL(current_km, 0) + ?, latitude = ?, longitude = ? WHERE vehicle_no = ?"; $stmt = $mysqli->prepare($update_query); if ($stmt) { $stmt->bind_param("ddsss", $api_miles, $api_miles, $latitude, $longitude, $vehicle_no); $stmt->execute(); error_log("Updated vehicle_no: {$vehicle_no} | KM Added: {$api_miles} | Lat: {$latitude} | Lng: {$longitude}"); } else { error_log("Failed to prepare statement for vehicle_no {$vehicle_no}: " . $mysqli->error); } } else { error_log("Skipping update for vehicle_no {$vehicle_no} due to invalid data."); } } echo "Run KM, Current KM, and Location data updated for all matching vehicles."; } else { error_log("No vehicles found in customer table."); echo "No vehicles found."; } $mysqli->close(); ?> Issue: The API is returning data, but it’s not updating the database as expected. I'm seeing responses in the log, but the created_jobs table is not getting updated. Request: Can anyone help me identify what might be wrong with the logic, or if there's an issue with the API calls or the way I’m handling the database update? I appreciate any insights!
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.