使用Google文档作为数据库?

时间:2011-02-18 03:00:56

标签: php mysql xml csv google-sheets

我想为一个网站创建一个非常简单的PHP页面,它会显示一个像数据一样的时间表/日历,其中每个插槽都是免费的,或者会有一些约会。

因为所有数据实际上只是一个表,例如{month,day,hour,talk_name,talk_description},我想为什么不使用Google Docs电子表格作为数据库。好吧,主要原因是我只是在阅读有关如何在PHP中使用MySQL的书籍,所以我肯定不会达到以下目标:

  • 创建一个很好的管理界面来管理事件
  • 让整个事情变得安全(我的意思是我对安全性的所有想法都是使用.htaccess作为管理文件夹,并使网站在其他地方只读)。

另一方面,每个人都可以使用Google Spreadsheets来编辑表格,因此安全方面和UI方面都可以解决。

我的问题是你怎么建议我这样做? Google文档可以以XML和CSV格式发布。我可以使用fgetcsv来获取数据吗?你能给我一些简单的例子来解析csv,如果它会有效(好吧,它每天少于50次),如果我会做这样的事情(抱歉抽象语法)?

$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
  }
}

5 个答案:

答案 0 :(得分:22)

所以,虽然它可能不是明智的或可扩展的,但是,你可以做到。试试这段代码:

<?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);
}

基本上,将电子表格发布为公开,通过手动编辑URL(即output=csv)将输出更改为csv(来自默认HTML),获取它,然后使用{{{}逐行迭代它3}}。

如果电子表格如下所示:

enter image description here

这将为有问题的csv输出以下内容:

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"
}

答案 1 :(得分:2)

你可以尝试这只是为了好玩。但如果您只需要公共日历,请使用Google日历之类的内容。 Google Calendar API可让您从程序更新日历。您可以使用Google嵌入式日历助手在您的网站中嵌入日历。

虽然没有像从头开始编程那么有趣......; - )

答案 2 :(得分:0)

我用Zend框架编写了一些PHP来阅读Google电子表格。 此处提供的代码http://www.geekzone.co.nz/hellonearthisman/6647

答案 3 :(得分:0)

Check out this page for a pretty straightforward approach to using a GDocs spreadsheet as a CRUD DB.用法遵循这种模式,但你需要首先从github下载一个Zend类和一个GDocs / PHP文件......

<?php            // Zend library include path
set_include_path(get_include_path() . PATH_SEPARATOR . "$_SERVER[DOCUMENT_ROOT]/ZendGdata-1.8.1/library");
include_once("Google_Spreadsheet.php");
    $u = "username@gmail.com";
    $p = "password";
    $ss = new Google_Spreadsheet($u,$p);
    $ss->useSpreadsheet("My Spreadsheet");
                // if not setting worksheet, "Sheet1" is assumed
                // $ss->useWorksheet("worksheetName");
$row = array 
    ( "name" => "John Doe", "email" => "john@example.com", "comments" => "Hello world" );
if ($ss->addRow($row)) echo "Form data successfully stored using Google Spreadsheet";
    else echo "Error, unable to store spreadsheet data";
?>

答案 4 :(得分:0)

我没有足够的代表在上面添加评论,但将工作表导出为CSV的新方法确实有效。

您的网址(公开)从表格中共享:

https://docs.google.com/spreadsheets/d/9999999999999/edit?usp=sharing

更改结束/edit?usp=sharing to /export?format=csv

像:

https://docs.google.com/spreadsheets/d/99999999999999/export?format=csv

来源:https://productforums.google.com/d/msg/docs/An-nZtjaupU/llWy4eYFywcJ