Singapore
Jakarta
Thailand
Bangladesh
India
Vietnam
Pakistan
Myanmar
Melbourne
Malaysia

Collyer Online Shop



From: Singapore

Choose a destination to see vessel sailings from Singapore.

/>
>


Select a port to view sailings to that port.
>


Shows sailings to all available ports in this country; results list each port.



After switching country search on or off, submit the form to update the destination choices.



'SIN.SIN_ETA, VPL.ETA, VYG.VESSEL_NAME, VYG.ID',
'eta' => 'VPL.ETA, VPL.PORT_NAME, VYG.VESSEL_NAME, VYG.ID',
'port' => 'VPL.PORT_NAME, VYG.VESSEL_NAME, VPL.ETA, VYG.ID',
'vessel' => 'VYG.VESSEL_NAME, VYG.VOYAGE_NAME, VPL.ETA, VPL.PORT_NAME, VYG.ID'
);
$destination_filter = $bycountryonly === 'yes'
? "VPL.PORT_CODE LIKE '".$countrycode."%'"
: "VPL.PORT_CODE = '".$portcode."'";

// Resolve Singapore arrival once per voyage instead of querying it for each row.
$sql = "SELECT VYG.VESSEL_NAME, VYG.VOYAGE_NAME, VYG.TEU_CAP,
VPL.PORT_NAME, VPL.PORT_CODE, VPL.ETA, VPL.ETD,
SIN.SIN_ETA
FROM VOYAGE_PORT_LINE AS VPL
INNER JOIN VOYAGE AS VYG ON VPL.ID = VYG.ID
INNER JOIN (
SELECT ID, MIN(ETA) AS SIN_ETA
FROM VOYAGE_PORT_LINE
WHERE CID='70200009' AND PORT_CODE='SGSIN' AND ETA IS NOT NULL
GROUP BY ID
) AS SIN ON SIN.ID = VPL.ID
WHERE VPL.CID='70200009' AND VPL.ETA IS NOT NULL
AND VPL.ETA != 'NULL' AND VPL.PORT_CODE!='SGSIN'
AND VPL.ETA > DATE_SUB(NOW(), INTERVAL $pastdays DAY)
AND $destination_filter AND VPL.P_PORT_CODE='-'
AND VYG.STATUS IN ('AC', 'CM')
AND (VYG.TEU_CAP IS NULL OR VYG.TEU_CAP != -1)
AND VPL.ETA > SIN.SIN_ETA
ORDER BY ".$orderings[$sortby];

$conp = collyer_schedule_connection();
try {
$result = $conp ? mysqli_query($conp, $sql) : false;
} catch (Throwable $error) {
$result = false;
}

if (!$result) {
echo '

';
} else {
$schedules = array();
while ($row = mysqli_fetch_assoc($result)) {
$arrival = strtotime($row['ETA']);
$singapore_arrival = strtotime($row['SIN_ETA']);
$departure = strtotime($row['ETD']);
if ($arrival === false || $singapore_arrival === false ||
($departure !== false && date('Y-m-d', $departure) === '2001-01-01')) continue;
$row['TRAVEL_DAYS'] = (int) floor(($arrival - $singapore_arrival) / 86400) + 1;
$row['IS_PAST'] = $arrival < time(); $schedules[] = $row; } mysqli_free_result($result); $destination_name = $bycountryonly === 'yes' ? $countrycode.' — '.countryCode2Name($countrycode) : (isset($schedules[0]) ? $schedules[0]['PORT_NAME'].' ('.$portcode.')' : $portcode); echo '

';
if ($schedules) {
echo '

';
}
echo '

';
echo '

Collyer Shipping · Sailing Schedules

';
echo '

'.count($schedules).' '.(count($schedules) === 1 ? 'sailing' : 'sailings').' to '.esc_html($destination_name).'

';
if ($schedules) {
echo '

';
echo '

';
echo '

';
echo '

';
echo '

';
echo '

';
foreach ($schedules as $row) {
$cell_class = $row['IS_PAST'] ? 'schdpast' : 'schd';
$port_name = $row['PORT_NAME'].' ('.$row['PORT_CODE'].')';
echo '

';
foreach (array($row['VESSEL_NAME'], $row['VOYAGE_NAME'], 'Singapore',
Mysql2PHPDateTime($row['SIN_ETA']), $port_name,
Mysql2PHPDateTime($row['ETA']), $row['TRAVEL_DAYS']) as $value) {
echo '

';
}
echo '

';
}
echo '

Sailings from Singapore to '.esc_html($destination_name).'
Vessel Name Voyage Origin ETA Singapore Destination Port ETA Destination Days
'.esc_html((string) $value).'

';
} else {
echo '

No sailings match this destination and date range. Try a longer date range or another destination.

';
}
echo '

';
}
}
?>

Please select a destination and choose Show sailings.

'Since yesterday', 8 => 'Past week', 15 => 'Past two weeks',
30 => 'Past month', 60 => 'Past two months');
$options = '';
foreach ($labels as $days => $label) {
$options .= '';
}
return $options;
}

function select_sortby($sortby) {
$labels = array('etasin' => 'Arrival in Singapore', 'eta' => 'Arrival at destination',
'port' => 'Destination port', 'vessel' => 'Vessel name');
$options = '';
foreach ($labels as $key => $label) {
$options .= '';
}
return $options;
}

//=== select_portcode ===============================================

//=== select_portcode ===============================================

function collyer_schedule_connection() {
static $connection = null;
if ($connection !== null) return $connection;
try {
$database = 'LOGISTICS';
$dbuser = 'collyerschd';
$dbpass = '4pRsssj9.q.dmv9a';
$connection = @mysqli_connect("192.168.32.8", "$dbuser", "$dbpass");
if (!$connection || !@mysqli_select_db($connection, $database)) {
if ($connection) mysqli_close($connection);
$connection = false;
}
} catch (Throwable $error) {
$connection = false;
}
return $connection;
}

// Countries come only from eligible destination ports, with one option per code.
function select_portcode($portcode) {
global $pastdays, $collyer_schedule_countries;
$collyer_schedule_countries = array();
$sql = "SELECT DISTINCT VPL.PORT_CODE, VPL.PORT_NAME
FROM VOYAGE_PORT_LINE AS VPL
INNER JOIN VOYAGE AS VYG ON VPL.ID = VYG.ID
WHERE VPL.CID='70200009' AND VPL.ETA IS NOT NULL
AND VPL.ETA != 'NULL' AND VPL.PORT_CODE!='SGSIN'
AND VPL.P_PORT_CODE='-'
AND VPL.ETA > DATE_SUB(NOW(), INTERVAL $pastdays DAY)
AND VYG.STATUS IN ('AC', 'CM')
ORDER BY VPL.PORT_NAME, VPL.PORT_CODE";
$conp = collyer_schedule_connection();
if (!$conp) return '';
try {
$result = mysqli_query($conp, $sql);
} catch (Throwable $error) {
$result = false;
}
if (!$result) return '';
$ports = array();
while ($row = mysqli_fetch_assoc($result)) {
$code = strtoupper(trim($row['PORT_CODE']));
if (!preg_match('/^[A-Z]{2}[A-Z0-9]{3}$/D', $code)) continue;
$country = substr($code, 0, 2);
$collyer_schedule_countries[$country] = countryCode2Name($country);
$ports[$code] = countryCode2Name($country).', '.$row['PORT_NAME'].' ('.$code.')';
}
mysqli_free_result($result);
asort($ports, SORT_NATURAL | SORT_FLAG_CASE);
$options = '';
foreach ($ports as $code => $label) {
$options .= '';
}
return $options;
}

function collyer_schedule_country_options($selected) {
global $collyer_schedule_countries;
$countries = (array) $collyer_schedule_countries;
asort($countries, SORT_NATURAL | SORT_FLAG_CASE);
$options = '';
foreach ($countries as $code => $name) {
$options .= '';
}
return $options;
}

function countryCode2Name($code) {
$code = strtoupper(trim($code));
$countries = collyer_schedule_iso_countries();
return isset($countries[$code]) ? $countries[$code] : $code;
}

function collyer_schedule_iso_countries() {
static $countries = null;
if (is_array($countries)) return $countries;
$cached = get_transient('collyer_schedule_iso_countries_v1');
if (is_array($cached) && count($cached) >= 200) return $countries = $cached;
// Maintained ISO-derived data, not an official ISO API. PDDL attribution:
// https://github.com/datasets/country-list (retrieved 2026-09-23).
// Only fetch this public list; no sailing, customer or database data is sent.
$fallback = json_decode('{"AF":"Afghanistan","AL":"Albania","DZ":"Algeria","AS":"American Samoa","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarctica","AG":"Antigua and Barbuda","AR":"Argentina","AM":"Armenia","AW":"Aruba","AU":"Australia","AT":"Austria","AZ":"Azerbaijan","BS":"Bahamas (The)","BH":"Bahrain","BD":"Bangladesh","BB":"Barbados","BY":"Belarus","BE":"Belgium","BZ":"Belize","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia (Plurinational State of)","BQ":"Bonaire, Sint Eustatius and Saba","BA":"Bosnia and Herzegovina","BW":"Botswana","BV":"Bouvet Island","BR":"Brazil","IO":"British Indian Ocean Territory (the)","BN":"Brunei Darussalam","BG":"Bulgaria","BF":"Burkina Faso","BI":"Burundi","CV":"Cabo Verde","KH":"Cambodia","CM":"Cameroon","CA":"Canada","KY":"Cayman Islands (the)","CF":"Central African Republic (the)","TD":"Chad","CL":"Chile","CN":"China","CX":"Christmas Island","CC":"Cocos (Keeling) Islands (the)","CO":"Colombia","KM":"Comoros (the)","CD":"Congo (the Democratic Republic of the)","CG":"Congo (the)","CK":"Cook Islands (the)","CR":"Costa Rica","HR":"Croatia","CU":"Cuba","CW":"Curaçao","CY":"Cyprus","CZ":"Czechia","CI":"Côte d\'Ivoire","DK":"Denmark","DJ":"Djibouti","DM":"Dominica","DO":"Dominican Republic (the)","EC":"Ecuador","EG":"Egypt","SV":"El Salvador","GQ":"Equatorial Guinea","ER":"Eritrea","EE":"Estonia","SZ":"Eswatini","ET":"Ethiopia","FK":"Falkland Islands (the) [Malvinas]","FO":"Faroe Islands (the)","FJ":"Fiji","FI":"Finland","FR":"France","GF":"French Guiana","PF":"French Polynesia","TF":"French Southern Territories (the)","GA":"Gabon","GM":"Gambia (the)","GE":"Georgia","DE":"Germany","GH":"Ghana","GI":"Gibraltar","GR":"Greece","GL":"Greenland","GD":"Grenada","GP":"Guadeloupe","GU":"Guam","GT":"Guatemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard Island and McDonald Islands","VA":"Holy See (the)","HN":"Honduras","HK":"Hong Kong","HU":"Hungary","IS":"Iceland","IN":"India","ID":"Indonesia","IR":"Iran (Islamic Republic of)","IQ":"Iraq","IE":"Ireland","IM":"Isle of Man","IL":"Israel","IT":"Italy","JM":"Jamaica","JP":"Japan","JE":"Jersey","JO":"Jordan","KZ":"Kazakhstan","KE":"Kenya","KI":"Kiribati","KP":"Korea (the Democratic People\'s Republic of)","KR":"Korea (the Republic of)","KW":"Kuwait","KG":"Kyrgyzstan","LA":"Lao People\'s Democratic Republic (the)","LV":"Latvia","LB":"Lebanon","LS":"Lesotho","LR":"Liberia","LY":"Libya","LI":"Liechtenstein","LT":"Lithuania","LU":"Luxembourg","MO":"Macao","MG":"Madagascar","MW":"Malawi","MY":"Malaysia","MV":"Maldives","ML":"Mali","MT":"Malta","MH":"Marshall Islands (the)","MQ":"Martinique","MR":"Mauritania","MU":"Mauritius","YT":"Mayotte","MX":"Mexico","FM":"Micronesia (Federated States of)","MD":"Moldova (the Republic of)","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MA":"Morocco","MZ":"Mozambique","MM":"Myanmar","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"Netherlands (Kingdom of the)","NC":"New Caledonia","NZ":"New Zealand","NI":"Nicaragua","NE":"Niger (the)","NG":"Nigeria","NU":"Niue","NF":"Norfolk Island","MK":"North Macedonia","MP":"Northern Mariana Islands (the)","NO":"Norway","OM":"Oman","PK":"Pakistan","PW":"Palau","PS":"Palestine, State of","PA":"Panama","PG":"Papua New Guinea","PY":"Paraguay","PE":"Peru","PH":"Philippines (the)","PN":"Pitcairn","PL":"Poland","PT":"Portugal","PR":"Puerto Rico","QA":"Qatar","RO":"Romania","RU":"Russian Federation (the)","RW":"Rwanda","RE":"Réunion","BL":"Saint Barthélemy","SH":"Saint Helena, Ascension and Tristan da Cunha","KN":"Saint Kitts and Nevis","LC":"Saint Lucia","MF":"Saint Martin (French part)","PM":"Saint Pierre and Miquelon","VC":"Saint Vincent and the Grenadines","WS":"Samoa","SM":"San Marino","ST":"Sao Tome and Principe","SA":"Saudi Arabia","SN":"Senegal","RS":"Serbia","SC":"Seychelles","SL":"Sierra Leone","SG":"Singapore","SX":"Sint Maarten (Dutch part)","SK":"Slovakia","SI":"Slovenia","SB":"Solomon Islands","SO":"Somalia","ZA":"South Africa","GS":"South Georgia and the South Sandwich Islands","SS":"South Sudan","ES":"Spain","LK":"Sri Lanka","SD":"Sudan (the)","SR":"Suriname","SJ":"Svalbard and Jan Mayen","SE":"Sweden","CH":"Switzerland","SY":"Syrian Arab Republic (the)","TW":"Taiwan (Province of China)","TJ":"Tajikistan","TZ":"Tanzania, the United Republic of","TH":"Thailand","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"Trinidad and Tobago","TN":"Tunisia","TM":"Turkmenistan","TC":"Turks and Caicos Islands (the)","TV":"Tuvalu","TR":"Türkiye","UG":"Uganda","UA":"Ukraine","AE":"United Arab Emirates (the)","GB":"United Kingdom of Great Britain and Northern Ireland (the)","UM":"United States Minor Outlying Islands (the)","US":"United States of America (the)","UY":"Uruguay","UZ":"Uzbekistan","VU":"Vanuatu","VE":"Venezuela (Bolivarian Republic of)","VN":"Viet Nam","VG":"Virgin Islands (British)","VI":"Virgin Islands (U.S.)","WF":"Wallis and Futuna","EH":"Western Sahara*","YE":"Yemen","ZM":"Zambia","ZW":"Zimbabwe","AX":"Åland Islands"}', true);
$saved = get_option('collyer_schedule_iso_last_good_v1', array());
$countries = is_array($saved) && count($saved) >= 200 ? $saved : $fallback;
$response = wp_safe_remote_get('https://raw.githubusercontent.com/datasets/country-list/main/data.csv', array('timeout' => 4, 'limit_response_size' => 100000));
if (!is_wp_error($response) && wp_remote_retrieve_response_code($response) === 200) {
$lines = preg_split('/\r\n|\r|\n/', trim(wp_remote_retrieve_body($response)));
$header = str_getcsv(array_shift($lines), ',', '"', '\\');
$code_column = array_search('Code', $header, true);
$name_column = array_search('Name', $header, true);
$fresh = array();
if ($code_column !== false && $name_column !== false) {
foreach ($lines as $line) {
$row = str_getcsv($line, ',', '"', '\\');
if (!isset($row[$code_column], $row[$name_column])) continue;
$code = strtoupper(trim($row[$code_column]));
$name = sanitize_text_field($row[$name_column]);
if (preg_match('/^[A-Z]{2}$/D', $code) && $name !== '') $fresh[$code] = $name;
}
}
if (count($fresh) >= 200 && count($fresh) <= 300 && isset($fresh['SG'], $fresh['CN'], $fresh['US'])) { $countries = $fresh; update_option('collyer_schedule_iso_last_good_v1', $countries, false); set_transient('collyer_schedule_iso_countries_v1', $countries, 7 * DAY_IN_SECONDS); return $countries; } } // Retain last-known-good names; retry on a visit after one hour. set_transient('collyer_schedule_iso_countries_v1', $countries, HOUR_IN_SECONDS); return $countries; } ?>

Showing all 3 results