Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Bonjour,

j'ai trouve un petit script pour afficher mes photos

 

<? // Structure

 

/*

 

 

 

*/

 

 

 

$goroot = "../"; // pour retourner a la racine du site

 

 

 

include($goroot."elt/_top.php");

 

 

 

?>

<?

// diaporama.php

 

/* Ce script 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 <body> html

$filtre = '\.(jpeg|gif|png)'; // régex d'identification des extensions de diapo

$hauteur = '450'; // hauteur d'affichage des diapo en pixels

 

 

 

$dir = $_GET['valeur_id'];

 

$nr = "0";

$b_diapo = true;

 

// B - C'est là que ça recommence

// Je connais le répertoire et le n° de la diapo

// 1. je repère toutes les diapos du répertoire et je

// met leurs noms dans un tableau

if ( $handle = opendir($dir) ) {

while (($file = readdir($handle))) {

if (preg_match('/'.$filtre.'/s',strtolower($file))) {

$diapos[] = $file; // élément 0 du tableau puis suivants ;

}

} // on pourrait s'arrêter au n° de la diapo

closedir($handle);

}

else {echo $dir.' NON TROUVE ';}

// 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;

}

// 3. J'affiche la diapo

$texte .= '<img src="'.$dir.'/'.$diapos[$nr].'" alt="" height="'.$hauteur.'" />';

// 4. Je fais un menu

$texte .= '<ul class="suivante">';

// (nr + (max+1)) modulo max = n° précédent

$texte .= '<li><a href="'

.$_SERVER['PHP_SELF'].'?dir='.$dir.'&nr='.strval(($nr+($max-1))%$max).'" >'

.'  << Précédente  '

.'</a></li>'

;

$texte .= ' ';

// Retour au module d'où je venais (event. modifier l'url)

$texte .= '<li><a href="'

.$_SERVER['PHP_SELF'].'" >'

.'  ^Retour^  '

.'</a></li>'

;

$texte .= ' ';

// (nr + 1) modulo max = n° suivant

$texte .= '<li><a href="'

.$_SERVER['PHP_SELF'].'?dir='.$dir.'&nr='.strval(($nr+1)%$max).'" >'

.'  Suivante >>  '

.'</a></li>'

;

$texte .= '</ul>';

}

else { echo $_GET['dir'].' vide';}

 

// NB. l'utilisation de $_SERVER['PHP_SELF'] (moi-même) comme url

// permet de faire fonctionner ce script quelque soit son nom

 

//}

 

?>

 

 

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

 

<html>

<head>

<title>Choisir un image</title>

<!-- Pour avoir mon menu sur une seule ligne -->

<style type="text/css">

.suivante li {display: inline;}

</style>

</head>

 

<body>

 

<?php

 

echo $texte;

 

?>

 

 

</body>

</html>

 

//<? include($goroot."elt/_btm.php")?>

 

 

le seule souci est qu'il m'affiche la photos 0 et ensuite me renvoi une erreur comme quoi le repertoire est vide

il est bien entendu que non modifie le script fonctionne.

le script complet

 

# <?php

# // diaporama.php

#

# /* Ce script 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 <body> html

# $filtre = '\.(jpg|gif|png)'; // régex d'identification des extensions de diapo

# $hauteur = '450'; // hauteur d'affichage des diapo en pixels

#

# // A - C'est là que ça commence

# // Est-ce que je connais le répertoire et le n° de la diapo ?

# // Normalement comme dit ci-dessus, je peux recevoir ces informations grâce

# // à un choix dans un menu. Le cas ci-dessous (par formulaire) risque d'être

# // peu utilisé

# // Mais c'est quand même là quil faut vérifier que l'uri est valide

#

# if ( (isset($_GET['dir'])) && (isset($_GET['nr'])) ) {

# $dir = $_GET['dir'];

# $nr = $_GET['nr'];

# $b_diapo = true;

# }

#

#

# if (!($b_diapo)) {

# // Si je n'ai pas mes infos, je les demande

# // renvoi au module appelant, à la page d'accueil ...

# // ou, comme ici, par un formulaire

# // (Le répertoire, est le répertoire relatif à celui du script)

# $texte .= '<form action="'.$_SERVER['PHP_SELF'].'" method="get" name="diaporama">'

# .'<input type="hidden" name="nr" value="0" />'

# .'<input type="text" name="dir" value=""/>'

# .'<input type="submit" value="Valider"/>'

# .'</form>'

# ;

# }

# else {

# // B - C'est là que ça recommence

# // Je connais le répertoire et le n° de la diapo

# // 1. je repère toutes les diapos du répertoire et je

# // met leurs noms dans un tableau

# if ( $handle = opendir($dir) ) {

# while (false !== ($file = readdir($handle))) {

# if (preg_match('/'.$filtre.'/s',strtolower($file))) {

# $diapos[] = $file; // élément 0 du tableau puis suivants ;

# }

# } // on pourrait s'arrêter au n° de la diapo

# closedir($handle);

# } else {echo $dir.' NON TROUVE ';}

# // 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;

# }

# // 3. J'affiche la diapo

# $texte .= '<img src="'.$dir.'/'.$diapos[$nr].'" alt="" height="'.$hauteur.'" />';

# // 4. Je fais un menu

# $texte .= '<ul class="suivante">';

# // (nr + (max+1)) modulo max = n° précédent

# $texte .= '<li><a href="'

# .$_SERVER['PHP_SELF'].'?dir='.$dir.'&nr='.strval(($nr+($max-1))%$max).'" >'

# .'  << Précédente  '

# .'</a></li>'

# ;

# $texte .= ' ';

# // Retour au module d'où je venais (event. modifier l'url)

# $texte .= '<li><a href="'

# .$_SERVER['PHP_SELF'].'" >'

# .'  ^Retour^  '

# .'</a></li>'

# ;

# $texte .= ' ';

# // (nr + 1) modulo max = n° suivant

# $texte .= '<li><a href="'

# .$_SERVER['PHP_SELF'].'?dir='.$dir.'&nr='.strval(($nr+1)%$max).'" >'

# .'  Suivante >>  '

# .'</a></li>'

# ;

# $texte .= '</ul>';

# }

# else { echo $_GET['dir'].' vide';}

#

# // NB. l'utilisation de $_SERVER['PHP_SELF'] (moi-même) comme url

# // permet de faire fonctionner ce script quelque soit son nom

#

# }

#

# ?>

#

#

# <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

#

# <html>

# <head>

# <title>Choisir un image</title>

# <!-- Pour avoir mon menu sur une seule ligne -->

# <style type="text/css">

# .suivante li {display: inline;}

# </style>

# </head>

#

# <body>

#

# <?php

#

# echo $texte;

#

# ?>

#

#

# </body>

# </html>

 

 

si vous voyez ou est l'erreur !!

en fin de compte ce que je veux realiser en php

j'ai une page sur laquelle se trouve des miniatures le fait de cliquer sur une miniatures ouvre une autre page sur laquelle la photos 1 apparait avec un menu precedent suivant ,en fin de compte si j'arrive à passer la valeur provemant de la page dans

name="dir" value=""/>'
ça va fonctionner mais je coince

a+

Posté(e)

re,

j'ai trouve mon probleme , mais je ne sais pas le résoudre

 

$

dir=opendir($dir=$_GET['valeur_id']);

if ( $handle = $dir){

while (false !== ($file = readdir($handle))) {

if (preg_match('/'.$filtre.'/s',strtolower($file))) {

$diapos[] = $file; /

dans ce cas la valeur $file se trouve noter vvvv.jpgxxxxx.jpgxxxxx.jpg.xxxxx.jpg . etc

alors que si on entre

 

if ( $handle = $dir='allemandes'){

 

 

vvvv.jpg.xxxxx.jpg.xxxxx.jpg. etc...

on remarque que les 3 premieres photos mis dans le tableau avec $_get ne sont pas separe alors que si on entre directement la valeur c'est bon ,.

a+

Posté(e)

Salut Jeanbi,

 

pas eu le temps de décortiquer ton script (beaucoup de transtypage de variable, ça doit pas aider).

A titre d'exemple, voici un script que j'avais écris pour faire un "diaporama" de videos contenues dans des sous-répertoires du répertoire parent qui héberge le script.

 

Comme j'aime pas passer les variables dans l'url, c'est un formulaire POST

<?php
//Récupération du sous-répertoire sélectionné par le 1er formulaire
if (isset($_POST['dir'])) {
 $dir = $_POST['dir'];
}

//Récupération du numéro de video et attribution des variables $prev et $next pour le diaporama
//cas 1: rien n'est envoyé par $_POST
if (!isset($_POST['num']) && !isset($_POST['prev']) && !isset($_POST['next'])) {
$num_video = 0;
$prev = 0;
$next = 1;
 }
//cas 2: une video a été sélectionnée via la liste déroulante du formulaire 2
else if (isset($_POST['num']) && $_POST['num']!= 'null'){
$num_video = $_POST['num'];
$prev= $num_video-1;
$next = $num_video+1;
 }
//cas 3: la video précédente a été sélectionnée via le input type=image name=prev
else if (isset($_POST['prev'])) {
$num_video = $_POST['prev'];
$prev= $num_video-1;
$next = $num_video+1;
}
//cas 4: la video suivante a été sélectionnée via le input type=image name=next
else if (isset($_POST['next'])) {
$num_video = $_POST['next'];
$prev= $num_video-1;
$next = $num_video+1;
}


//Listing du contenu du répertoire parent : fichiers et sous-répertoires
$dh  = opendir(getcwd());
while (false !== ($filename = readdir($dh))) {
$array[] = $filename;
}
//classement par ordre alphabétique
sort($array);

//Formulaire 1: choix du sous-répertoire
echo "<form method='post' action='".$_SERVER['PHP_SELF']."'>";
echo "<select name='dir' onchange='this.form.submit()' style='width:200px;'>";
//Si un répertoire était préalablement sélectionné, on affiche le répertoire actuel comme première option
if (!isset($dir)){ 
 echo "<option value='null'>Choisissez un répertoire</option>";
}
else {
 echo "<option value='".$dir."'>Répertoire actuel: ".$dir."</option>";
}

//Pour chaque entrée du contenu du répertoire parent, test que le fils est un répertoire et qu'il n'est pas un répertoire spécial : . et ..; on affiche l'option correspondante
foreach($array as $entry) {
 if(is_dir($entry) && $entry != "." && $entry != "..") {
echo "<option value='".$entry."'>".$entry."</option>";
 }
}

echo "</select>";
//Si le javascript est désactivé, on rajoute un bouton submit
echo "<noscript><input type='submit' value='Changer de repertoire' /></noscript>";
echo "</form>";

//Si on a un répertoire sélectionné...
if ($handle = opendir($dir)) {
 //on liste son contenu dans un tableau
 while (false !== ($file = readdir($handle))) {
$video_array[] = $file;
 }
 //tri du tableau par ordre alphabétique
 sort($video_array);
 //on vire les 2 premiers éléments du tableau: . et ..
 $video_array = array_slice($video_array, 2);

 //comptage du nombre d'éléments
 echo "Il y a ".count($video_array)." films dans le répertoire";

 //correction de $prev et $next pour les cas particuliers (négatif et supérieur au nombre d'éléments
 if ($next > count($video_array)) { $next = count($video_array)-1;}
 if ($prev < 0) {$prev = 0;}

 //Si on a bien un fichier video: regexp rudimentaire => mes fichiers commencent par video
  if(preg_match('/video/i',$video_array[$num_video])) {
	 //Affichage du nom du fichier
	 echo "<h3>".$video_array[$num_video]."</h3>";
	 //Appel du script Quicktime pour créer l'objet embed
	 echo "<script language='JavaScript' type='text/javascript'>";
	 echo "QT_WriteOBJECT_XHTML('./".$dir."/".$video_array[$num_video]."', '640', '512', '','autoplay', 'false','emb#bgcolor', 'black','align', 'middle', 'controller','true');";
	 echo "</script>";
 }

  //création du formulaire 2: choix de la video à afficher
  echo "<form method='post' action='".$_SERVER['PHP_SELF']."'>";
  echo "<span>";
  //fleche gauche : choix de la video précédente
  echo "<input type='image' src='previous.png' name='prev' value='$prev'>";
  //une liste déroulante des différentes videos du répertoire fils pour aller directement à celle souhaitée
  echo "<select name='num' onchange='this.form.submit()' style='width:200px;'>";
  echo "<option value='null'> Vidéo actuelle : ".$video_array[$num_video]."</option>";
  foreach ($video_array as $num_video => $video) {
	echo "<option value='".$num_video."'>".$video."</option>";
  }
  echo "</select>";
  //fleche droite: choix de la video suivante
  echo "<input type='image' src='next.png' name='next' value='$next'>";

  //un champ caché pour passer le répertoire courant lors de la soumission du formulaire
  echo "<input type='hidden' name='dir' value='".$dir."'>";

  echo "</span>";
  echo "</form>";
}

?>

Posté(e)

bonjour

suis vraiment trop nul !!!

voila le script modifier qui fonctionne

si ça peux aider quelq'un

<?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 <body> 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 provenant de la page avec les vignettes

if ( (isset($_GET['dir'])) && (isset($_GET['nr'])) ) {

$dir= $_GET['dir'];

$nr = $_GET['nr'];

$b_diapo = true;

}

 

 

?>

<!>

<! on recupere le nom du repertoire >

<input type="hidden" name="nr" value="0" />

<input type="hidden" name="dir" value="<? echo $dir; ?>"/>

<?

 

//{

// B - C'est là que ça recommence

// Je connais le répertoire et le n° de la diapo

// 1. je repère toutes les diapos du répertoire et je

// met leurs noms dans un tableau

if ( $handle = opendir($dir) ) {

while (false !== ($file = readdir($handle))) {

if (preg_match('/'.$filtre.'/s',strtolower($file))) {

$diapos[] = $file; // élément 0 du tableau puis suivants ;

}

} // on pourrait s'arrêter au n° de la diapo

closedir($handle);

} else {echo $dir.' NON TROUVE ';}

// 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;

 

}

 

// 3. J'affiche la diapo

 

$texte .= '<img src="'.$dir.'/'.$diapos[$nr].'" alt="" height="'.$hauteur.'"/>';

// 4. Je fais un menu

$texte .= '<ul class="suivante">';

 

// (nr + (max+1)) modulo max = n° précédent

$texte .= '<li><a href="'

.$_SERVER['PHP_SELF'].'?dir='.$dir.'&nr='.strval(($nr+($max-1))%$max).'" >'

.'  << Précédente  '

.'</a></li>'

;

 

$texte .= ' ';

// Retour au module d'où je venais (event. modifier l'url)

$texte .= '<li><a href="'

.$_SERVER['PHP_SELF'].'" >'

.'  ^Retour^  '

.'</a></li>'

;

$texte .= ' ';

// (nr + 1) modulo max = n° suivant

$texte .= '<li><a href="'

.$_SERVER['PHP_SELF'].'?dir='.$dir.'&nr='.strval(($nr+1)%$max).'" >'

.'  Suivante >>  '

.'</a></li>'

;

 

$texte .= '</ul>';

 

}

else { echo $_GET['dir'].' vide';}

 

 

// NB. l'utilisation de $_SERVER['PHP_SELF'] (moi-même) comme url

// permet de faire fonctionner ce script quelque soit son nom

 

//}

 

?>

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

 

<html>

<head>

<title>Choisir un image</title>

<!-- Pour avoir mon menu sur une seule ligne -->

<div align=center>

<style type="text/css">

.suivante li {display: inline;}

</style>

</head>

 

<body>

<br>

 

<?php

echo "Diaporama $dir ";

 

 

echo $texte;

 

?>

a+

  • Modérateurs
Posté(e)

Le problème semble avoir trouvé sa solution.

Ainsi, afin de signaler clairement à ceux qui ont un problème similaire qu'ils ont peut-être une solution toute trouvée (s'ils pensent à utiliser la fonction Recherche en indiquant le mot-clé "résolu" auparavant), et afin de signaler aux autres contributeurs qu'il est inutile de continuer à se creuser la tête sur le problème (à moins d'avoir des suppléments d'informations à apporter pour mieux comprendre ce qui posait problème), un modérateur a préfixé le titre du topic avec la mention [résolu].

Merci, à l'avenir, de bien vouloir prendre à votre charge cette mise à jour quand vous estimez que votre problème a été résolu de manière satisfaisante (et parallèlement, si le problème a disparu "mystérieusement", inutile d'induire les gens en erreur :P) Pour cela, p_edit.gif votre premier message :P

Posté(e) (modifié)

re, a ce que je vois certains ont plus facile à faire des réflexions que de donner des solutions , si je n'ai pas mis résolu c'est que j'étais en train de fignoler car il y a un cht'i bug encore ...

étant inscrit depuis 2001 n°486 je pense savoir non!!!!

merci à l'avenir de poster en mp ..

a+

Modifié par jeanbi
  • Modérateurs
Posté(e)

Salut Jeanbi,

 

Je crains que tu n'aies pris un banal acte de modération pour un jugement de valeur. Comme l'indique le texte préformaté ci-dessus, le fait de marquer un sujet “résolu” lui confère plus d'intérêt, dans la mesure où il peut donc servir à d'autres internautes se posant — sinon la même question — du moins une question analogue.

 

En ce qui concerne ton problème, n'hésite pas à revenir ici en compléter la solution. Dans le cas contraire, la mention “résolu” peut sans difficulté être effacée :P

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...