Ich habe eine Seite in PHP 5 und MySQL mit einer Tabelle erstellt, die geplante Fotoshootings verfolgt. Ich möchte einen Feed dieser geplanten "Ereignisse" in eine ical-Datei ausgeben.
Ich ursprünglich hat diese Frage gestellt und bekam eine gute Antwort von S. Gehrig . Ich habe eine Beispieldatei erhalten, die regelmäßig funktioniert, und regelmäßig in Google Kalender aktualisiert, wenn ich die Datei in Dreamweaver manuell angepasst habe. Jetzt, da ich dynamisches PHP hinzugefügt habe, das aus der Datenbank zieht, wird es nicht funktionieren.
Hier ist das PHP:
%Vor%Die Ausgabe dieser Datei entspricht genau der manuellen, fest programmierten Version, mit der ich arbeite, soweit ich das beurteilen kann. Kann jemand sehen, warum das nicht funktioniert ????
PS Hier ist der Code der Datei, die funktioniert - ich habe sie gerade auf meinem Server veröffentlicht und per URL in Google Kalender abonniert. Als ich das zweite Event fest codierte, erschien es kurz darauf in Google Kalender.
%Vor%Hilfe!
Ein Kommentator schlug vor, den Test zu testen, indem ich die Header lösche und das $ ical var wiedergab. Hier sind die Ergebnisse dieses Tests, mit Zeilenumbrüchen für Ihre Bequemlichkeit hinzugefügt:
%Vor%Danke!
Dank Mohammeds Hilfe haben wir abgeleitet, dass es der eingerückte Code ist, der der ics-Datei Whitespace hinzufügt, die die Fehler verursacht hat. Der Vorschlag von M, \ n linebreaks zu verwenden, funktionierte nicht, aber das manuelle Drücken von enter, um Zeilenumbrüche zu erstellen, aber ohne die nächste Zeile einzurücken, scheint es getan zu haben. Hier ist der Code, der funktioniert:
%Vor%Für Leute, die über eine Suche stolpern, ist vielleicht nicht klar, wie das Problem gelöst wurde. Im Grunde benötigt die iCal-Spezifikation \ r \ n für Zeilenumbrüche und keine Leerzeichen am Zeilenanfang, was im Skript behoben wurde, damit es funktioniert.
Bei der Arbeit mit ical habe ich die folgenden drei Validatoren als die nützlichsten gefunden:
am einfachsten (fehlender Whitespace): Ссылка
dieser wird whitespace fangen: Ссылка
dieser wird Dinge fangen, die die anderen nicht hatten, ist aber fast zu streng: Ссылка
Auch die beste Dokumentation zu allen verschiedenen Elementen: Ссылка
Die erste Schätzung wäre, dass Ihr Array nicht korrekt ausgefüllt ist. Um es zu testen, würde ich damit beginnen,
zu entfernen %Vor%und Ändern von $ slots = Slot :: find_all (); zu
%Vor%, um sicherzustellen, dass Ihr Array von Objekten festgelegt wird.
Führen Sie es dann entweder über die Befehlszeile oder über den Browser aus, um sicherzustellen, dass es wie erwartet ausgegeben wird, bevor es an Google gesendet wird.
Probieren Sie den folgenden Code aus, um Leerzeichen zu vermeiden:
%Vor%