Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

using Google Docs as a database?

I would like to create a very simple PHP page for a site, which would show a timetable / calendar like data, where each slot would be either free or would have some appointment in it.

Because all the data is actually just one table, something like {month, day, hour, talk_name, talk_description}, I thought why not use a Google Docs Spreadsheet as the database. OK, the main reason is that I'm just reading books about how to use MySQL in PHP, so I'm definately not on a level to:

  • create a nice admin interface for managing the events
  • make the whole thing safe (I mean all my idea about safety is to use .htaccess for an admin folder and make the site read-only elsewhere).

On the other hand everyone could use Google Spreadsheets for editing the table, so this way both the security aspects and the UI aspects would be solved.

My question is that how would you recommend me to do that? Google Docs can both publish in XML and CSV formats. Can I just use fgetcsv to get the datas? Can you give me some simple examples how to parse the csv, and if it would be efficient (ok, it will be less than 50 views a day), if I would do something like this (sorry for the abstract syntax)?

$source_csv = fgetcsv(...);

get_talk_name(x,y,z) {
  for all rows in $source_csv {
    if (month == x && day == y && hour == z) return talk_name
  }
}

get_talk_desc(x,y,z) {
  for all rows in $source_csv {
    if (month == x && day == y && hour == z) return talk_name
  }
}
like image 578
hyperknot Avatar asked Feb 18 '11 03:02

hyperknot


People also ask

Does Google Docs have a database program?

Google sheets is a web application, and your complete data is stored in a cloud-based database. Hence you no need to worry about losing your data; you can access your data online.

Why you shouldn't use Google Sheets as a database?

Database features you'll miss For all that Sheets has going for it, there are some common features you are going to miss if you rely on it as a database: Queries: aside from the =QUERY formula, you can't really search across your data. Consistency: anything goes in a spreadsheet cell, and user edits add even more chaos.

Can I use Google Drive as database?

Yes, it's possible to do that. It will work fine, because each user has their own data in their own drive. You can store as much data you want in that special folder, as long as it doesn't fill the entire drive quota.

Can you use Google Sheets as a relational database?

Although Google Sheets is a great spreadsheet, it's not a relational database. Instead, consider a better tool such as Airtable, which allows you to create relational databases in your web browser with up to 1,200 free records (or more with the paid version), using existing templates or your own designs.


2 Answers

So, while it might not be wise or scalable, yes, you can do it. Try this code:

<?php
$url = "https://spreadsheets.google.com/pub?hl=en&hl=en&key=0AupgXsRU8E9UdC1DY0toUUJLV0M0THM4cGJTSkNSUnc&output=csv";
$row=0;

if (($handle = fopen($url, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}

Basically, publish the spreadsheet as public, change output to csv (from the default HTML) by manually editing the URL (ie, output=csv), fetch it, and then iterate over it line by line using fgetcsv.

If the spreadsheet looks like this:

enter image description here

This will output the following for the csv in question:

array(2) {
  [0]=>
  string(4) "Name"
  [1]=>
  string(5) "Value"
}
array(2) {
  [0]=>
  string(3) "Foo"
  [1]=>
  string(5) "13123"
}
array(2) {
  [0]=>
  string(3) "Bar"
  [1]=>
  string(3) "331"
}
like image 148
Yahel Avatar answered Sep 30 '22 16:09

Yahel


You could try this just for fun. But if you just need a communal calendar, use something like Google Calendar. The Google Calendar API enables you to update your calendar from a program. And you can embed a calendar in your website using the Google Embeddable Calendar Helper.

Not as much fun as programming it from scratch though ... ;-)

like image 44
Jim Ferrans Avatar answered Sep 30 '22 17:09

Jim Ferrans