Feb 28, 2013

JSON array of objects

It can be a situation where you got a array of data that should be sent in the JSON format to server via ajax, then you can do the following

<script type="text/javascript" >
groups = ['A', 'B', 'C'];
users  = ['user1', 'user2', 'user3'];

//required format is  [{"group_name" : "A", "leader" : "user1"}, {"group_name" : "B", "leader" : "user2"}, {"group_name" : "C", "leader" : "user3"}]

group_leaders = new Array();

len = groups.length;

for(var i = 0; i < len; i++ ){
    group_leaders.push({"group_name" : groups[i], "leader" : users[i]});
}

alert(JSON.stringify(group_leaders));
</script>

Here you can test here http://jsfiddle.net/sailesh/6wXdY/

Feb 26, 2013

Windows Azure SQL Database PDO

I faced a problem while trying to connect Windows Azure SQL Database from local system using PDO. Here I'm using PHP 5.4+ and Apache 2.4 on Windows 8. I didn't find better tutorial for trouble shooting.

Following are the steps that explains you what to do..

  1. Download php_pdo_sqlsrv_54_ts.dll and placed it in php/ext directory. Here you can find it
    http://www.microsoft.com/en-us/download/details.aspx?id=20098
    Download SQLSRV30.EXE and extracted to php/ext directory
  2. Open the php/php.ini file and added the following line
    extension=php_pdo_sqlsrv_54_ts.dll
  3. It needs Microsoft SQL Server 2012 Native Client, to go further. So download it from
    http://www.microsoft.com/en-us/download/confirmation.aspx?id=29065
    for 32bits(x86)
    http://go.microsoft.com/fwlink/?LinkID=239647&clcid=0x409
    for 64bits(x64)
    http://go.microsoft.com/fwlink/?LinkID=239648&clcid=0x409
  4. Restart the Apache server.
  5. Write the following code in php file to connect.
    <?php
      $server_url = "xxxxxxx.database.windows.net,1433";
      $db_name = "database_name";
      $db_user = "db_username";
      $db_pwd = "db_pword";
      $conn = new PDO("sqlsrv:Server=tcp:$server_url;Database=$db_name", $db_username, $db_pwd);
      $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    ?>
  6. Fetching data from table
    <?php
      $query = "SELECT * FROM categories";
      $stmt = $conn->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
      $stmt->excute();

      while($cat = $stmt->fetch(PDO::FETCH_ASSOC)){
        echo $cat['cat_id']."---".$cat['cat_name']."<br />";
      }
    ?>
That's it...

Feb 1, 2013

Download file using PHP

Downloading a file can be done in two ways:

  1. Direct download
  2. Indirect download
Direct Download:
Assumptions:
File location: c:/xampp/htdocs/project/docs/test.doc
URL: http://localhost/project/docs/test.doc

Code:  <a href='http://localhost/project/docs/test.doc'>click here</a>

Indirect Download:
(recommended)
Assumptions:
File location: c:/xampp/htdocs/project/docs/test.doc
PHP file for the download code:
location: c:/xampp/htdocs/project/download.php

<?php
  $file_name = $_GET['file'];
  $file_path = "docs/".$file_name;

 //setting the content type
  header('content-type: application/octet-stream');

  //downloads file as attachment
  header("content-disposition: attachment; filename='$file_name'");

  //actual file path
  readfile($file_path);

?>

Note: content-type application/octet-stream can be used for any type of file.

To use the above file for download. Create link like as below
<a href='http://localhost/project/download.php?file=test.doc'>click here</a>

For any queries or clarifications post a comment.