kiki67100
Messages postés313Date d'inscriptionsamedi 6 mai 2006StatutMembreDernière intervention10 août 2013
-
12 mars 2007 à 12:31
phx1988
Messages postés1Date d'inscriptionvendredi 21 septembre 2007StatutMembreDernière intervention12 mars 2011
-
12 mars 2011 à 23:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
phx1988
Messages postés1Date d'inscriptionvendredi 21 septembre 2007StatutMembreDernière intervention12 mars 2011 12 mars 2011 à 23:42
ton code ne marche pas:
Warning: opendir(22) [function.opendir]: failed to open dir: No error in D:\wamp\www\prd.php on line 60
22 NON TROUVE 22 vide
Oumbra
Messages postés23Date d'inscriptionlundi 18 janvier 2010StatutMembreDernière intervention14 mars 201034 18 janv. 2010 à 22:59
Bonsoir,
J'ai apprécié ton tuto et m'en suis inspiré, seulement un petit détail me gène.
En fait j'ai rajouté plusieurs zone d'affichage pour pouvoir visualiser plusieurs images en même temps comme ceci :([] représente les images et le chiffre le numéro de l'image dans le répertoire)
[1][2][3][4][5]
[0]
[6][7][8][9][10]
l'image centrale possède une taille supérieur bien évidement :).
Donc mon problème est le suivant :
Lorsque je clique sur mon bouton suivant toutes mes images s'avancent (ce que je désire) mais le hic c'est que lorsque quand le répertoire ne compte que 10 ou x images, les blocs possédant des images et dont le chiffre n'est égale a aucune image dans le répertoire, m'affichent un icon tout moche (celui pour le image mal informée etc...)
Mon idée était donc je dire quand le 10ème bloc est égal à null y mettre l'image 0 et le hic se fait voir ici :( celà ne fonctionne pas :(....
voici l'extrait de mon code :
<?php
error_reporting(E_ALL &~E_NOTICE);
$b_diapo = false; // à priori, je n'ai pas de diapo (Pessimiste ?)
$texte = ''; // futur contenu du html
$filtre = '\.(jpg|gif|png)'; // régex d'identification des extensions de diapo
$dir = 'photos'; //répertoire des photos
$nr = 0;
if ( (isset($_GET['nr'])) )
{
$nr = $_GET['nr'];
}
$handle = opendir($dir);while (false !($file readdir($handle)))
{
if (preg_match('/'.$filtre.'/s',strtolower($file)))
{
$diapos[] = $file; // élément 0 du tableau puis suivants ;
}
}
closedir($handle);
// 2. Si j'ai des diapos
if (isset($diapos[0]))
{
$max = count($diapos); // nombre de diapo trouvées
if (!($nr<$max))
{ // au cas ou on m'a oté des diapos entre-temps, je réduit le N°
$nr = $max-1;
}
//On initialise des variables pour un test
$valide = true ;
$num = 0 ;
$ecart = 0 ;
//tant que la variables $valide est égale à vrai faire
while ($valide == true)
{
$num = $num + 1 ; //On incrémente un compteur
if (($diapos[0+$num] == null) and ($num <= 9))// Si la diapo n'est égale à rien et que $num est inférieur ou égal à 9 alors
{
$valide = false ;
$ecart = 9 - $num ;
}
if ($num == 10)//Si la variable $num est égale à 10 alors
{
$valide = false ;
}
}
if ($ecart > 0)
{
$c = 0 ;
while ($num <= 9)
{
$diapos[$num] = $diapos[$nr+$c] ;
$num = $num + 1 ;
$c = $c + 1 ;
}
}
// 3. On affiche les diapos
$texte .= '
<center></center>,
<center></center>,
<center></center>,
<center></center>,
<center></center>
Dans mon HTML j'affiche avec un echo $texte;
Bien sur ce code fonctionne mais j'avoue que c'est assez laid le fait que mon diaporama ne forme pas une boucle infini :/
HELPPPPPP =>>>> please :)
homere57
Messages postés1Date d'inscriptionsamedi 25 juillet 2009StatutMembreDernière intervention 4 août 2009 4 août 2009 à 19:49
bonjour modifier cette partie pour par exemple lancer le script à partir d'une autre page en cliquant sur une vignette.
<?php
// diaporama.php
pt montre comment faire un diaporama en PHP
On n'affiche successivement toute les diapo d'un répertoire et on revient
à la première quand on a terminer ou on fait l'inverse.
Normalement si on rajoute ou enlève des diapos entre deux clics on met
de l'incertitude temporaire dans la chronologie mais l'algorithme ne plante pas.
Chaque appel doit fournir le répertoire et un n° de diapo
dans la chaîne de requête suivant l'url
On utilise la methode GET car on utilise des envoi par le menu.
Deux utilisations réalistes pour lancer ce script:
a) Un menu passe l'url du script et le n° de diapo 0 (zéro)
b) Dans une série de vignettes, le clic sur l'une d'elles
passe l'url du script et le n° de la vignette
*/
error_reporting(E_ALL &~E_NOTICE); // EasyPhp n'affiche pas les notices
// Initialisations
$b_diapo = false; // à priori, je n'ai pas de diapo (Pessimiste ?)
$texte = ''; // futur contenu du html
$filtre = '\.(jpg|gif|png|jpeg)'; // régex d'identification des extensions de diapo
$hauteur = '450'; // hauteur d'affichage des diapo en pixels
$dir=$_GET['valeur_id']; // valeur du lien provenant d'une autre page
if ( (isset($_GET['dir'])) && (isset($_GET['nr'])) ) {
$dir= $_GET['dir'];
$nr = $_GET['nr'];
$b_diapo = true;
}
?>
<!>
<! on recupere le nom du repertoire >
"/>
<?
a+
BurN3D
Messages postés1Date d'inscriptionsamedi 16 mai 2009StatutMembreDernière intervention16 mai 2009 16 mai 2009 à 03:50
Comment faire pour ne pas avoir a choisir le repertoire et juste le predefinir, de plus si possible ajouter un timer entre chaque photo pour faire un style de slideshow ? ... Desoler je suis debutant et jessaie dapprendre merci d'avance.
Rudy3212
Messages postés154Date d'inscriptionvendredi 20 août 2004StatutMembreDernière intervention31 décembre 2007 31 mars 2007 à 22:56
L'idée est bonne
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 12 mars 2007 à 22:09
Salut !
Ce n'est pas $_SERVER[PHP_SELF] mais $_SERVER['PHP_SELF']. De plus, il faut sécuriser cette variable en lui appliquant un htmlspecialchars() pour la protéger contre l'injection de code HTML malicieux...
++
kiki67100
Messages postés313Date d'inscriptionsamedi 6 mai 2006StatutMembreDernière intervention10 août 20131 12 mars 2007 à 12:31
Vraiment bien comme source pour un debutant comme moi merci
12 mars 2011 à 23:42
Warning: opendir(22) [function.opendir]: failed to open dir: No error in D:\wamp\www\prd.php on line 60
22 NON TROUVE 22 vide
18 janv. 2010 à 22:59
J'ai apprécié ton tuto et m'en suis inspiré, seulement un petit détail me gène.
En fait j'ai rajouté plusieurs zone d'affichage pour pouvoir visualiser plusieurs images en même temps comme ceci :([] représente les images et le chiffre le numéro de l'image dans le répertoire)
[1][2][3][4][5]
[0]
[6][7][8][9][10]
l'image centrale possède une taille supérieur bien évidement :).
Donc mon problème est le suivant :
Lorsque je clique sur mon bouton suivant toutes mes images s'avancent (ce que je désire) mais le hic c'est que lorsque quand le répertoire ne compte que 10 ou x images, les blocs possédant des images et dont le chiffre n'est égale a aucune image dans le répertoire, m'affichent un icon tout moche (celui pour le image mal informée etc...)
Mon idée était donc je dire quand le 10ème bloc est égal à null y mettre l'image 0 et le hic se fait voir ici :( celà ne fonctionne pas :(....
voici l'extrait de mon code :
<?php
error_reporting(E_ALL &~E_NOTICE);
$b_diapo = false; // à priori, je n'ai pas de diapo (Pessimiste ?)
$texte = ''; // futur contenu du html
$filtre = '\.(jpg|gif|png)'; // régex d'identification des extensions de diapo
$dir = 'photos'; //répertoire des photos
$nr = 0;
if ( (isset($_GET['nr'])) )
{
$nr = $_GET['nr'];
}
$handle = opendir($dir);while (false !($file readdir($handle)))
{
if (preg_match('/'.$filtre.'/s',strtolower($file)))
{
$diapos[] = $file; // élément 0 du tableau puis suivants ;
}
}
closedir($handle);
// 2. Si j'ai des diapos
if (isset($diapos[0]))
{
$max = count($diapos); // nombre de diapo trouvées
if (!($nr<$max))
{ // au cas ou on m'a oté des diapos entre-temps, je réduit le N°
$nr = $max-1;
}
//On initialise des variables pour un test
$valide = true ;
$num = 0 ;
$ecart = 0 ;
//tant que la variables $valide est égale à vrai faire
while ($valide == true)
{
$num = $num + 1 ; //On incrémente un compteur
if (($diapos[0+$num] == null) and ($num <= 9))// Si la diapo n'est égale à rien et que $num est inférieur ou égal à 9 alors
{
$valide = false ;
$ecart = 9 - $num ;
}
if ($num == 10)//Si la variable $num est égale à 10 alors
{
$valide = false ;
}
}
if ($ecart > 0)
{
$c = 0 ;
while ($num <= 9)
{
$diapos[$num] = $diapos[$nr+$c] ;
$num = $num + 1 ;
$c = $c + 1 ;
}
}
// 3. On affiche les diapos
$texte .= '
<center></center>,
<center></center>,
<center></center>,
<center></center>,
<center></center>
<center>'.$diapos[$nr].'</center>
<center>
</center>
';
$texte .= '';
// (nr + (max+1)) modulo max = n° précédent
$texte .= ''
.''
.', '
;
$texte .= ' ';
// Retour au module d'où je venais (event. modifier l'url)
$texte .= ''
.''
.', '
;
$texte .= ' ';
// (nr + 1) modulo max = n° suivant
$texte .= '<td width=\"100\" align=\"center\">'
.''
.''
;
$texte .= '
<center></center>,
<center></center>,
<center></center>,
<center></center>,
<center></center>
';
}
?>
Dans mon HTML j'affiche avec un echo $texte;
Bien sur ce code fonctionne mais j'avoue que c'est assez laid le fait que mon diaporama ne forme pas une boucle infini :/
HELPPPPPP =>>>> please :)
4 août 2009 à 19:49
a+
16 mai 2009 à 03:50
31 mars 2007 à 22:56
12 mars 2007 à 22:09
Ce n'est pas $_SERVER[PHP_SELF] mais $_SERVER['PHP_SELF']. De plus, il faut sécuriser cette variable en lui appliquant un htmlspecialchars() pour la protéger contre l'injection de code HTML malicieux...
++
12 mars 2007 à 12:31