использование документов 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
  }
}
Author: Mogsdad, 2011-02-18

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.

Если электронная таблица выглядит следующим образом:

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"
}
 22
Author: Yahel, 2015-05-05 13:32:53

Вы могли бы попробовать это просто для удовольствия. Но если вам просто нужен общий календарь, используйте что-то вроде календаря Google. API календаря Google позволяет обновлять календарь из программы. И вы можете встроить календарь на свой веб-сайт с помощью встроенного помощника Google по календарю.

Хотя это не так весело, как программировать его с нуля... ;-)

 2
Author: Jim Ferrans, 2011-02-18 04:03:08

Я написал немного PHP с помощью Zend framework, чтобы читать электронные таблицы Google. Код доступен здесь http://www.geekzone.co.nz/hellonearthisman/6647

 0
Author: Hellonearthis, 2011-02-18 05:22:35

Ознакомьтесь с этой страницей для довольно простого подхода к использованию электронной таблицы 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";
?>
 0
Author: Alex Gray, 2011-08-07 17:43:17

У меня недостаточно репутации, чтобы добавить комментарий выше, но новый метод экспорта листа в 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

 0
Author: user2421267, 2016-06-21 23:55:24