IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Calendrier] Comment créer un fichier icalendar ?


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut [Calendrier] 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!

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    J'ai fini par trouver cette explication.

    Donc voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    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

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    C'est justement là que je ne comprends pas!
    Avant il n'y a rien.
    Par contre si j'enlève :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    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

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    Non il n'y avait aucune ligne avant le <?php ...

    J'ai donc essayé une autre méthode :
    premier script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  7. #7
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    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

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    ô 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...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment créer un fichier texte?
    Par Crazynoss dans le forum ASP
    Réponses: 2
    Dernier message: 08/05/2005, 19h53
  2. Réponses: 22
    Dernier message: 24/04/2005, 16h49
  3. [C#] [XML] Comment créer un fichier XML
    Par pc152 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 28/09/2004, 13h41
  4. Comment créer un fichier dummy de taille donnée ?
    Par Maitre Kanter dans le forum Langage
    Réponses: 3
    Dernier message: 13/12/2003, 23h46
  5. [] [Stratégie] Comment créer un fichier log
    Par Skeezo dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 16/09/2002, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo