Tag Archives: PHP

PHP – Import CSV to MySQL

The following code snippet can be used to import CSV into MySQL using PHP.

<?php
$delimiter = ',';

$db = new mysqli('localhost', 'username', 'password', 'database');

if (($handle = fopen("import.csv", "r")) !== FALSE) {
	while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
		foreach($data as $i => $content) {
			$data[$i] = $db->real_escape_string($content);
		}
		$db->query("INSERT INTO mytable VALUES('" . implode("','", $data) . "');");
	}
	fclose($handle);
}

?>

A few things to keep in mind:

  • Make sure you change the MySQL login information to your own login information
  • Make sure you change the table name, in this case, mytable, to your own table name.
  • For your CSV (comma separated values) file, the delimiter may not necessarily be a comma. Change the $delimiter variable to the one-character delimiter separating the different fields.
  • This does NOT automatically create a table. You have to manually do that.
  • Every row would be inserted, so you should manually remove the first row if it is just the column names.

HTML5 Upload Multiple Files to PHP

HTML5 provides us with the ability to upload multiple files with a single <input> element. While it has been possible to upload several files within one form field, users had to manually select the files one by one. With a few files that may not be an issue, but it will get tedious when uploading a larger number of files. Previously, it has been possible for web developers to implement a similar solution in Flash, but now it can be done natively with HTML5. Here is an example on how to get the <input> element to allow multiple files:

<form action="" method="post" enctype="multipart/form-data">
	<input name="uploads[]" type="file" multiple="multiple">
	<input type="submit" value="Upload!">
</form>

Note the name of the <input> is uploads[], with a bracket. While the bracket is not required for multiple file selection, it is required for PHP to process the files. The following PHP snippet can be used to process the files uploaded using the code above:

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
	foreach($_FILES['uploads']['name'] as $id => $name) {
		rename($_FILES['uploads']['tmp_name'][$id], 'uploads/' . $name);
		echo "<p>$name uploaded successfully!</p>";
	}
}
?>

The PHP script will take all the files uploaded and place them into a folder named ‘uploads’. For it to work, the uploads folder will need to exist already, and needs to be writable by the web server. It’s recommended that you DO NOT use the exact PHP script in a production environment, as it’s dangerous to not check the file being uploaded. You don’t want others uploading a malicious PHP file and executing it on your server.

Google Pagerank API in PHP (Updated October 2011)

May 2012 Update: We have modified the original version of the google pagerank script, and we have modified it so it works on 64 bit, and corrects some of the bugs that exist in this one. Even though this post is “newer”, we recommend that you use the older version of the script.

The script below demonstrates the usage of the Google Pagerank API in PHP. Do note the script only works on 32 bit PHP installs, as the byte shifting does not work properly with 64 bit operating systems. We are working to provide a 64 bit alternative, although that’s not yet available.

The below example features a PageRank class, and two lines demonstrating the usage of the class. The script is mostly self explanatory.

<?php

class PageRank {
	function __construct($url) {
		$url = 'info:' . $url;
		$hash = '6' . $this->c($this->e($this->b($url)));
		$fetch = 'http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=' . $hash . '&ie=UTF-8&oe=UTF-8&features=Rank&q=' . $url;
		if(function_exists('curl_init')) {
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, $fetch);
			curl_setopt($ch, CURLOPT_HEADER, 0);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			$out = curl_exec($ch);
			curl_close($ch);
		} else {
			$out = file_get_contents($fetch);
		}
		$out = trim($out);
		if(strlen($out) > 0) {
			$this->pr = substr($out, 9);
		} else {
			$this->pr = -1;
		}
	}

	function b($hash) {
		$j = array();
		$length = strlen($hash);
        for($i = 0; $i < $length; $i++) {
        	$j[$i] = ord($hash[$i]);
        }
        return $j;
    }
	function c($l) {
		$l = ((($l / 7) << 2) | (($this->h($l, 13)) & 7));
		$j = array();
		$j[0] = $l;
		for($i = 1; $i < 20; $i++) {
			$j[$i] = $j[$i - 1] - 9;
		}
		$l = $this->e($this->g($j), 80);
		return $l;
	}
	function e($hash) {
		$r = 3862272608;
        $j = count($hash);
        $p = 2654435769;
        $o = 2654435769;
        $n = 3862272608;
        $l = 0;
        $m = $j;
        $q = array();
        while ($m >= 12) {
            $p += ($hash[$l] + ($hash[$l + 1] << 8) + ($hash[$l + 2] << 16) + ($hash[$l + 3] << 24));
            $o += ($hash[$l + 4] + ($hash[$l + 5] << 8) + ($hash[$l + 6] << 16) + ($hash[$l + 7] << 24));
            $n += ($hash[$l + 8] + ($hash[$l + 9] << 8) + ($hash[$l + 10] << 16) + ($hash[$l + 11] << 24));
            $q = $this->s($p, $o, $n);
            $p = $q[0];
            $o = $q[1];
            $n = $q[2];
            $l += 12;
            $m -= 12;
        }
        $n += $j;
        switch ($m) {
        case 11:
            $n += $hash[$l + 10] << 24;
        case 10:
            $n += $hash[$l + 9] << 16;
        case 9:
            $n += $hash[$l + 8] << 8;
        case 8:
            $o += $hash[$l + 7] << 24;
        case 7:
            $o += $hash[$l + 6] << 16;
        case 6:
            $o += $hash[$l + 5] << 8;
        case 5:
            $o += $hash[$l + 4];
        case 4:
            $p += $hash[$l + 3] << 24;
        case 3:
            $p += $hash[$l + 2] << 16;
        case 2:
            $p += $hash[$l + 1] << 8;
        case 1:
            $p += $hash[$l];
        }
        $q = $this->s($p, $o, $n);
        return ($q[2] < 0) ? (4294967296 + $q[2]) : $q[2];
	}
	function f($j, $i) {
        $k = 2147483648;
        if ($k & $j) {
            $j = $j >> 1;
            $j &= ~$k;
            $j |= 1073741824;
            $j = $j >> ($i - 1);
        } else {
            $j = $j >> $i;
        }
        return $j;
    }

    function g($j) {
    	$l = array();
    	$length = count($j);
    	for($k = 0; $k < $length; $k++) {
    	    for ($m = $k * 4; $m <= $k * 4 + 3; $m++) {
                $l[$m] = $j[$k] & 255;
                $j[$k] = $this->f($j[$k], 8);
            }
    	}
        return $l;
    }

    function h($j, $l) {
        $k = floor($j / $l);
        return ($j - $k * $l);
    }
	function s($t, $k, $u) {
		$t -= $k;
		$t -= $u;
		$t ^= ($this->f($u, 13));
		$k -= $u;
		$k -= $t;
		$k ^= ($t << 8);
		$u -= $t;
		$u -= $k;
		$u ^= ($this->f($k, 13));
		$t -= $k;
		$t -= $u;
		$t ^= ($this->f($u, 12));
		$k -= $u;
		$k -= $t;
		$k ^= ($t << 16);
		$u -= $t;
		$u -= $k;
		$u ^= ($this->f($k, 5));
		$t -= $k;
		$t -= $u;
		$t ^= ($this->f($u, 3));
		$k -= $u;
		$k -= $t;
		$k ^= ($t << 10);
		$u -= $t;
		$u -= $k;
		$u ^= ($this->f($k, 15));
		return array($t, $k, $u);
	}
}

$page_rank = new PageRank('http://www.fusionswift.com');
echo $page_rank->pr;
?>