PHP MongoDB case insensitive sorting (Solved)

Although MondoDB does not offer it, but you can very easily do it in PHP or any other language. Here is how to do it in PHP.


$cn = new MongoClient($dbHost);
$db = $cn->selectDB($dbName);
$col = new MongoCollection($db, $collectionName);

$cursor = $col->find();
$cursor = iterator_to_array($cursor);

foreach ($cursor as $key => $row) {
$name[$key] = $row['name'];
$email[$key] = $row['email'];
//$name is the field to sort on, taken from the above loop
//You can use SORT_ASC or SORT_DESC

array_multisort($name, SORT_ASC, $cursor);

foreach ($cursor as $doc) {
echo $doc['name'].’-’.$doc['email'].’<br/>’;



How to sort and print multidimensional array in PHP


$result = array(
array(‘name’ => ‘John’, ‘age’ => ’40′),
array(‘name’ => ‘James’, ‘age’ => ’30′),
array(‘name’ => ‘Ana’, ‘age’ => ’20′),
array(‘name’ => ‘Tania’, ‘age’ => ’10′)

echo ‘<pre>’;
echo ‘</pre>’;

foreach ($result as $key => $row) {
$name[$key]  = $row['name'];
$age[$key] = $row['age'];

array_multisort($age, SORT_ASC, $result);

echo ‘<pre>’;
echo ‘</pre>’;

echo “<pre>”;
echo “Name\t\tAge”;
foreach ( $result as $var ) {
echo “\n”, $var['name'], “\t\t”, $var['age'];


How to generate a dropdown of PHP time zones

$timezones =
array (
'(GMT-12:00) International Date Line West' => 'Pacific/Wake',
'(GMT-11:00) Midway Island' => 'Pacific/Apia',
'(GMT-11:00) Samoa' => 'Pacific/Apia',
'(GMT-10:00) Hawaii' => 'Pacific/Honolulu',
'(GMT-09:00) Alaska' => 'America/Anchorage',
'(GMT-08:00) Pacific Time (US &amp; Canada); Tijuana' => 'America/Los_Angeles',
'(GMT-07:00) Arizona' => 'America/Phoenix',
'(GMT-07:00) Chihuahua' => 'America/Chihuahua',
'(GMT-07:00) La Paz' => 'America/Chihuahua',
'(GMT-07:00) Mazatlan' => 'America/Chihuahua',
'(GMT-07:00) Mountain Time (US &amp; Canada)' => 'America/Denver',
'(GMT-06:00) Central America' => 'America/Managua',
'(GMT-06:00) Central Time (US &amp; Canada)' => 'America/Chicago',
'(GMT-06:00) Guadalajara' => 'America/Mexico_City',
'(GMT-06:00) Mexico City' => 'America/Mexico_City',
'(GMT-06:00) Monterrey' => 'America/Mexico_City',
'(GMT-06:00) Saskatchewan' => 'America/Regina',
'(GMT-05:00) Bogota' => 'America/Bogota',
'(GMT-05:00) Eastern Time (US &amp; Canada)' => 'America/New_York',
'(GMT-05:00) Indiana (East)' => 'America/Indiana/Indianapolis',
'(GMT-05:00) Lima' => 'America/Bogota',
'(GMT-05:00) Quito' => 'America/Bogota',
'(GMT-04:00) Atlantic Time (Canada)' => 'America/Halifax',
'(GMT-04:00) Caracas' => 'America/Caracas',
'(GMT-04:00) La Paz' => 'America/Caracas',
'(GMT-04:00) Santiago' => 'America/Santiago',
'(GMT-03:30) Newfoundland' => 'America/St_Johns',
'(GMT-03:00) Brasilia' => 'America/Sao_Paulo',
'(GMT-03:00) Buenos Aires' => 'America/Argentina/Buenos_Aires',
'(GMT-03:00) Georgetown' => 'America/Argentina/Buenos_Aires',
'(GMT-03:00) Greenland' => 'America/Godthab',
'(GMT-02:00) Mid-Atlantic' => 'America/Noronha',
'(GMT-01:00) Azores' => 'Atlantic/Azores',
'(GMT-01:00) Cape Verde Is.' => 'Atlantic/Cape_Verde',
'(GMT) Casablanca' => 'Africa/Casablanca',
'(GMT) Edinburgh' => 'Europe/London',
'(GMT) Greenwich Mean Time : Dublin' => 'Europe/London',
'(GMT) Lisbon' => 'Europe/London',
'(GMT) London' => 'Europe/London',
'(GMT) Monrovia' => 'Africa/Casablanca',
'(GMT+01:00) Amsterdam' => 'Europe/Berlin',
'(GMT+01:00) Belgrade' => 'Europe/Belgrade',
'(GMT+01:00) Berlin' => 'Europe/Berlin',
'(GMT+01:00) Bern' => 'Europe/Berlin',
'(GMT+01:00) Bratislava' => 'Europe/Belgrade',
'(GMT+01:00) Brussels' => 'Europe/Paris',
'(GMT+01:00) Budapest' => 'Europe/Belgrade',
'(GMT+01:00) Copenhagen' => 'Europe/Paris',
'(GMT+01:00) Ljubljana' => 'Europe/Belgrade',
'(GMT+01:00) Madrid' => 'Europe/Paris',
'(GMT+01:00) Paris' => 'Europe/Paris',
'(GMT+01:00) Prague' => 'Europe/Belgrade',
'(GMT+01:00) Rome' => 'Europe/Berlin',
'(GMT+01:00) Sarajevo' => 'Europe/Sarajevo',
'(GMT+01:00) Skopje' => 'Europe/Sarajevo',
'(GMT+01:00) Stockholm' => 'Europe/Berlin',
'(GMT+01:00) Vienna' => 'Europe/Berlin',
'(GMT+01:00) Warsaw' => 'Europe/Sarajevo',
'(GMT+01:00) West Central Africa' => 'Africa/Lagos',
'(GMT+01:00) Zagreb' => 'Europe/Sarajevo',
'(GMT+02:00) Athens' => 'Europe/Istanbul',
'(GMT+02:00) Bucharest' => 'Europe/Bucharest',
'(GMT+02:00) Cairo' => 'Africa/Cairo',
'(GMT+02:00) Harare' => 'Africa/Johannesburg',
'(GMT+02:00) Helsinki' => 'Europe/Helsinki',
'(GMT+02:00) Istanbul' => 'Europe/Istanbul',
'(GMT+02:00) Jerusalem' => 'Asia/Jerusalem',
'(GMT+02:00) Kyiv' => 'Europe/Helsinki',
'(GMT+02:00) Minsk' => 'Europe/Istanbul',
'(GMT+02:00) Pretoria' => 'Africa/Johannesburg',
'(GMT+02:00) Riga' => 'Europe/Helsinki',
'(GMT+02:00) Sofia' => 'Europe/Helsinki',
'(GMT+02:00) Tallinn' => 'Europe/Helsinki',
'(GMT+02:00) Vilnius' => 'Europe/Helsinki',
'(GMT+03:00) Baghdad' => 'Asia/Baghdad',
'(GMT+03:00) Kuwait' => 'Asia/Riyadh',
'(GMT+03:00) Moscow' => 'Europe/Moscow',
'(GMT+03:00) Nairobi' => 'Africa/Nairobi',
'(GMT+03:00) Riyadh' => 'Asia/Riyadh',
'(GMT+03:00) St. Petersburg' => 'Europe/Moscow',
'(GMT+03:00) Volgograd' => 'Europe/Moscow',
'(GMT+03:30) Tehran' => 'Asia/Tehran',
'(GMT+04:00) Abu Dhabi' => 'Asia/Muscat',
'(GMT+04:00) Baku' => 'Asia/Tbilisi',
'(GMT+04:00) Muscat' => 'Asia/Muscat',
'(GMT+04:00) Tbilisi' => 'Asia/Tbilisi',
'(GMT+04:00) Yerevan' => 'Asia/Tbilisi',
'(GMT+04:30) Kabul' => 'Asia/Kabul',
'(GMT+05:00) Ekaterinburg' => 'Asia/Yekaterinburg',
'(GMT+05:00) Islamabad' => 'Asia/Karachi',
'(GMT+05:00) Karachi' => 'Asia/Karachi',
'(GMT+05:00) Tashkent' => 'Asia/Karachi',
'(GMT+05:30) Chennai' => 'Asia/Calcutta',
'(GMT+05:30) Kolkata' => 'Asia/Calcutta',
'(GMT+05:30) Mumbai' => 'Asia/Calcutta',
'(GMT+05:30) New Delhi' => 'Asia/Calcutta',
'(GMT+05:45) Kathmandu' => 'Asia/Katmandu',
'(GMT+06:00) Almaty' => 'Asia/Novosibirsk',
'(GMT+06:00) Astana' => 'Asia/Dhaka',
'(GMT+06:00) Dhaka' => 'Asia/Dhaka',
'(GMT+06:00) Novosibirsk' => 'Asia/Novosibirsk',
'(GMT+06:00) Sri Jayawardenepura' => 'Asia/Colombo',
'(GMT+06:30) Rangoon' => 'Asia/Rangoon',
'(GMT+07:00) Bangkok' => 'Asia/Bangkok',
'(GMT+07:00) Hanoi' => 'Asia/Bangkok',
'(GMT+07:00) Jakarta' => 'Asia/Bangkok',
'(GMT+07:00) Krasnoyarsk' => 'Asia/Krasnoyarsk',
'(GMT+08:00) Beijing' => 'Asia/Hong_Kong',
'(GMT+08:00) Chongqing' => 'Asia/Hong_Kong',
'(GMT+08:00) Hong Kong' => 'Asia/Hong_Kong',
'(GMT+08:00) Irkutsk' => 'Asia/Irkutsk',
'(GMT+08:00) Kuala Lumpur' => 'Asia/Singapore',
'(GMT+08:00) Perth' => 'Australia/Perth',
'(GMT+08:00) Singapore' => 'Asia/Singapore',
'(GMT+08:00) Taipei' => 'Asia/Taipei',
'(GMT+08:00) Ulaan Bataar' => 'Asia/Irkutsk',
'(GMT+08:00) Urumqi' => 'Asia/Hong_Kong',
'(GMT+09:00) Osaka' => 'Asia/Tokyo',
'(GMT+09:00) Sapporo' => 'Asia/Tokyo',
'(GMT+09:00) Seoul' => 'Asia/Seoul',
'(GMT+09:00) Tokyo' => 'Asia/Tokyo',
'(GMT+09:00) Yakutsk' => 'Asia/Yakutsk',
'(GMT+09:30) Adelaide' => 'Australia/Adelaide',
'(GMT+09:30) Darwin' => 'Australia/Darwin',
'(GMT+10:00) Brisbane' => 'Australia/Brisbane',
'(GMT+10:00) Canberra' => 'Australia/Sydney',
'(GMT+10:00) Guam' => 'Pacific/Guam',
'(GMT+10:00) Hobart' => 'Australia/Hobart',
'(GMT+10:00) Melbourne' => 'Australia/Sydney',
'(GMT+10:00) Port Moresby' => 'Pacific/Guam',
'(GMT+10:00) Sydney' => 'Australia/Sydney',
'(GMT+10:00) Vladivostok' => 'Asia/Vladivostok',
'(GMT+11:00) Magadan' => 'Asia/Magadan',
'(GMT+11:00) New Caledonia' => 'Asia/Magadan',
'(GMT+11:00) Solomon Is.' => 'Asia/Magadan',
'(GMT+12:00) Auckland' => 'Pacific/Auckland',
'(GMT+12:00) Fiji' => 'Pacific/Fiji',
'(GMT+12:00) Kamchatka' => 'Pacific/Fiji',
'(GMT+12:00) Marshall Is.' => 'Pacific/Fiji',
'(GMT+12:00) Wellington' => 'Pacific/Auckland',
'(GMT+13:00) Nuku\'alofa' => 'Pacific/Tongatapu',

echo '<select name="something">';
echo '<option value="">Select...</option>';
foreach ($timezones as $k => $v) {
echo '<option value="' . $v . '">' . $k . '</option>';
echo '</select>';

How to Convert MySQL query to CSV in PHP

function setExcelContentType() {
if (headers_sent())
return false;

header('Content-type: application/');
return true;

function setDownloadAsHeader($filename) {
if (headers_sent())
return false;

header('Content-disposition: attachment; filename=' . $filename);
return true;

function csvFromResult($stream, $result, $showColumnHeaders = true) {
if ($showColumnHeaders) {
$columnHeaders = array();
$nfields = mysql_num_fields($result);
for ($i = 0; $i < $nfields; $i++) { $field = mysql_fetch_field($result, $i); $columnHeaders[] = $field->name;
fputcsv($stream, $columnHeaders);

$nrows = 0;
while ($row = mysql_fetch_row($result)) {
fputcsv($stream, $row);

return $nrows;

function csvFileFromResult($filename, $result, $showColumnHeaders = true) {
$fp = fopen($filename, 'w');
$rc = csvFromResult($fp, $result, $showColumnHeaders);
return $rc;

function csvToExcelDownloadFromResult($result, $showColumnHeaders = true, $asFilename = 'data.csv') {
return csvFileFromResult('php://output', $result, $showColumnHeaders);

$sql = "SELECT filed1, field2 FROM table1";

$result = mysql_query($sql);

How to remove duplicate rows in MySQL

A really easy way to do this is to add a UNIQUE index on the one or more columns. When you write the ALTER statement, include the IGNORE keyword. Like so:

ALTER IGNORE TABLE jobs ADD UNIQUE INDEX idx_name (site_id, title, company );

This will drop all the duplicate rows. As an added benefit, future INSERTs that are duplicates will error out. As always, you may want to take a backup before running something like this.

If you do not want the field to be unique, drop the unique key once done.

How to switch on PHP magic quotes gpc and magic quotes runtime on Hostgator reseller hosting

There are two steps involved in it.

First, under public_html folder, in .htaccess file write the following code.

<IfModule mod_suphp.c>
suPHP_ConfigPath /home/username
<Files php.ini>
order allow,deny
deny from all

*Replace username with your hosting account’s username (NOT the main reseller username).

Then under /home/username folder, create a php.ini file and write the below mentioned code in it.

magic_quotes_gpc = On
magic_quotes_runtime = On

Please make sure there are no empty spaces at the end of .htaccess and php.ini files.