Используя Google Docs в качестве базы данных?
Я хотел бы создать очень простую страницу PHP для сайта, в которой будут отображаться данные о расписании/календаре, где каждый слот будет либо бесплатным, либо будет иметь какое-то назначение в нем.
Поскольку все данные фактически представляют собой только одну таблицу, что-то вроде {month, day, hour, talk_name, talk_description}, я подумал, почему не следует использовать таблицу документов Google в качестве базы данных. Хорошо, основная причина в том, что я просто читаю книги о том, как использовать MySQL в PHP, поэтому я определенно не на уровне:
- создать приятный интерфейс администратора для управления событиями
- сделать все это безопасным (я имею в виду, что все мое представление о безопасности - использовать .htaccess для папки администратора и сделать сайт доступным только для чтения в другом месте).
С другой стороны, каждый может использовать таблицы Google для редактирования таблицы, поэтому таким образом будут решены аспекты безопасности и аспекты пользовательского интерфейса.
Мой вопрос: как бы вы порекомендовали меня сделать это? Документы 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
}
}
Ответы
Ответ 1
Итак, хотя это может быть не разумно или масштабируемо, да, вы можете это сделать. Попробуйте этот код:
<?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);
}
В принципе, опубликуйте электронную таблицу как общедоступную, измените вывод на csv (из HTML по умолчанию), вручную отредактировав URL (т.е. output=csv
), извлеките его и затем проведите по нему по строке, используя fgetcsv
.
Если таблица выглядит следующим образом:
![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"
}
Ответ 2
Вы можете попробовать это просто для удовольствия. Но если вам нужен только общий календарь, используйте что-то вроде Google Calendar. API календаря Google позволяет обновлять календарь из программы. И вы можете встраивать календарь на свой сайт с помощью Google Embeddable Calendar Helper.
Не так весело, как программировать его с нуля, хотя...; -)
Ответ 3
Я написал несколько PHP с картой Zend для чтения электронных таблиц Google.
Код доступен здесь http://www.geekzone.co.nz/hellonearthisman/6647
Ответ 4
Проверьте эту страницу на довольно простой подход к использованию электронной таблицы GDocs в виде CRUD DB. Использование следует за этим шаблоном, но вам нужно загрузите класс Zend и файл GDocs/PHP из github в первую очередь...
<?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 = "[email protected]";
$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" => "[email protected]", "comments" => "Hello world" );
if ($ss->addRow($row)) echo "Form data successfully stored using Google Spreadsheet";
else echo "Error, unable to store spreadsheet data";
?>
Ответ 5
У меня недостаточно комментариев, чтобы добавить комментарий выше, но новый метод экспорта листа в CSV действительно работает.
Ваш url как (публично) делится с листов:
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