Prendre les 10 dernieres photos script php

Résolu/Fermé
bretonm2004 Messages postés 319 Date d'inscription vendredi 9 mai 2008 Statut Membre Dernière intervention 30 août 2013 - 13 juin 2011 à 15:28
dariumis Messages postés 571 Date d'inscription mardi 16 mars 2010 Statut Membre Dernière intervention 18 avril 2018 - 13 juin 2011 à 17:59
Bonjour,

voici mon code php il scanne un dossier donné et fait un diaporama ensuite mais voici mon probleme

dans mon répertoire il u a au dessus de 300 photos j'aimerait qu il prenne seulement les 10 derniere elle sont numérotés de 1 a 300

merci

<?php

class PHPDiapo {
var $relPath;
var $images;
var $id;
var $className;
var $transition_time=3;
var $transition_pause;

function PHPDiapo ($path,$id,$className="",$timeout=3, $attrs=array()) {
$this->attrs = $attrs;
$this->relPath = $path;
$this->id = $id;
$this->className = $className;
if ($timeout) $this->transition_pause = $timeout;
$this->init();
$this->write();
}

function init() {
$this->images=array();
$dir = $_SERVER["PATH_TRANSLATED"];
$dir = substr($dir,0,strrpos($dir,"/")+1);
$dir .= $this->relPath;
$hdl = opendir($dir);

while (false !== ($file = readdir($hdl))) {
if($file!="." && $file!="..") {
// check file extension
$pattern = '/\.(gif|png|jpg|jpeg)$/i';
if (!preg_match($pattern, $file, $matches)) continue;
if(is_file($dir."/".$file))
$this->images[]="$this->relPath/$file";
}
}
sort($this->images);
}

function write() {
$this->write_func();
$first=$this->images[0];
$this->write_JS_init();
echo $this->img($first,$id=$this->id,$className=$this->className);
$this->write_JS_launch();
}

function write_JS_init() {
echo "images['".$this->id."']=new Array();\r";
for ($i=0;$i<sizeof($this->images);$i++) {
echo "images['".$this->id."'][$i]=new Image();\r";
echo "images['".$this->id."'][$i].src=\"".$this->images[$i]."\";\r";
echo "images['".$this->id."'][$i].alt=\"".$this->get_alt($this->images[$i])."\";\r";
}
echo "</script>\r\r";
}


function write_func(){
echo "\r<script type=\"text/javascript\">\r";

static $already_write = false;
if ($already_write) {

}
else {

echo "
var FRAME_PER_SEC = 20;
function set_opacity(el, op) {
el.style.opacity = op;
el.style.MozOpacity = op;
el.style.KhtmlOpacity = op;
el.style.filter = 'alpha(opacity=' + op*100 + ')';
el.opacity = op;
}

function fade_in(imageId) {
var img = document.getElementById(imageId);
var incr = 1/((img.transition_time/3)*FRAME_PER_SEC);
var newOp = img.opacity+incr;
newOp = (newOp > 1) ? 1.0 : newOp;
set_opacity(img, newOp);
if (newOp < 1) setTimeout('fade_in(\"'+imageId+'\")',1000/FRAME_PER_SEC);
}

var images = new Array();
function run_diapo(diapoId) {
obj = document.getElementById(diapoId);
obj.src = images[diapoId][obj.index].src;
obj.alt = images[diapoId][obj.index].alt;
obj.title = images[diapoId][obj.index].alt;
obj.opacity = 0.0;

fade_in(diapoId);
obj.index+=1;
if (obj.index >= obj.length_diapo) obj.index=0;
obj.timeout = setTimeout('run_diapo(\"'+diapoId+'\")', obj.transition_pause * 1000);
}\r";
$already_write = true;
}
}

function write_JS_launch() {
$diapoID=$this->id;
echo "\r<script type=\"text/javascript\">\r";
echo "obj = document.getElementById('".$diapoID."');\r";
echo "obj.transition_time=".$this->transition_time.";\r";
echo "obj.transition_pause=".$this->transition_pause.";\r";
echo "obj.index=0;\r";
echo "obj.length_diapo=images['".$diapoID."'].length;\r";
echo "obj.timeout;\r";

echo "if (obj.length_diapo > 0) run_diapo('".$diapoID."');\r";
echo "</script>\r\r";
}

function get_alt($src) {
# strip path
$txt=substr($src,strrpos($src,"/")+1);
# strip extension
$txt=substr($txt,0,strrpos($txt,"."));
# strip special chars
$tostrip=array("_",",","-");
for ($i=0;$i<sizeof($tostrip);$i++) $txt=str_replace($tostrip[$i]," ",$txt);
return $txt;
}

function img($src,$id="",$class="") {
$has_link = false;
$alt=$this->get_alt($src);
$img = "<img id='$id' name='$id' class='$class' alt='$alt' title='$alt' src='$src'";
foreach($this->attrs as $key=>$value)
{
if ($key=="href" && !$has_link) {
$has_link = true;
$img = "<a href=$value>$img";
}
else {
$img .= " $key='$value' ";
}
}
$img .= "/>\r";
if ($has_link) $img .= "</a>";
return $img;
}
}



A voir également:

1 réponse

dariumis Messages postés 571 Date d'inscription mardi 16 mars 2010 Statut Membre Dernière intervention 18 avril 2018 63
Modifié par dariumis le 13/06/2011 à 19:31
Salut, j'ai pas lu ton code, mais a un moment les images tu les place certainement dans un array, donc quant tu boucle pour remplire l'array t'incrémente un compteur, puis une fois le array rempli tu décrémente une boucle for qui démarre à ton compteur, et qui va jusqu'à ton compteur moins 10 et tu transfert.
0