Accueil > Forum > > > > DIAPORAMA ALÉATOIRE AVEC TIMER
DIAPORAMA ALÉATOIRE AVEC TIMER
samedi 10 octobre 2009 à 21:50:02 |
DIAPORAMA ALÉATOIRE AVEC TIMER

seufseuf
|
Bonjour à tous,
Je viens de terminer mon site en php (www.sophiedemay.com) et il y a beaucoup de connaissances qui me manquent encore.
Je cherche à faire un diaporama aléatoire, qui changerait d'image toutes les 5 secondes.
Je me suis basée sur le code que j'ai mis en place pour ma page d'accueil (image qui change à chaque chargement de la page).
Mais je ne sais pas comment intégrer la fonction "timer" dans mon code.
Est-ce que quelqu'un aurait une idée?
Merci beaucoup,
A bientôt,
Sophie
------------------------------------------
Ci-après, le code que jai écrit et qui marche, mais sans le timer (je dois recharger la page pour que l'image change):
<?php
/* RECUPERE LA LISTE DES IMAGES ALEATOIRES : /imgs/aleatoire*/
$files = array();
$dir = opendir("imgs/process/");
while(($file = readdir($dir)) !== false)
{
if($file !== '.' && $file !== '..' && !is_dir($file) && $file !=='.DS_Store' && $file !=='.BridgeSort' && $file !=='_notes')
{
$files[] = $file;
//break;
}
}
closedir($dir);
shuffle($files);
/* Affiche la liste des fichiers */
echo
"<table width=\"400\" border=\"0\">".
" <tr>".
" <td align=\"center\">".
"<img src=\"imgs/process/".$files[0]."\" border=\"0\"></a><br>".
"</td>".
"</tr>".
"</table>";
?>
|
|
samedi 10 octobre 2009 à 22:44:00 |
Re : DIAPORAMA ALÉATOIRE AVEC TIMER

neigedhiver
|
Salut,
Tu vas devoir utiliser du Javascript, si tu veux que l'image soit changée à intervalles réguliers sans recharger la page entière.
Tu peux jeter un oeil ici : http://www.phpcs.com/forum/sujet-COMMENT-FAIRE-GALERIE-IMAGE_1364445.aspx où j'explique comment recharger une partie de la page avec des liens. Dans ton cas, l'idée sera quasiment la même sauf qu'il faut utiliser un timer pour déclencher l'évènement plutôt qu'un click sur un lien.
La requête SQL a exécuter pour récupérer une image aléatoire sera du genre :
SELECT image_url, image_alt, image_title FROM images ORDER BY RAND() LIMIT 1;
--
Neige
N'hésitez pas à lire la doc
|
|
samedi 10 octobre 2009 à 22:51:01 |
Re : DIAPORAMA ALÉATOIRE AVEC TIMER

seufseuf
|
Salut Neige,
Merci pour ta réponse rapide...
Bon, ton explication est trèèèèèès compliquée, et je ne suis pas sûre d'avoir bien compris!!!
J'avais moi même essayé de mettre du javascript dans mon code.
Quelque chose comme :
<script type="text/javascript">
function changefond() {
setTimeout("changeimg();",1000);
}
Ne penses-tu pas qu'il y ait un moyen plus simple (pour mes pauvres compétences) de faire cela ?
Merci encore,
Sophie
|
|
samedi 10 octobre 2009 à 23:14:36 |
Re : DIAPORAMA ALÉATOIRE AVEC TIMER

neigedhiver
|
Arf, mes explications sont compliquées :'( Ca veut dire que je suis pas prêt pour être formateur.
Bon, reprenons...
Rien de sorcier, tu vas voir...
La difficulté vient du fait que PHP est exécuté sur le serveur et ne peut donc pas être exécuté à nouveau tant qu'une requête ne lui est pas à nouveau adressée. Ceci associé au fait que Javascript, qui pourrait tout à fait changer une image sur la page, n'est pas en mesure de savoir quelles sont les images sur le serveur, puisqu'il est exécuté chez le client.
AJAX permet de combiner les deux.
Il faut un script JS qui interroge le serveur (un script PHP) pour :
- soit savoir quelles sont les images disponibles (ce n'est pas recommandé)
- soit qu'on lui dise quelle image affichée
Le script PHP peut, pour que cela fonctionne, renvoyer deux informations, au choix, selon ta préférence :
- une url d'image qui va bien
- le code complet d'une balise HTML à afficher
L'avantage du code html complet de la balise <img> c'est que tu peux contrôler plus facilement les informations à y mettre (url, alt, height, width, etc)
Il te faut donc un script PHP indépendant dont le seul et unique rôle sera de renvoyer le code d'une balise <img> complète, d'après une image tirée au hasard de ta base de données.
Je vais faire plusieurs suppositions :
- on utilise jQuery ^^ (non, j'ai pas d'actions, mais je suis complètement fan)
- le script PHP se trouve à la racine du site et s'appelle random_image.php
- la balise <img> se trouve TOUTE SEULE dans un div que l'on appelle random-image : <div id="random-image"><img ....../></div>
A partir de là, un petit script JS avec jQuery qui changerait l'image dans ce div en appelant random_image.php toutes les 10 secondes ressemblerait à ça :
<script type="text/javascript">
setInterval(function() {
$("#random-image").load('/random_image.php');
}, 10000);
</script>
setTimeout() déclenche une action unique après un certain délai, alors que setInterval() répète une action à l'intervalle spécifié.
J'ai essayé de faire plus clair... Ai-je réussi ?
--
Neige
N'hésitez pas à lire la doc
|
|
samedi 10 octobre 2009 à 23:55:00 |
Re : DIAPORAMA ALÉATOIRE AVEC TIMER

seufseuf
|
Neige,
C'est déjà bien plus clair ^^
Merci!!!! C'est vraiment gentil, du coup, je penche pour le super bon côté du formateur!
Alors, j'ai retravaillé mon code, selon tes instructions (si j'ai bien compris!):
1) J'ai ajouté ton script à mon code:
<script type="text/javascript">
setInterval(function() {
$("#random-image").load('/random_image.php');
}, 10000);
</script>
2) J'ai crée un nouveau doc "random_image.php" dans lequel je mets un script php qui donne l'adresse de l'url (je n'ai pas besoin d'infos pour mes images):
<?php
$param = parse_url($HTTP_REFERER);
$Scheme = $param["http"];
$Host = $param["www.sophiedemay.com"];
$Path = $param["imgs/process"];
?>
3) Ca ne marche pas ^^
Le code ne doit pas être le bon, puisque l'url est toujours la même, comme les pages se rechargent...

|
|
samedi 10 octobre 2009 à 23:59:00 |
Re : DIAPORAMA ALÉATOIRE AVEC TIMER

seufseuf
|
Je crois que je veux faire un truc trop compliqué pour la nulle que je suis oO
|
|
dimanche 11 octobre 2009 à 00:12:55 |
Re : DIAPORAMA ALÉATOIRE AVEC TIMER

neigedhiver
|
Mais non mais non, c'est pas compliqué, et t'es pas nulle (enfin j'en sais rien, mais je suis sûr que non, y'a pas de raison après tout)
Hum... J'ai oublié de préciser (c'est mon côté tête en l'air) qu'il faut télécharger jQuery, le mettre sur le serveur et l'inclure dans la page...
C'est là : [ Lien ]
Pour l'inclure, comme indiqué dans la doc de jQuery :
Code HTML : <script type="text/javacript" src="/path/to/jquery-1.3.2.min.js"></script>
Concernant ton script random_image.php, je ne comprends pas ce qu'il fait... Enfin si, je vois à peu près, mais justement, il ne va rien faire du tout s'il ne fait que ça... Il faut qu'il envoie du texte au navigateur, donc avec la fonction echo() (par exemple).
Je partais du principe que tu as une base de données dans laquelle tu stockes tes images. Est-ce que c'est le cas, ou pas ?
Si oui, alors il faut :
- se connecter à la base de données
- exécuter une requête du genre de celle que j'ai donnée plus haut (pour mémoire : SELECT image_path FROM images ORDER BY RAND() LIMIT 1;)
- "écrire" la balise image qui va bien avec l'information récupérée : echo '<img src="'.$image_path.'" alt="Photo aléatoire" />';
Si non, il est préférable que tes photos soient dans un répertoire, seules avec personnes d'autre (elles ont leur caractère...). Dans ce cas, un truc dans le genre devrait faire l'affaire :
Code PHP : <?php
# ici, c'est le chemin du répertoire sur le serveur
$images = glob('/path/to/images/');
$random_image = array_rand($images);
# là, c'est le chemin depuis la racine du site, pas du serveur
echo '<img src="/path/to/images/web/'.$random_image.'" alt="photo aléatoire" />';
?>
Est-ce que j'améliore la clarté du bazar ?
--
Neige
N'hésitez pas à lire la doc
|
|
lundi 12 octobre 2009 à 01:58:31 |
Re : DIAPORAMA ALÉATOIRE AVEC TIMER

seufseuf
|
Neige,
Merci tellement pour tes infos!
Oui, oui, j'ai bien mis mes images dans un dossier seul, que la base de donnée ou le script php vont chercher!
Et j'ai déjà Jquery dans mes fichiers "sources" de mon site.
Mais si mon site est déjà connecté à ma base de données, est-ce que j'ai encore besoin de me reconnecter ?
Donc je récapitule :
Dans ma page, je mets:
<script type="text/javacript" src="/path/to/jquery-1.3.2.min.js"></script>
setInterval(function() {
$("#random-image").load('/random_image.php');
}, 10000);
</script>
Et:
<?php
$images = glob('/path/to/images/');
$random_image = array_rand($images);
echo '<img src="/path/to/images/web/'.$random_image.'" alt="photo aléatoire" />';
?>
Puis dans mon fichier random_image.php :
#Je me connecte à la base de données:
<?php
include 'global/initialisation.php';
include 'global/ouverture.php';
$self = $_SERVER['PHP_SELF'];
#J'exécute la requête et je donne la balise image:
SELECT image_url, image_alt, image_title FROM images ORDER BY RAND() LIMIT 1;
echo '<img src="'.$image_path.'" alt="Photo aléatoire" />';
?>
J'ai du oublier quelque chose, hein, parce que forcément ca ne marche pas, ca aurait été trop beau...
En tous cas, merci pour le temps que tu me consacres!!!
De nos jours, la générosité non-intéressée est difficile à trouver...
Sophie
|
|
lundi 12 octobre 2009 à 02:29:17 |
Re : DIAPORAMA ALÉATOIRE AVEC TIMER

neigedhiver
|
Hum... Bon. Reprenons.
Dans les bouts de code que tu montres, y'a quelques trucs qui m'interpellent... Je ne sais pas si c'est parce que tu ne veux pas mettre sur le forum certaines infos ou si c'est un oubli de ta part...
Par exemple, tu me dis que tu as mis :
Code HTML : <script type="text/javacript" src="/path/to/jquery-1.3.2.min.js"></script>
J'espère que tu n'as pas oublié de remplacer /path/to/ par le chemin du répertoire où se trouve jquery...
De même pour glob('/path/to/images')... ?
Concernant la requête :
Code PHP : #j'exécute la requête et je donne la balise image:
select image_url, image_alt, image_title from images order by rand() limit 1;
euh... tu l'as laissée comme ça dans le code, ou bien tu l'as exécutée avec mysql_query() (ou équivalent) ?
Pour être sûr, est-ce que tu pourrais faire un vrai copier/coller des fichiers (seulement ce qui nous intéresse là), si possible en utilisant la balise de mise en forme du code ?
Pour ce qui est du temps que je te consacre, attends de recevoir ma facture... ^^ (mouarf la blague à deux balles ! désolé, je résiste jamais à l'envie faire des blagues super pourries que personne d'autre ne ferait sinon)
--
Neige
N'hésitez pas à lire la doc
|
|
lundi 12 octobre 2009 à 02:47:29 |
Re : DIAPORAMA ALÉATOIRE AVEC TIMER

seufseuf
|
Ahah!
;-)
Oui, bien sûr que j'ai remplacé les chemins!!!!!
Alors, pour ma page diaporama, j'ai mis:
<body>
Code PHP :
<script type="text/javacript" src="/global/jquery-1.2.6.min.js">
setinterval(function() {
$("#random-image").load('/random_image.php');
}, 10000);
</script>
<?php
$images = glob('/imgs/process');
$random_image = array_rand($images);
echo '<img src="/imgs/process'.$random_image.'" alt="photo aléatoire" />';
?>
</body>
Par contre, pour random_image.php, je crois que j'ai fait n'importe quoi
Code PHP :
<body>
<?php
#je me connecte à la base de données:
include 'global/initialisation.php';
include 'global/ouverture.php';
$self = $_server['php_self'];
#j'exécute la requête et je donne la balise image:
select image_url, image_alt, image_title from images order by rand() limit 1;
echo '<img src="'.$image_path.'" alt="photo aléatoire" />';
?>
</body>
euh... tu l'as laissée comme ça dans le code, ou bien tu l'as exécutée avec mysql_query() (ou équivalent) ?
Je crois bien que je l'ai laissé comme ça, car j'ai pas tout compris...
THX again  (mais je me répète)
|
|
Cette discussion est classée dans : timer, page, code, image, diaporama
Répondre à ce message
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|