<script language="Javascript">
<!--
//PLF-http://www.jejavascript.net/
function objet() {
this.length = objet.arguments.length
for (var i = 0; i < this.length; i++) this[i+1] = objet.arguments[i]
}
var nom = new objet ("imaga.gif", "imagb.gif", "imagc.gif");
var numero = 1;
function changer() {
document.image.src = "im/"+nom[numero];
numero += 1;
if (numero == nom.length + 1) numero = 1;
setTimeout("changer()", 1000);
}
//-->
</script>
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>
</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<style type="text/css"> /*
<![CDATA[*/body{background-color:#000000} #slideCont{margin:10px; border:solid 1px #000; text-align:center; } #slideCont img{margin:5px; } /*]]> */
</style>
<script type="text/javascript" src="banner.js"></script>
</head>
<body>
<div id="slideCont" style="position:relative;z-index:1;width:140px;left:400px;overflow:hidden;">
<div id="slideA" style="position:absolute;z-index:1;top:0px;left:0px;width:140px;overflow:hidden;">
<a href="http://www.apache.org/">
<img src="apache.gif" width="126"height="44" border="0" /></a>
<a href="http://www.haan.net">
<img src="banner_haan_net_en.gif" width="120" height="60" border="0" /></a>
<a href="http://www.linux.org/">
<img src="linux.gif" width="126"height="64" border="0" /></a>
<a href="http://www.mysql.com/">
<img src="mysql.gif" width="126" height="44" border="0" /></a>
<a href="http://www.php.net/">
<img src="php.gif" width="126" height="44" border="0" /></a>
<a href="http://www.ubuntu.com/">
<img src="ubuntu.gif" width="126" height="34" border="0" /></a>
<div id="slideB" style="position:relative;z-index:1;top:0px;left:0px;width:140px;overflow:hidden;">
<a href="http://www.apache.org/">
<img src="apache.gif" width="126"height="44" border="0" /></a>
<a href="http://www.haan.net">
<img src="banner_haan_net_en.gif" width="120" height="60" border="0" /></a>
<a href="http://www.linux.org/">
<img src="linux.gif" width="126"height="64" border="0" /></a>
<a href="http://www.mysql.com/">
<img src="mysql.gif" width="126" height="44"border="0" /></a>
<a href="http://www.php.net/">
<img src="php.gif"width="126" height="44" border="0" /></a>
<a href="http://www.ubuntu.com/">
<img src="ubuntu.gif" width="126" height="34" border="0" /></a>
</div>
</div>
</div>
<p><a href="slidejs.rar" class="style1">Download files.rar </a></p>
</body>
</html>
<?php
header('Content-type: text/html; charset=UTF-8');
class connect_bdd {
private static $instance;
private function __construct() {
require_once('Connections/alainweb.php');
mysql_select_db($database_alainweb, $alainweb);
mysql_query("SET NAMES 'utf8'");
}
public static function getInstance() {
if(self::$instance == NULL) self::$instance = new connect_bdd;
return self::$instance;
}
}
class DF_ObjetDefilant
{
// VARIABLES INTERNES A LA CLASSE
private $id = null;
private $largeur_totale = 0;
private $hauteur_max = 0;
private $code_html = '';
private $margin_sens = 'g';
private $dossier_images = null;
private $tableau_images = array();
// Retourne le tableau d'images provenant d'une bdd (deux tables)
private function Img_table ($defilant_index)
{
$tab_images = array();
// Connexion à la bdd, exemple en local
connect_bdd::getInstance();
//mysql_connect("localhost", "root");
//mysql_select_db("ma_base");
$query = "SELECT
defilant_nom.Designation
,defilant_nom.Image
,defilant_images.Largeur
,defilant_images.Hauteur
,defilant_images.Description
,defilant_images.Lien
FROM defilant_nom
LEFT JOIN defilant_images
ON defilant_nom.Image = defilant_images.Image
WHERE defilant_nom.Designation = '".mysql_real_escape_string($defilant_index)."'
ORDER BY defilant_nom.Ordre ASC";
$ressource = mysql_query($query);
if($this->debug == true && !$ressource) die (mysql_error());
if ($ressource)
{
while ($images = mysql_fetch_assoc($ressource))
{
$this->tableau_images[$images['Image']]['Larg'] = $images['Largeur'];
$this->tableau_images[$images['Image']]['Haut'] = $images['Hauteur'];
$this->tableau_images[$images['Image']]['Descrip'] = $images['Description'];
$this->tableau_images[$images['Image']]['Li'] = $images['Lien'];
}
}
if ($this->debug == true && count($this->tableau_images) == 0) die ("Objet '$this->id' : Aucune valeur nommée '$defilant_index' n'a été trouvée dans la table");
}
// Retourne le tableau d'images provenant d'un dossier
private function Img_dossier ()
{
$dossier = $this->dossier_images.'*.{jpg,jpeg,gif,png}';
$this->tableau_images = glob($dossier,GLOB_BRACE);
$this->tableau_images = array_map('basename',$this->tableau_images);
$this->tableau_images = array_flip($this->tableau_images);
if (count($this->tableau_images) == 0 && $this->debug == true) die ("Objet '$this->id' : Aucun fichier avec l'extension jpg, jpeg, gif ou png n'a été trouvé dans le dossier $this->dossier_images");
}
// Défini le dossier image
private function Chem_dossier ($dossier_image,$table_index)
{
if (!empty($dossier_image) && is_dir($dossier_image))
$this->dossier_images = $dossier_image.'/';
else if ($this->debug == true)
{
if (empty($dossier_image) && !isset($table_index))
die("Objet '$this->id' : L'indication d'un dossier d'images valide est indidpensable comme premier argument dans la fonction 'Set_param', excepté si le second argument est utilisé pour une recherche en bdd avec des adresses d'images absolues.");
else
if (!empty($dossier_image))
die("Objet '$this->id' : Le dossier '$dossier_image' indiqué comme premier argument dans la fonction 'Set_param' est invalide, ou son chemin relatif n'est pas correct par rapport au script en cours.");
}
}
// Défini la largeur totale, la hauteur maximale et le tableau des images valides (largeur et hauteur non nulles)
private function Set_param_dim ()
{
foreach ($this->tableau_images as $key => $value)
{
$largeur = !empty($value['Larg'])? $value['Larg'] : 0;
$hauteur = !empty($value['Haut'])? $value['Haut'] : 0;
if(empty($largeur) || empty($hauteur)) list($largeur,$hauteur) = @getimagesize($this->dossier_images.$key);
if (!empty($largeur) && !empty($hauteur))
{
$this->largeur_totale += $largeur;
$this->hauteur_max = $hauteur > $this->hauteur_max ? $hauteur : $this->hauteur_max;
}
else
unset($this->tableau_images[$key]);
}
}
// Paramètres complémentaires et affinage des dimensions
private function Set_param_comp ()
{
if(!empty($this->espacement_image))
{
if ($this->mode_defilement == 'r')
$this->largeur_totale += intval($this->espacement_image) * (count($this->tableau_images)-1);
else
$this->largeur_totale += intval($this->espacement_image) * count($this->tableau_images);
}
if (!empty($this->bord_images))
{
$bord_images = trim($this->bord_images);
$epaisseur = substr($bord_images,0,strpos($bord_images,'px'));
$epaisseur = is_numeric($epaisseur) && $epaisseur > 0 ? $epaisseur : 0;
$this->largeur_totale += 2 * $epaisseur * count($this->tableau_images);
$this->hauteur_max += 2 * $epaisseur;
}
$this->margin_sens = $this->sens_defilement == 'g' ? 'margin-right' : 'margin-left';
}
// Formate le code
private function Formate_code ()
{
$destination = $this->destination_liens == 'self'? null : 'onclick = "this.target=\'_blank\'"';
$style = !empty($this->espacement_image) ? 'style = "'.htmlspecialchars($this->margin_sens).':'.htmlspecialchars($this->espacement_image).'px;border:'.htmlspecialchars($this->bord_images).'"' : 'style = "border:'.htmlspecialchars($this->bord_images).'"';
$i = 1;
foreach ($this->tableau_images as $key => $value)
{
$alt = isset($value['Descrip']) && trim($value['Descrip']) != '' ? $value['Descrip'] : $key;
$lien = isset($value['Li']) && trim($value['Li']) != '' ? $value['Li'] : null;
$style = !empty($this->espacement_image) && $i == count($this->tableau_images) && $this->mode_defilement == 'r' ? 'style = "border:'.htmlspecialchars($this->bord_images).'"' : $style;
$this->code_html .= isset($lien)? '<a href = "'. htmlspecialchars($lien).'" '.$destination.'><img src = "'.htmlspecialchars($this->dossier_images.$key).'" alt = "'.htmlspecialchars($alt).'" title = "'.htmlspecialchars($alt).'" '.$style.' /></a>' : '<img src = "'.htmlspecialchars($this->dossier_images.$key).'" alt = "'.htmlspecialchars($alt).'" title = "'.htmlspecialchars($alt).'" '.$style.' />';
$i++;
}
}
// Chargement de la fonction DF_ObjetDefilant
public function Load_ObjetDefilant ()
{
$param = "addLoad_DF_ObjetDefilant(function(){DF_ObjetDefilant('".$this->id."','".$this->largeur_totale."','".$this->mode_defilement."','".$this->sens_defilement."','".$this->vitesse_defilement."','".$this->position_depart."','".$this->espacement_boucle."','".$this->pause_depart."')});\n";
echo htmlspecialchars($param);
}
// Affiche le code html à faire défiler
public function Affiche_code_html ()
{
echo $this->code_html;
}
// Affiche la hauteur de la plus haute image
public function Affiche_hauteur ()
{
echo intval($this->hauteur_max).'px;';
}
// Affiche le mode debug si true
private function Affiche_debug ()
{
echo '<span style="background:#FFFFFF;font-family:arial;font-size:11px;"> Mode debug </span>';
}
// Constructeur
public function __construct ($id = null)
{
if($this->debug == true) $this->Affiche_debug();
if (isset($id) && preg_match('#^\D#',$id)) $this->id = $id;
else if ($this->debug == true) die("Objet '$id' : ID null ou non valide. L'id de l'objet défilant doit être déclaré comme paramètre dans l'instanciation de la classe. Un id valide commence par une lettre.");
}
// Récupère les paramètres et excécute le code
public function Set_param ($dossier_image = null, $table_index = null)
{
$this->Chem_dossier ($dossier_image, $table_index);
isset($table_index)? $this->Img_table($table_index) : $this->Img_dossier();
$this->Set_param_dim ();
if (count($this->tableau_images) > 0)
{
$this->Set_param_comp ();
$this->Formate_code ();
}
else
if ($this->debug == true)
{
if (isset($table_index) && isset($dossier_image))
{
die("Objet '$this->id' : Les noms des fichiers images dans la bdd ne correspondent à aucune image du dossier '$dossier_image', ou les images sont invalides.");
}
else if (isset($table_index))
{
die("Objet '$this->id' : Les chemins des fichiers images dans la bdd sont invalides, ou les images sont invalides.");
}
else
{
die("Objet '$this->id' : Les images du dossier '$dossier_image' sont invalides.");
}
}
}
//VALEURS PAR DEFAUT
//espacement entre les images en pixels
public $espacement_image = '0';
// b pour boucle continue, r pour aller retour
public $mode_defilement = 'b';
// g pour défilement vers la gauche, d pour défilement vers la gauche
public $sens_defilement = 'g';
// Vitesse : 8 mminimum (les nombre plus petits sont les plus rapides)
public $vitesse_defilement = '25';
// Position de départ en pourcentage par rapport à la largeur du cadre - mettre une valeur voisine de zero, ex 0.0001 pour obtenir un équivalent de 0 si la largeur du cadre est (ou risque d'être) plus large que la totalité des images (cf mode d'emploi de la fonction)
public $position_depart = '0';
// Espacement entre deux boucles (mettre 0 pour un tableau d'images et utiliser $espacement_image pour espacer les images)
public $espacement_boucle = '0';
// Temps d'attente avant le démarrage du défilant en miliseconde
public $pause_depart = '1000';
// Ouverture des liens dans une nouvelle fenêtre ('nf' pour nouvelle fenêtre 'self' pour même fenêtre)
public $destination_liens = 'self';
// Bord des images à formater selon les normes CSS en pixels ex : '1px solid #CCCCCC' pour un pixel trait continu gris clair
public $bord_images = '0';
// Mettre la valeur 'true' uniquement en phase de test (peut affecter l'affichage avec certains navigateurs);
private $debug = false;
}
// EXEMPLE 1 : Faire défiler les images d'un répertoire
// Initialisation de l'objet en indiquant l'identifiant (id) html concerné
$def_rep = new DF_ObjetDefilant('vignettes_du_repertoire');
// Définitions de quelques paramètres (modification des valeurs par défaut de la classe)
$def_rep-> bord_images = '1px solid #666666';
$def_rep-> espacement_image = '15';
// Envoi des paramètres en indiquant le chemin du dossier
$def_rep-> Set_param('Images_defilant');
// EXEMPLE 2 : Faire défiler des images sélectionnées depuis une base de données en indiquant un répertoire (seul le nom des images est dans la table)
// Initialisation de l'objet en indiquant l'identifiant (id) html concerné
$def_base_nom_image = new DF_ObjetDefilant('vignettes_select_base');
// Définitions de quelques paramètres (modification des valeurs par défaut de la classe)
$def_base_nom_image-> espacement_image = '50';
$def_base_nom_image-> bord_images = '10px solid #F0F0F0';
$def_base_nom_image-> vitesse_defilement = '12';
$def_base_nom_image-> pause_depart = '2000';
$def_base_nom_image-> destination_liens = 'nf';
$def_base_nom_image-> mode_defilement = 'r';
// Envoi des paramètres en indiquant le chemin du dossier, et en second paramètre l'identifiant de sélection dans la base de donnée
$def_base_nom_image-> Set_param('Images_defilant','Defilant 1');
// EXEMPLE 3 : Faire défiler des images sélectionnées depuis une base de données avec des adresses d'images absolues
$def_base_adres_image = new DF_ObjetDefilant('vignettes_abs_select_base');
// Définitions de quelques paramètres (modification des valeurs par défaut de la classe)
$def_base_adres_image-> pause_depart = '3000';
$def_base_adres_image-> espacement_image = '8';
$def_base_adres_image-> vitesse_defilement = '25';
// Envoi des paramètres sans indiquer le dossier des images, et en second paramètre l'identifiant de sélection dans la base de donnée
$def_base_adres_image-> Set_param('','Defilant 2');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Générateur objet défilant tableau d'images http://www.abciweb.net</title>
<script src="Scripts/objet-defilant.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
//Chargement des objets défilants
<?php $def_rep->Load_ObjetDefilant()?>
<?php $def_base_nom_image->Load_ObjetDefilant()?>
<?php $def_base_adres_image->Load_ObjetDefilant()?>
-->
</script>
<style type="text/css">
<!--
#cadre_vinettes_rep {
position: relative;
border: 10px solid #999999;
width: 600px;
height: <?php $def_rep->Affiche_hauteur()?>
margin: auto;
overflow: hidden;
background:#fff;
}
#cadre_vinettes_base {
border: 10px solid #999999;
width: 600px;
height: <?php $def_base_nom_image->Affiche_hauteur()?>
margin: auto;
overflow: hidden;
background: #FCFCFC;
}
#conteneur_defil, #conteneur_defil2, #conteneur_defil3 {
position : relative;
visibility:hidden;
overflow : hidden;
height:100%;
}
#cadre_vinettes_abs_base {
border: 15px solid #993333;
width: 180px;
height: <?php $def_base_adres_image->Affiche_hauteur()?>
margin: auto;
overflow: hidden;
background: #000000;
}
-->
</style>
</head>
<body style="background:#000000;margin-top:3em">
<div id="cadre_vinettes_rep">
<div id="conteneur_defil">
<div id="vignettes_du_repertoire" onmouseover = "DF_ObjetDefilant_Off('vignettes_du_repertoire')" onmouseout = "DF_ObjetDefilant_On('vignettes_du_repertoire')">
<?php $def_rep->Affiche_code_html()?>
</div>
</div>
</div>
<div onclick = "DF_ObjetDefilant_Inverse('vignettes_du_repertoire')" style="width:25px;margin:auto; cursor:pointer;">
<img src="http://www.abciweb.net/images_nav/fleche-double-sens-noir.png" width="25" height="15" alt="Inversion du sens de défilement" title="Inversion du sens de défilement" />
</div>
<div id="cadre_vinettes_base" style="margin-top:3em">
<div id="conteneur_defil2">
<div id="vignettes_select_base" onmouseover = "DF_ObjetDefilant_Off('vignettes_select_base')" onmouseout = "DF_ObjetDefilant_On('vignettes_select_base')">
<?php $def_base_nom_image->Affiche_code_html()?>
</div>
</div>
</div>
<div onclick = "DF_ObjetDefilant_Inverse('vignettes_select_base')" style="width:25px;margin:auto; cursor:pointer;">
<img src="http://www.abciweb.net/images_nav/fleche-double-sens-noir.png" width="25" height="15" alt="Inversion du sens de défilement" title="Inversion du sens de défilement" />
</div>
<div id="cadre_vinettes_abs_base" style="margin-top:3em">
<div id="conteneur_defil3">
<div id="vignettes_abs_select_base" onmouseover = "DF_ObjetNavigMous('vignettes_abs_select_base','over')" onmouseout = "DF_ObjetNavigMous('vignettes_abs_select_base','out')">
<?php $def_base_adres_image->Affiche_code_html()?>
</div>
</div>
</div>
<div onclick = "DF_ObjetDefilant_Inverse('vignettes_abs_select_base')" style="width:25px;margin:auto; cursor:pointer;">
<img src="http://www.abciweb.net/images_nav/fleche-double-sens-noir.png" width="25" height="15" alt="Inversion du sens de défilement" title="Inversion du sens de défilement" />
</div>
</body>
</html>
<?php
class connect_bdd {
private static $instance;
private function __construct() {
/*
soit tu créer un fichier alainweb.php dans un répertoire Connections situé dans le répertoire du script
avec dedans le mysql_connect + 1 variable "$database_alainweb" et le retour de mysql_connect dans $alinweb
ceci dit il serait préférable de ne pas utiliser de fichier de conf (ou alors complétement genre xml avec dedans les infos host,user, mdp et nom de la base, que tu récupère et utilise ici !
*/
require_once('Connections/alainweb.php');
mysql_select_db($database_alainweb, $alainweb);
mysql_query("SET NAMES 'utf8'");
}
public static function getInstance() {
if(self::$instance == NULL) self::$instance = new connect_bdd;
return self::$instance;
}
}
?>
après dans la seconde table il faut modifier la méthode Img_table afin qu'elle corresponde à ta ou tes tables.
Code : Tout sélectionner
<div id = "défilant">
<img src="PHOTO/photo1.jpg" width="50" height="60" alt ="..." >
<img src="PHOTO/photo2.jpg" width="40" height="70" alt ="..." >
<img src="PHOTO/photo3.jpg" width="45" height="50" alt ="..." >
...
</div>Code : Tout sélectionner
#defilant img {
display:block;
margin:20px auto;
}