используя Google Docs в качестве базы данных? - PullRequest
11 голосов
/ 18 февраля 2011

Я хотел бы создать очень простую страницу PHP для сайта, которая бы отображала данные, подобные расписанию / календарю, где каждый слот был бы свободным или имел бы какую-то встречу в нем.

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

Ответы [ 5 ]

22 голосов
/ 18 февраля 2011

Так что, хотя это не может быть мудрым или масштабируемым, да, вы можете сделать это. Попробуйте этот код:

<?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 голосов
/ 18 февраля 2011

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

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

0 голосов
/ 22 июня 2016

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

Посетите эту страницу для довольно простого подхода к использованию электронной таблицы 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 = "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";
?>
0 голосов
/ 18 февраля 2011

Я написал несколько PHP с Zend Framework для чтения электронных таблиц Google. Код доступен здесь http://www.geekzone.co.nz/hellonearthisman/6647

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...