использование документов Google в качестве базы данных?
Я хотел бы создать очень простую PHP-страницу для сайта, на которой отображались бы данные, подобные расписанию/календарю, где каждый слот был бы либо бесплатным, либо в нем была бы назначена встреча.
Поскольку все данные на самом деле представляют собой всего лишь одну таблицу, что-то вроде {месяц, день, час, имя говорящего, описание говорящего}, я подумал, почему бы не использовать электронную таблицу Google Docs в качестве базы данных. Хорошо, основная причина в том, что я просто читаю книги о том, как использовать 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
}
}
5 answers
Итак, хотя это может быть неразумно или масштабируемо, да, вы можете это сделать. Попробуйте этот код:
<?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
.
Если электронная таблица выглядит следующим образом:
Это выведет следующее для рассматриваемого 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"
}
Вы могли бы попробовать это просто для удовольствия. Но если вам просто нужен общий календарь, используйте что-то вроде календаря Google. API календаря Google позволяет обновлять календарь из программы. И вы можете встроить календарь на свой веб-сайт с помощью встроенного помощника Google по календарю.
Хотя это не так весело, как программировать его с нуля... ;-)
Я написал немного PHP с помощью Zend framework, чтобы читать электронные таблицы Google. Код доступен здесь http://www.geekzone.co.nz/hellonearthisman/6647
Ознакомьтесь с этой страницей для довольно простого подхода к использованию электронной таблицы GDocs в качестве базы данных CRUD. Использование следует этому шаблону, но сначала вам нужно загрузить класс 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";
?>
У меня недостаточно репутации, чтобы добавить комментарий выше, но новый метод экспорта листа в 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