Faire défiler l'affichage de plusieurs sites

Petit nouveau ! | 9 Messages

07 sept. 2008, 22:05

Bonsoir,

je souhaite définir dans un script un array qui contient plusieurs url à visiter.
Lorsqu'un utilisateur va sur mon script, je veux que toutes les 5 secondes la page vue soit différente.
(il faut donc un peu de JavaScript).
D'abord il voit la première page puis 5 secondes après la deuxième ... etc et puis on reviens on début.

Mon problème : je ne sais pas comment inclure les pages externes.
include ne fonctionne pas dans le cas d'url externe sur la plupart des config PHP.

Je me demande si je ne devrais pas utiliser des frames (je sais c'est mal).
Ma page aurait alors 2 frames.
Une avec le script PHP chargé du défilement
Une autre avec l'url actuellement visité.

Qu'en pensez-vous ? comment procéderiez-vous ?

Merci d'avance

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

07 sept. 2008, 22:16

T'as même pas besoin de javascript ni de php, HTML suffit. La balise suivante fait l'affaire :

Code : Tout sélectionner

<meta http-equiv="refresh" content="5; URL=page_suivante" />
Elle permet de rediriger le navigateur automatiquement après 5 secondes vers l'URL spécifiée.

Plus d'infos? ici : http://cyberzoide.developpez.com/html/meta.php3
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Petit nouveau ! | 9 Messages

08 sept. 2008, 07:17

Cette solution ne peut pas convenir pour ce que je demande...

En effet... où place-tu la balise meta.... dans la page qui est actuellement afffichée....

or je n'ai justement pas la possibilité de modifier ce code là (car il peut être sur un serveur sur lequel je n'ai pas la main)

j'ai par exemple 3 pages à visiter
http://www.server1.fr/page1.php
http://www.server2.fr/page2.php
http://www.server3.fr/page3.ph

je ne peux pas modifier page1.php, page2.php ni page3.php

dans mon script defil.php j'ai défini
$liste = array("http://www.server1.fr/page1.php",
"http://www.server2.fr/page2.php",
"http://www.server3.fr/page3.php",
);

c'est à partir de ce script que je dois faire défiler les pages...

(je sais que c'est une demande un peu tordue... mais c'est pour faire un système d'afficheur dynamique avec un grand écran et un navigateur en plein écran (mode kiosk) qui fait défiler
les informations présentes sur plusieurs sites web.)

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

08 sept. 2008, 09:21

Ok, dans ce cas effectivement il faut programmer et préférablement en javascript, regarde au niveau de la fonction setTimeOut() tu pourra créer une fonction Timer qui boucle tout les n secondes pour recharger un iframe ou un div selon une liste prédéfinies de sites à afficher.

Un peu comme ça :

Code : Tout sélectionner

function animateur() { //Traitement ici : //.... //Bouclage de la fonction animateur setTimeOut("animateur()", 1000 * 60); //=> 1 seconde * 60 = 1 mn }
A voir : http://www.pageresource.com/jscript/jtimeout.htm
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Invité
Invité n'ayant pas de compte PHPfrance

08 sept. 2008, 10:19

Merci beaucoup pour l'idée d'utiliser iframe... c'est la première fois que j'ai un tel besoin.

ça semble marcher impec...
Je donne en cadeau le code (il est probalement un peu discutable)

Code : Tout sélectionner

<?php /* Affiche différentes pages présentes dans l'array $liste Usage : http://127.0.0.1/php/affich/index.php?page=0 */ class pages { private $i; private $liste; public function __construct($liste) { $this->i=0; $this->liste=$liste; } public function __destruct() { //echo "DESTRUCT"; } /* private function set_pages($liste) { $this->liste=$liste; } */ private function set_i($i) { if ($i<=count($this->liste)-1) { $this->i=$i; } else { $this->i=0; } } private function get_next_i() { if ($this->i==count($this->liste)-1) { return 0; } else { return ($this->i+1); } } private function get_previous_i() { if ($this->i==0) { return count($this->liste)-1; } else { return ($this->i-1); } } /* public function goto_next_page() { $this->i=$this->get_next_i(); $this->show(); } public function goto_previous_page() { $this->i=$this->get_previous_i(); $this->show(); } */ private function show() { $url_next= "{$_SERVER['PHP_SELF']}?page=" . $this->get_next_i(); $url_previous= "{$_SERVER['PHP_SELF']}?page=" . $this->get_previous_i(); //echo "Show page n $this->i : {$this->liste[$this->i]}<br>\n"; $url_include = $this->liste[$this->i]; echo "<html> <head> <title>Afficheur</title> </head> <body> <script type=\"text/javascript\"><!-- setTimeout('Redirect()',4000); function Redirect() { location.href = '$url_next'; } // --></script> <!-- Show page n $this->i : {$this->liste[$this->i]}<br> --> <iframe src=\"$url_include\" height=\"100%\" width=\"100%\" frameborder=\"0\"> Alternative text for browsers that do not understand IFrames. </iframe> </body> <!-- <a href='$url_next'>Page suivante<br></a> --> <!-- <a href='$url_previous'>Page pr&eacute;c&eacute;dente<br></a> --> </html>"; } public function goto_page($i) { $this->set_i($i); $this->show(); } } $list = new pages( array( "page0.php", "page1.php", "page2.php?param1=1", "page3.php") ); $page=$_GET['page']; if (!is_numeric($page)) { $page=0; } $list->goto_page($page); ?>