hyp*_*not 11 php xml mysql csv google-sheets
我想为一个站点创建一个非常简单的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
}
}
Run Code Online (Sandbox Code Playgroud)
Yah*_*hel 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);
}
Run Code Online (Sandbox Code Playgroud)
基本上,将电子表格发布为公共,通过手动编辑URL(即,output=csv)将输出更改为csv(从默认HTML ),获取它,然后使用逐行迭代fgetcsv.
如果电子表格如下所示:

这将为有问题的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"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17418 次 |
| 最近记录: |