11 Stimmen

Google Docs als Datenbank verwenden?

Ich möchte eine sehr einfache PHP-Seite für eine Website erstellen, die einen Zeitplan / Kalender wie Daten zeigen würde, wo jeder Slot entweder frei oder würde einige Termine in ihm haben.

Da alle Daten eigentlich nur eine Tabelle sind, so etwas wie {Monat, Tag, Stunde, Gesprächsname, Gesprächsbeschreibung}, dachte ich, warum nicht ein Google Docs Spreadsheet als Datenbank verwenden. OK, der Hauptgrund ist, dass ich gerade Bücher darüber lese, wie man MySQL in PHP verwendet, also bin ich definitiv nicht auf dem gleichen Stand wie sie:

  • eine ansprechende Verwaltungsoberfläche für die Verwaltung der Veranstaltungen schaffen
  • das Ganze sicher zu machen (ich meine, meine Vorstellung von Sicherheit ist es, .htaccess für einen Admin-Ordner zu verwenden und die Site ansonsten schreibgeschützt zu machen).

Andererseits könnte jeder Google Spreadsheets für die Bearbeitung der Tabelle verwenden, so dass sowohl die Sicherheitsaspekte als auch die UI-Aspekte gelöst wären.

Meine Frage ist, wie würden Sie mir empfehlen, das zu tun? Google Docs kann sowohl im XML- als auch im CSV-Format veröffentlichen. Kann ich einfach fgetcsv verwenden, um die Daten zu erhalten? Können Sie mir ein paar einfache Beispiele geben, wie ich die CSV analysieren kann, und ob es effizient wäre (ok, es werden weniger als 50 Aufrufe pro Tag sein), wenn ich so etwas machen würde (entschuldigen Sie die abstrakte Syntax)?

$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
  }
}

23voto

Yahel Punkte 36453

Auch wenn es vielleicht nicht klug oder skalierbar ist, können Sie es tun. Versuchen Sie diesen Code:

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

Veröffentlichen Sie die Tabelle als öffentlich, ändern Sie die Ausgabe in csv (vom Standard-HTML), indem Sie die URL manuell bearbeiten (z. B, output=csv ), holt sie und durchläuft sie dann Zeile für Zeile mit fgetcsv .

Wenn die Tabelle wie folgt aussieht:

enter image description here

Für die betreffende csv-Datei wird dann Folgendes ausgegeben:

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"
}

2voto

Jim Ferrans Punkte 29952

Probieren Sie es doch einfach mal aus. Aber wenn Sie nur einen gemeinsamen Kalender brauchen, verwenden Sie etwas wie Google Calendar. Die Google Kalender API ermöglicht es Ihnen, Ihren Kalender aus einem Programm heraus zu aktualisieren. Und mit dem Google Embeddable Calendar Helper können Sie einen Kalender in Ihre Website einbetten.

Allerdings macht es nicht so viel Spaß, wie es von Grund auf zu programmieren ... ;-)

0voto

Hellonearthis Punkte 1586

Ich habe etwas PHP mit dem Zend-Framework geschrieben, um Google-Tabellen zu lesen. Code hier verfügbar http://www.geekzone.co.nz/hellonearthisman/6647

0voto

Alex Gray Punkte 15268

Auf dieser Seite finden Sie einen ziemlich einfachen Ansatz zur Verwendung eines GDocs-Arbeitsblatts als CRUD-DB. Die Verwendung folgt diesem Muster, aber Sie müssen zuerst eine Zend-Klasse und eine GDocs/PHP-Datei von Github herunterladen...

<?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";
?>

0voto

user2421267 Punkte 81

Ich habe nicht genug Erfahrung, um einen Kommentar abzugeben, aber die neue Methode, ein Blatt in CSV zu exportieren, funktioniert.

Ihre Url als (öffentlich) freigegebene von Blättern:

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

Ändern Sie das Ende /edit?usp=sharing to /export?format=csv

Wie:

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

Source : https://productforums.google.com/d/msg/docs/An-nZtjaupU/llWy4eYFywcJ

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X