korzystanie z Google Docs jako bazy danych?

Chciałbym stworzyć bardzo prostą stronę PHP dla witryny, która pokazywałaby harmonogram / kalendarz jak dane, gdzie każdy slot byłby albo wolny, albo miał jakieś spotkanie w nim.

Ponieważ wszystkie dane są w rzeczywistości tylko jedną tabelą, coś w rodzaju {Miesiąc, Dzień, godzina, talk_name, talk_description}, pomyślałem, dlaczego nie użyć arkusza kalkulacyjnego Google Docs jako bazy danych. OK, głównym powodem jest to, że właśnie czytam książki o tym, jak używać MySQL w PHP, więc zdecydowanie nie jestem na poziomie do:

  • Tworzenie ładnego interfejsu administratora do zarządzania wydarzeniami
  • Upewnij się, że wszystko jest bezpieczne (mam na myśli, że wszystkie moje wyobrażenie o bezpieczeństwie jest użycie .htaccess dla folderu administratora i spraw, aby witryna była tylko do odczytu w innym miejscu).

Z drugiej strony każdy może używać arkuszy kalkulacyjnych Google do edycji tabeli, więc w ten sposób zarówno aspekty bezpieczeństwa, jak i aspekty interfejsu użytkownika zostaną rozwiązane.

Moje pytanie brzmi, jak poleciłbyś mi to zrobić? Google Docs może zarówno publikować w Formaty XML i CSV. Czy mogę po prostu użyć fgetcsv, aby uzyskać dane? Czy możesz mi podać kilka prostych przykładów jak parsować csv, i czy byłoby to efektywne (ok, będzie mniej niż 50 odsłon dziennie), czy zrobiłbym coś takiego (przepraszam za abstrakcyjną składnię)?
$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

Więc, chociaż może nie być mądre lub skalowalne, tak, możesz to zrobić. Wypróbuj ten kod:

<?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);
}

Zasadniczo Opublikuj arkusz kalkulacyjny jako publiczny, Zmień wyjście na csv (z domyślnego HTML), ręcznie edytując adres URL (tj.fgetcsv.

Jeśli arkusz wygląda tak:

Tutaj wpisz opis obrazka

To wyświetli następujący komunikat dla danego pliku 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,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-05 13:32:53

Możesz spróbować dla Zabawy. Ale jeśli potrzebujesz tylko wspólnego kalendarza, użyj czegoś takiego jak Kalendarz Google. Interfejs API Kalendarza Google umożliwia aktualizację kalendarza z programu. Możesz również osadzić kalendarz w swojej witrynie za pomocą wbudowanego kalendarza Google Helper.

Nie tak zabawne, jak programowanie go od podstaw ... ;-)

 2
Author: Jim Ferrans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-18 04:03:08

Napisałem trochę PHP z Zend framework do czytania arkuszy kalkulacyjnych Google. Kod dostępny tutaj http://www.geekzone.co.nz/hellonearthisman/6647

 0
Author: Hellonearthis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-18 05:22:35

Sprawdź tę stronę, aby uzyskać całkiem proste podejście do korzystania z arkusza kalkulacyjnego GDocs jako CRUD DB. użycie jest zgodne z tym wzorcem, ale najpierw musisz pobrać klasę Zend i plik GDocs/PHP z Githuba...

<?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,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-07 17:43:17

Nie mam wystarczająco dużo rep, aby dodać komentarz powyżej, ale nowa metoda eksportowania arkusza do CSV działa.

Twój adres URL jako (publicznie) udostępniony z arkuszy:

https://docs.google.com/spreadsheets/d/9999999999999/edit?usp=sharing

Zmień koniec /edit?usp=sharing to /export?format=csv

Jak:

https://docs.google.com/spreadsheets/d/99999999999999/export?format=csv

Źródło: https://productforums.google.com/d/msg/docs/An-nZtjaupU/llWy4eYFywcJ

 0
Author: user2421267,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-21 23:55:24