Précédent   Forum des professionnels en informatique > PHP > Scripts > Calendrier
Calendrier Forum d'entraide sur les scripts PHP de calendriers, agenda, etc. Avant de poster -> Calendriers en PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2008, 10h42   #1
Membre actif
 
Inscription : avril 2007
Messages : 286
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 286
Points : 192
Points : 192
Par défaut Comment créer un fichier icalendar ?

Bonjour,
je voudrai pouvoir exporter le planning créé dans mon appli sur outlook. J'ai donc trouvé la classe php icalcreator qui a l'air de s'occuper de la génération d'un fichier icalendar.
Cependant, je ne trouve pas (suffisamment) de docs (en français... j'arrive pas encore à tout saisir en anglais) donc je voulais savoir si quelqu'un avait déjà utilisé cette classe et si oui comment a-t'il fait?

Sinon, s'il y a un autre moyen que d'utiliser icalcreator, je veux bien aussi!

Merci pour votre aide et vos conseils!
__________________
" Pourquoi y a-t'il quelque chose plutôt que rien? " Leibniz
fayred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2008, 12h03   #2
Membre actif
 
Inscription : avril 2007
Messages : 286
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 286
Points : 192
Points : 192
J'ai fini par trouver cette explication.

Donc voici le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
require_once('iCalcreator-2.4/iCalcreator.class.php');
 
		$v = new vcalendar(); // create a new calendar instance
		$v->setConfig( 'unique_id', 'icaldomain.com' ); // set Your unique id
		$v->setProperty( 'method', 'PUBLISH' ); // required of some calendar software
 
		$vevent = new vevent(); // create an event calendar component
		$vevent->setProperty( 'dtstart', array( 'year'=>2008, 'month'=>1, 'day'=>1, 'hour'=>19, 'min'=>0,  'sec'=>0 ));
		$vevent->setProperty( 'dtend',  array( 'year'=>2008, 'month'=>1, 'day'=>1, 'hour'=>22, 'min'=>30, 'sec'=>0 ));
		$vevent->setProperty( 'LOCATION', 'Central Placa' ); // property name - case independent
		$vevent->setProperty( 'summary', 'PHP summit' );
		$vevent->setProperty( 'description', 'This is a description' );
		$vevent->setProperty( 'comment', 'This is a comment' );
		$vevent->setProperty( 'attendee', 'attendee1@icaldomain.net' );
		$v->setComponent ( $vevent ); // add event to calendar
 
 
//Partie problematique :
                $v->setConfig( 'essai', 'essai.ics' ); // set file name
		$v->saveCalendar(); // save calendar to file
 
 
		//recuperer le fichier :
		header( "Content-type: application/octet-stream" ) ;
		header('Content-Disposition: attachment; filename="'.$v->getConfig('essai.ics').'"');
		header('Content-Length: '.filesize($v->getConfig('essai.ics')));
		readfile($v->getConfig('essai.ics'));
Le fichier est bien créé comme il faut c'est parfait.
Le problème c'est que je n'arrive pas à le récupérer. Je voudrais soit afficher une boite de dialogue Enregistrer/ouvrir ce fichier (qui enregistrerait sur le bureau de preference) soit que ça s'enregistre directement sur le pc client.

Or voici ce que me renvoie la page :Warning: Cannot modify header information - headers already sent by (output started at C:\exporter.php:7) in

Comment faire?

Merci
__________________
" Pourquoi y a-t'il quelque chose plutôt que rien? " Leibniz
fayred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2008, 13h17   #3
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
C'est parce qu'un bout de code a déjà envoyé qqch au navigateur (certainement avec un echo ou équivalent). Il y a quoi dans ton fichier PHP avant l'extrait de code que tu indiques ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2008, 13h29   #4
Membre actif
 
Inscription : avril 2007
Messages : 286
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 286
Points : 192
Points : 192
C'est justement là que je ne comprends pas!
Avant il n'y a rien.
Par contre si j'enlève :
Code :
1
2
3
4
5
 
header( "Content-type: application/octet-stream" ) ;
		header('Content-Disposition: attachment; filename="'.$v->getConfig('essai.ics').'"');
		header('Content-Length: '.filesize($v->getConfig('essai.ics')));
		readfile($v->getConfig('essai.ics'));
ça marche bien (le fichier est créé sur le serveur...) sauf que du coup je ne peux plus le récupérer...

EDIT : En fait je viens de me rendre compte qu'il fait une erreur sur la ligne <?php

Merci pour ton aide
__________________
" Pourquoi y a-t'il quelque chose plutôt que rien? " Leibniz
fayred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2008, 14h45   #5
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
S'il n'y a rien avant, il vaut mieux quand même supprimer les sauts de lignes vides. Ta première ligne du fichier doit être <?php.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2008, 15h07   #6
Membre actif
 
Inscription : avril 2007
Messages : 286
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 286
Points : 192
Points : 192
Non il n'y avait aucune ligne avant le <?php ...

J'ai donc essayé une autre méthode :
premier script :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
require_once('iCalcreator-2.4/iCalcreator.class.php');
 
function creerCal()
{
		$v = new vcalendar(); // create a new calendar instance
		$v->setConfig( 'unique_id', 'icaldomain.com' ); // set Your unique id
		$v->setProperty( 'method', 'PUBLISH' ); // required of some calendar software
 
		$vevent = new vevent(); // create an event calendar component
		$vevent->setProperty( 'dtstart', array( 'year'=>2008, 'month'=>1, 'day'=>1, 'hour'=>19, 'min'=>0,  'sec'=>0 ));
		$vevent->setProperty( 'dtend',  array( 'year'=>2008, 'month'=>1, 'day'=>1, 'hour'=>22, 'min'=>30, 'sec'=>0 ));
		$vevent->setProperty( 'LOCATION', 'Central Placa' ); // property name - case independent
		$vevent->setProperty( 'summary', 'PHP summit' );
		$vevent->setProperty( 'description', 'This is a description' );
		$vevent->setProperty( 'comment', 'This is a comment' );
		$vevent->setProperty( 'attendee', 'attendee1@icaldomain.net' );
		$v->setComponent ( $vevent ); // add event to calendar
 
 
		//$v->returnCalendar(); // redirect calendar file to browser
		//$v->setConfig( '', 'depot' ); // set directory
		$v->setConfig( 'essai', 'essai.ics' ); // set file name
		$v->saveCalendar(); // save calendar to file
		return($v);
}
		$v=creerCal();
		//recuperer le fichier :
		echo '<a href="envoi.php?file='.$v->getConfig('essai.ics').'"> Telecharger mon planning </a>'; 
?>
et mon deuxième fichier envoi.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
 <?php
 $file=$_GET['file'];
 
                header("Content-Description: File Transfer");
		header( "Content-type: application/force-download" ) ;
		header('Content-Disposition: attachment; filename="'.$file.'"');
 
		readfile($file);
		exit();
?>
Il me fait une erreur à la ligne 1 ...

C'est peut-etre une erreur bien particulière aux fichier de ce type?

Merci pour ton aide en tout cas
__________________
" Pourquoi y a-t'il quelque chose plutôt que rien? " Leibniz
fayred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2008, 16h47   #7
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
Non, l'erreur n'a rien à voir avec le type de fichier que tu veux envoyer. C'est un pur pb de PHP, là. Ceci dit, je ne vois pas ce qui cloche C'est d'autant plus bizarre que quand je fais le test (http://localhost/envoi.php?file=envoi.php avec envoi.php contenant exactement le code que tu donnes), j'ai un pop-up qui me demande si je veux télécharger le fichier et je récupères bien mon fichier envoi.php quand je sauvegarde...
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2008, 08h55   #8
Membre actif
 
Inscription : avril 2007
Messages : 286
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 286
Points : 192
Points : 192
ô Joie et Bonheur!
J'ai fini par trouver (grace à ce thread).
C'était un problème d'encodage : avec UTF8 sans BOM ça marche (j'avoue ne pas trop savoir quels sont les différences... mais bon )

Merci pour ton aide!

En tout cas, vraiment bizarre comme erreur...
__________________
" Pourquoi y a-t'il quelque chose plutôt que rien? " Leibniz
fayred est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h33.


 
 
 
 
Partenaires

Hébergement Web