Merci.
Je suis en train de travailler dessus, mais il me fait déja une erreur:
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in test_affichage_logo.php on line 7
ce qui correspond à : private static $instance;
il y a des erreurs partout... il ne se connecte pas à la base...
En gros je n'y comprends rien... même en mettant les bonnes connections ça ne marche pas...
pour info j'ai utilisé ce code :
<?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>