Page 1 sur 1

Afficher des diaporamas avec des temporisations

Posté : 26 juil. 2012, 16:50
par Criss33
Salut à tous,

Débutant en PHP, j'aurais besoin de votre aide pour finir une ptite appli...

A partir de données situées sur un fichier texte, je souhaiterais afficher depuis une page en PHP plusieurs diaporamas (PPS) à la suite grâce à des temporisations (Header par exemple).

Mon fichier texte contient donc :
- les adresses des power point (PPS),
- le nombre de diapositives de chaque PPS (pour calculer ensuite les tempos).

Genre, donnees.txt :

Code : Tout sélectionner

5 diaporama1.pps 4 diaporama2.pps 3 Suite.php
Mon fichier PHP me sert donc à aller lire les infos sur les lignes souhaitées du .TXT, de calculer les temporisations de lancement de diapos...
Mon séquencement serait par exemple :
1_Afficher diapo 1
2_Afficher diapo 2
3_Redirection vers une autre page .php

Voici le code, qui ne fonctionne pas correctement bien évidemment... :
********************************************************************************************
<head>
<?php
/*Ouvre le fichier et retourne un tableau contenant une ligne par élément*/
$lines = file('donnees.txt');
/*On parcourt le tableau $lines et on affiche le contenu des lignes choisies*/
$resultat = $lines[0];
$resultat1 = $resultat+ ($lines[2] * 10);// Calcul des tempos
$resultat2 = $resultat1 + ($lines[4] * 10);
echo 'Diapo 1 : Lancement dans  '.$resultat.' secondes <br />';
echo 'Diapo 2 : Lancement dans  '.$resultat1.' secondes <br />';
echo 'Redirection dans :  '.$resultat2.'secondes <br />';
?>
</head>

<body>
<?php 
header ("Refresh: $resultat ;URL= $lines[1] ");     // Lancement diapos1
header ("Refresh: $resultat1 ;URL= $lines[3] ");   // Lancement diapos2
header ("Refresh: $resultat2 ;URL= $lines[5] ");  // Redirection vers suite.php après un délai de 75 secondes
?>
</body>
*************************************************************************************

Seulement les "header" ne s'enchaine pas ! Il va juste m'ouvrir la redirection au bout de 75 secondes... mon séquencement n'est pas respecter.
Auriez vous une solution ou une belle piste pour que j'avance... SVP?

Avant je passait par du Javascript :
****************************************************************
[javascript]
<Script language="JavaScript">

setTimeout("document.location = 'diapos1.pps' ", 5000)

</script>
[/javascript]
****************************************************************

Seulement du PHP dans du Javascript... A l'aide ! ^^

PS: cette appli ne sera pas mise en ligne. C perso... Travaille sur Wamp.

Re: Afficher des diaporamas avec des temporisations

Posté : 26 juil. 2012, 17:25
par xTG
PHP = côté serveur, donc quand la page s'affiche PHP a déjà fini. ;)
De plus PHP ne fait que générer du texte.
Donc tu peux faire ceci :
setTimeout("document.location = '<?php echo $diapos; ?>' ", 5000)

Re: Afficher des diaporamas avec des temporisations

Posté : 26 juil. 2012, 17:58
par Criss33
Merci de ta réponse si rapide!^^

Peut être qu'il ne fait que générer du texte... mais dans mon cas, si tu mets qu'une seule ligne "Header" avec un lien vers un diapo, il m'ouvre mon diaporama.

Déjà testé ce code : <?php echo $diapos; ?>... il ne le prend pas. La page reste inerte...
Je dis pas que c'est faux, autant il me manque une étape. Peut être qu'il faut convertir une variable PHP en une variable JS pour ensuite l'introduire dans le SetTimeout... :shock: J'ai dit une connerie ?

Re: Afficher des diaporamas avec des temporisations

Posté : 26 juil. 2012, 19:24
par moogli
salut,

- les echo dans la balise head, je ne comprend pas, cette balise sert à la description d'un document html (le titre, les feuilles css, les fichiers JS etc).
- L'affichage d'un document, quel qu’il soit, sera en fonction tu navigateur donc la y a des chances qu'il te propose de la télécharger ;)
- un location.hfref te renvoi vers un autre document (un pps en l'occurence) donc je ne vois pas trop comment il serait possible pour le pps de passer au suivant (mais la je connais que peu power point).
- une solution serait plutôt une liseuse powerpoint en flash (si cela existe ?) ou javascript, peux être, qui te permettra de réaliser ce que tu souhaite faire, qui se passe coté client (donc dans ton navigateur) et non coté server (php).

pour ton fichier texte je te conseil plutot l'utilisation du format csv ou xml, la structure de ton fichier et pas tip top :)
- pour csv, par exemple avec le ; en sépareteur une ligne donne => nomfichier;nombre
- en xml
<fichiers>
<diaporama>
<nomfichier>le nom du fichier</nomfichier>
<nbdiapo>le nom du fichier</nbdiapo>
</diaporama>

<diaporama>
<nomfichier>le nom du fichier</nomfichier>
<nbdiapo>le nom du fichier</nbdiapo>
</diaporama>
</fichier>

@+

Re: Afficher des diaporamas avec des temporisations

Posté : 26 juil. 2012, 22:35
par xTG
Ou bien autre solution que la liseuse, mais faut l'avouer en super moche...
Une frame, avec la page mère qui possède son script timeout qui change l'url cible de la frame toutes les X secondes.

Re: Afficher des diaporamas avec des temporisations

Posté : 27 juil. 2012, 10:47
par Criss
salut,

- les echo dans la balise head, je ne comprend pas, cette balise sert à la description d'un document html (le titre, les feuilles css, les fichiers JS etc).
Il est vrai que je ne respecte pas grand chose dans mes bouts de programme... tu t'imagines bien que je remettrai ma syntaxe au propre si j'arrive à faire ce que je souhaite. Ce sont juste des premiers essais... En attendant merci pour le rappel sur le HTML. :wink:

- L'affichage d'un document, quel qu’il soit, sera en fonction tu navigateur donc la y a des chances qu'il te propose de la télécharger ;)
- un location.hfref te renvoi vers un autre document (un pps en l'occurence) donc je ne vois pas trop comment il serait possible pour le pps de passer au suivant (mais la je connais que peu power point).
- une solution serait plutôt une liseuse powerpoint en flash (si cela existe ?) ou javascript, peux être, qui te permettra de réaliser ce que tu souhaite faire, qui se passe coté client (donc dans ton navigateur) et non coté server (php).
J'ai configuré M.Fox de manière à afficher directement un PPS avec une ouverture directe en plein écran, sans qu'il me pose la question à chaque fois. Un PPS peut se fermer automatiquement. Du coup il revient directement sur ma page web... Avec plusieurs SetTimeout, tu peux donc enchainer plusieurs ouvertures de power point à la suite... Il te suffit de calculer les temps de diffusion de chacun pour un déclenchement optimisé.
Il faut que je me renseigne donc pour cette liseuse de PPS... si elle crée un affichage en plein écran alors ça m'ira. A voir... :)

pour ton fichier texte je te conseil plutot l'utilisation du format csv ou xml, la structure de ton fichier et pas tip top :)
- pour csv, par exemple avec le ; en sépareteur une ligne donne => nomfichier;nombre
- en xml
<fichiers>
<diaporama>
<nomfichier>le nom du fichier</nomfichier>
<nbdiapo>le nom du fichier</nbdiapo>
</diaporama>

<diaporama>
<nomfichier>le nom du fichier</nomfichier>
<nbdiapo>le nom du fichier</nbdiapo>
</diaporama>
</fichier>
@+

L'idée du XML a l'air pas mal du tout... Si je peux les rappeler dans le Settimeout, ce sera vraiment bien. Il faut donc que je me forme !
Une question avant tout... Si je m’embête aujourd'hui avec le PHP, c' est que je souhaite modifier mon fichier .TXT à l'aide de formulaire afin de pouvoir configurer mon affichage de diaporama pour éviter d'éditer mes pages web. Peut on modifier un fichier XML à l'aide de formulaire PHP ???
Ou avez vous une autre solution ? :|

Ou bien autre solution que la liseuse, mais faut l'avouer en super moche...
Une frame, avec la page mère qui possède son script timeout qui change l'url cible de la frame toutes les X secondes.

Décidément on a les mêmes idées... mais comme tu dis c'est vraiment moche MAIS fonctionnelle.
Mais bon... j'ai envi de faire quelque chose de propre. :)

Re: Afficher des diaporamas avec des temporisations

Posté : 27 juil. 2012, 13:17
par moogli
Ok, pour l'affichage, tu a réglé en lisant l'utilisant d 'un navigateur cible ;)

Tu peux heureusement modifier du xml, avec simplexml, ou dom.


@+