我想为一个网站创建一个非常简单的PHP页面,它会显示一个像数据一样的时间表/日历,其中每个插槽都是免费的,或者会有一些约会。
因为所有数据实际上只是一个表,例如{month,day,hour,talk_name,talk_description},我想为什么不使用Google Docs电子表格作为数据库。好吧,主要原因是我只是在阅读有关如何在PHP中使用MySQL的书籍,所以我肯定不会达到以下目标:
另一方面,每个人都可以使用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
}
}
答案 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}}。
如果电子表格如下所示:
这将为有问题的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