[Resolu] Affichage aléatoire d'images dans le bandeau titre du site

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.8.2
#~ Nom de l'hébergeur : localhost
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.8.2
#~ Installed Modules:
#~ * CMSMailer: 2.0
#~ * FileManager: 1.0.2
#~ * MenuManager: 1.6.5
#~ * ModuleManager: 1.4
#~ * News: 2.10.6
#~ * nuSOAP: 1.0.2
#~ * Printing: 1.1.0
#~ * Search: 1.6.5
#~ * ThemeManager: 1.1.1
#~ * TinyMCE: 2.7.2
#~ * Album: 0.9.3
#~ * DownCnt: 1.0.0
#~ * FormBuilder: 0.6.4
#~ * Captcha: 0.4.2
#~ * CGExtensions: 1.19.2
#~ * FrontEndUsers: 1.12
#~ * CustomContent: 1.7.3
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * output_compression: false
#~ * max_upload_size: 10000000
#~ * default_upload_permission: 664
#~ * url_rewriting: mod_rewrite
#~ * page_extension: .html
#~ * query_var: page
#~ * use_hierarchy: true
#~ * image_manipulation_prog: GD
#~ * auto_alias_content: true
#~ * locale:
#~ * default_encoding: utf-8
#~ * admin_encoding: utf-8
#~ * set_names: true
#~ Php Information:
#~ * phpversion: 5.3.0
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * E_STRICT: 0
#~ * E_DEPRECATED: 0
#~ * memory_limit: 128M
#~ * max_execution_time: 60
#~ * output_buffering: 1
#~ * safe_mode: Off (Faux)
#~ * file_uploads: On (Vrai)
#~ * post_max_size: 10M
#~ * upload_max_filesize: 10M
#~ * session_save_path: c:/wamp/tmp (0777)
#~ * session_use_cookies: On (Vrai)
#~ * xml_function: On (Vrai)
#~ Server Information:
#~ * Server Api: apache2handler
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.1.36
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~



Bonjour,

Je souhaiterai, si cela est possible, afficher dans le bandeau correspondant au <header> une image différente d'une page à l'autre. A partir d'un nombre fini d'images de la même taille, 5 à 6 images au maximum, le but est d'afficher une image différente, de façon aléatoire, sur la seconde page affichée par le visiteur et ainsi de suite à chaque changement de page.

Je ne sais pas trop comment faire où insérer du code. J'ai fais quelques essais de code dans la feuille de style mais ce n'est pas concluant.
Si vous avez une idée, je suis preneur.

Merci d'avance

Alain
#1
Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.8.2
#~ Nom de l'hébergeur : localhost
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.8.2
#~ Installed Modules:
#~ * CMSMailer: 2.0
#~ * FileManager: 1.0.2
#~ * MenuManager: 1.6.5
#~ * ModuleManager: 1.4
#~ * News: 2.10.6
#~ * nuSOAP: 1.0.2
#~ * Printing: 1.1.0
#~ * Search: 1.6.5
#~ * ThemeManager: 1.1.1
#~ * TinyMCE: 2.7.2
#~ * Album: 0.9.3
#~ * DownCnt: 1.0.0
#~ * FormBuilder: 0.6.4
#~ * Captcha: 0.4.2
#~ * CGExtensions: 1.19.2
#~ * FrontEndUsers: 1.12
#~ * CustomContent: 1.7.3
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * output_compression: false
#~ * max_upload_size: 10000000
#~ * default_upload_permission: 664
#~ * url_rewriting: mod_rewrite
#~ * page_extension: .html
#~ * query_var: page
#~ * use_hierarchy: true
#~ * image_manipulation_prog: GD
#~ * auto_alias_content: true
#~ * locale:
#~ * default_encoding: utf-8
#~ * admin_encoding: utf-8
#~ * set_names: true
#~ Php Information:
#~ * phpversion: 5.3.0
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * E_STRICT: 0
#~ * E_DEPRECATED: 0
#~ * memory_limit: 128M
#~ * max_execution_time: 60
#~ * output_buffering: 1
#~ * safe_mode: Off (Faux)
#~ * file_uploads: On (Vrai)
#~ * post_max_size: 10M
#~ * upload_max_filesize: 10M
#~ * session_save_path: c:/wamp/tmp (0777)
#~ * session_use_cookies: On (Vrai)
#~ * xml_function: On (Vrai)
#~ Server Information:
#~ * Server Api: apache2handler
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.1.36
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~



Bonjour,

Je souhaiterai, si cela est possible, afficher dans le bandeau correspondant au <header> une image différente d'une page à l'autre. A partir d'un nombre fini d'images de la même taille, 5 à 6 images au maximum, le but est d'afficher une image différente, de façon aléatoire, sur la seconde page affichée par le visiteur et ainsi de suite à chaque changement de page.

Je ne sais pas trop comment faire où insérer du code. J'ai fais quelques essais de code dans la feuille de style mais ce n'est pas concluant.
Si vous avez une idée, je suis preneur.

Merci d'avance

Alain
#2
très facile et peu être fait en moins de 20 lignes de code dans un UDT

en partant du principe que toutes tes images doivent être contenu dans un répertoire R et préalablement toutes taillées à la bonne taille

le schéma est le suivant en php

Code :
//ouvre le répertoire R

//lister les fichiers présents dedans sans entrer dans les sous répertoire
// en prenant soin de ne prendre que les extensions *.jpg *.JPG *.jpeg *.JPEG *.gif *.GIF *.png *.PNG ....


//lire le premier fichiers trouvé et déterminer ses dimensions qui seront mémorisée dans les variable X et Y pour respectivement width et height

//fermer le répertoire R

//Compter combien d'élément dans le tableau résultat on a trouvé dans le répertoire R. Ce nombre est noté N

//Sortir un nombre aléatoire entre 1 et N. Ce nombre est noté A

//déterminer l'image à la position A du tableau de résultat

//faire un echo de la valeur HTML de l'objet image tel que
// <img src='{URL DE L'IMAGE}' alt='image du header' width='{X}' height='{Y}' />

ensuite tu insères cet UDT dans le gabarit utilisé tel que {nom_de_ma_balise}

rien de complexe et le net pullule d'info dispo sur chaque partie. Là tu as l'algo général. Demain si tu ajoutes 2 images dans le bon répertoire elles seront prises automatiquement en compte Smile
#2
très facile et peu être fait en moins de 20 lignes de code dans un UDT

en partant du principe que toutes tes images doivent être contenu dans un répertoire R et préalablement toutes taillées à la bonne taille

le schéma est le suivant en php

Code :
//ouvre le répertoire R

//lister les fichiers présents dedans sans entrer dans les sous répertoire
// en prenant soin de ne prendre que les extensions *.jpg *.JPG *.jpeg *.JPEG *.gif *.GIF *.png *.PNG ....


//lire le premier fichiers trouvé et déterminer ses dimensions qui seront mémorisée dans les variable X et Y pour respectivement width et height

//fermer le répertoire R

//Compter combien d'élément dans le tableau résultat on a trouvé dans le répertoire R. Ce nombre est noté N

//Sortir un nombre aléatoire entre 1 et N. Ce nombre est noté A

//déterminer l'image à la position A du tableau de résultat

//faire un echo de la valeur HTML de l'objet image tel que
// <img src='{URL DE L'IMAGE}' alt='image du header' width='{X}' height='{Y}' />

ensuite tu insères cet UDT dans le gabarit utilisé tel que {nom_de_ma_balise}

rien de complexe et le net pullule d'info dispo sur chaque partie. Là tu as l'algo général. Demain si tu ajoutes 2 images dans le bon répertoire elles seront prises automatiquement en compte Smile
#3
Nommer les 6 images ainsi : image1.jpg, image2.jpg...
Placer dans le gabarit :
{capture assign='num'}{1|rand:6}{/capture}
<img src="uploads/images/image{$num}.jpg" alt="" ... />
Cela donnera <img src="uploads/images/image3.jpg" si c'est le chiffre 3 qui est retourné en random.
#3
Nommer les 6 images ainsi : image1.jpg, image2.jpg...
Placer dans le gabarit :
{capture assign='num'}{1|rand:6}{/capture}
<img src="uploads/images/image{$num}.jpg" alt="" ... />
Cela donnera <img src="uploads/images/image3.jpg" si c'est le chiffre 3 qui est retourné en random.
#4
Bonjour,

Merci à tous les 2 pour vos réponses rapides. Je vais tester tous cela et jje vous donne des nouvelles.

A bientôt
Alain
#4
Bonjour,

Merci à tous les 2 pour vos réponses rapides. Je vais tester tous cela et jje vous donne des nouvelles.

A bientôt
Alain
#5
Bonjour,

je reviens vers vous car je coince sur un truc et je tourne en rond.
J'ai créé 7 images de même taille, dans un même répertoire, et qui porte un nom de type image1.jpg, image2.jpg ..etc.
j'ai créé un fichier php, pour tester mon code, qui va :
lire le répertoire,
faire la liste des fichiers images et compter le nombre d'image,
récupérer un nombre aléatoire entre 1 le le nombre max d'images trouvées,
et en fin afficher la bonne image.

Voici ce code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Bienvenue sur mon site !</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p> Début du test </p>
<?php
$num = 0;
echo '<ul>';
if ($dossier = opendir ("../randokerlouan/uploads/Logos"))
echo '<p>apres ouverture</p>';
{
while (false !== ($fichier = readdir($dossier)))
{
if ($fichier != "." && $fichier != ".." && $fichier != "index.php" && !is_dir($fichier))
{
$num++;
echo '<li><a href="../randokerlouan/uploads/Logos/' . $fichier . '">' . $fichier . '</a></li>';
$liste[$num]=$fichier;
}
}
$nb = rand(1,$num);
echo '<p>nombre aleatoire :' . $nb .' bof</p>';
echo '<p>nombre de fichiers :' . $num .' bof</p>';
$fichier=$liste[$nb];
echo '<p>Image à afficher :' . $fichier .' avant affichage</p>';
echo '<img rsc="../randokerlouan/uploads/Logos/' . $fichier . '" alt="logo dynamique" width='987px' height='190px'/>';
}
?>

<p> fin </p>
</body>
</html>

Tout fonctionne sauf l'affichage de l'image.
Pour la ligne "echo '<img rsc="../randokerlouan/uploads/Logos/' . $fichier . '" alt="logo dynamique" width='987px' height='190px'/>';", j'ai un parse error expected "." or";".

En fait je bute sur l'url de l'image je en sais pas la rendre dynamique, j'ai aussi essayé le code de Jean Le Chauve <img src="uploads/images/image{$num}.jpg" alt="" ... /> sans plus de résultat.

Qu'est-ce que je fais mal ?

Merci d'avance pour votre aide

Alain
#5
Bonjour,

je reviens vers vous car je coince sur un truc et je tourne en rond.
J'ai créé 7 images de même taille, dans un même répertoire, et qui porte un nom de type image1.jpg, image2.jpg ..etc.
j'ai créé un fichier php, pour tester mon code, qui va :
lire le répertoire,
faire la liste des fichiers images et compter le nombre d'image,
récupérer un nombre aléatoire entre 1 le le nombre max d'images trouvées,
et en fin afficher la bonne image.

Voici ce code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Bienvenue sur mon site !</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p> Début du test </p>
<?php
$num = 0;
echo '<ul>';
if ($dossier = opendir ("../randokerlouan/uploads/Logos"))
echo '<p>apres ouverture</p>';
{
while (false !== ($fichier = readdir($dossier)))
{
if ($fichier != "." && $fichier != ".." && $fichier != "index.php" && !is_dir($fichier))
{
$num++;
echo '<li><a href="../randokerlouan/uploads/Logos/' . $fichier . '">' . $fichier . '</a></li>';
$liste[$num]=$fichier;
}
}
$nb = rand(1,$num);
echo '<p>nombre aleatoire :' . $nb .' bof</p>';
echo '<p>nombre de fichiers :' . $num .' bof</p>';
$fichier=$liste[$nb];
echo '<p>Image à afficher :' . $fichier .' avant affichage</p>';
echo '<img rsc="../randokerlouan/uploads/Logos/' . $fichier . '" alt="logo dynamique" width='987px' height='190px'/>';
}
?>

<p> fin </p>
</body>
</html>

Tout fonctionne sauf l'affichage de l'image.
Pour la ligne "echo '<img rsc="../randokerlouan/uploads/Logos/' . $fichier . '" alt="logo dynamique" width='987px' height='190px'/>';", j'ai un parse error expected "." or";".

En fait je bute sur l'url de l'image je en sais pas la rendre dynamique, j'ai aussi essayé le code de Jean Le Chauve <img src="uploads/images/image{$num}.jpg" alt="" ... /> sans plus de résultat.

Qu'est-ce que je fais mal ?

Merci d'avance pour votre aide

Alain
#6
echo '<img rsc="../randokerlouan/uploads/Logos/'.$fichier.'" alt="logo dynamique" width="987px"height="190px" />';
Et supprime les espaces autour des points (.) pour la concaténation des variables : ex
echo '<p>Image à afficher :'.$fichier.' avant affichage</p>'; et pas echo '<p>Image à afficher :' . $fichier . ' avant affichage</p>';

Citation :j'ai aussi essayé le code de Jean Le Chauve
Code :
{capture assign='num'}{1|rand:6}{/capture}
<img src="uploads/Logos/image{$num}.jpg" alt="logo" title="logo" />
Ce code fonctionne parfaitement et n'a pas besoin d'udt, tu le colles simplement à l'endroit où tu désires faire apparaître l'image. Il faut bien entendu que le chemin soit bien configuré. Avec 7 images, tu modifies {1|rand:6} en {1|rand:7}

Et tu peux faire encore plus court :
Code :
<img src="uploads/Logos/image{1|rand:7}.jpg" alt="logo" title="logo" />
#6
echo '<img rsc="../randokerlouan/uploads/Logos/'.$fichier.'" alt="logo dynamique" width="987px"height="190px" />';
Et supprime les espaces autour des points (.) pour la concaténation des variables : ex
echo '<p>Image à afficher :'.$fichier.' avant affichage</p>'; et pas echo '<p>Image à afficher :' . $fichier . ' avant affichage</p>';

Citation :j'ai aussi essayé le code de Jean Le Chauve
Code :
{capture assign='num'}{1|rand:6}{/capture}
<img src="uploads/Logos/image{$num}.jpg" alt="logo" title="logo" />
Ce code fonctionne parfaitement et n'a pas besoin d'udt, tu le colles simplement à l'endroit où tu désires faire apparaître l'image. Il faut bien entendu que le chemin soit bien configuré. Avec 7 images, tu modifies {1|rand:6} en {1|rand:7}

Et tu peux faire encore plus court :
Code :
<img src="uploads/Logos/image{1|rand:7}.jpg" alt="logo" title="logo" />
#7
J'ai modifié mon code comme cela :
}
$nb = rand(1,$num);
echo '<p>nombre aleatoire :'.$nb.' bof</p>';
echo '<p>nombre de fichiers :'.$num.' bof</p>';
$fichier=$liste[$nb];
echo '<p>Image à afficher :'.$fichier.' avant affichage</p>';
echo '<img rsc="../randokerlouan/uploads/Logos/'.$fichier.'" alt="logo dynamique" width="987px" height="190px"/>';
}

le résultat : je n'ai toujours pas d'affichage de mon image.
il m'affiche ceci :

# image7.jpg

nombre aleatoire :1 bof

nombre de fichiers :7 bof

Image à afficher :image1.jpg avant affichage
logo dynamique

fin


Avec firebug, j'ai bien la ligne html avec le nom du fichier comme il faut mais rien ne s'affiche à part ce qu'il y a dans l'attribut alt de la balise img. Je ne comprends pas pourquoi je n'ai pas d'affichage alors que les liens pointent bien sur les bon fichiers et eux ils s'affichent. As-tu un explication ?

Merci pour tes réponses

Alain
#7
J'ai modifié mon code comme cela :
}
$nb = rand(1,$num);
echo '<p>nombre aleatoire :'.$nb.' bof</p>';
echo '<p>nombre de fichiers :'.$num.' bof</p>';
$fichier=$liste[$nb];
echo '<p>Image à afficher :'.$fichier.' avant affichage</p>';
echo '<img rsc="../randokerlouan/uploads/Logos/'.$fichier.'" alt="logo dynamique" width="987px" height="190px"/>';
}

le résultat : je n'ai toujours pas d'affichage de mon image.
il m'affiche ceci :

# image7.jpg

nombre aleatoire :1 bof

nombre de fichiers :7 bof

Image à afficher :image1.jpg avant affichage
logo dynamique

fin


Avec firebug, j'ai bien la ligne html avec le nom du fichier comme il faut mais rien ne s'affiche à part ce qu'il y a dans l'attribut alt de la balise img. Je ne comprends pas pourquoi je n'ai pas d'affichage alors que les liens pointent bien sur les bon fichiers et eux ils s'affichent. As-tu un explication ?

Merci pour tes réponses

Alain
#8
Bon j'ai re-testé ton code et en effet cela marche du feu de dieu. Donc mon problème est résolu. Malgré tous si tu pouvais éclairer ma lanterne au sujet de l'affichage de mon image dans mon fichier php je t'en serai reconnaissant.



Merci d'avance

Alain
#8
Bon j'ai re-testé ton code et en effet cela marche du feu de dieu. Donc mon problème est résolu. Malgré tous si tu pouvais éclairer ma lanterne au sujet de l'affichage de mon image dans mon fichier php je t'en serai reconnaissant.



Merci d'avance

Alain
#9
Citation : echo '<img rsc="../randokerlouan/uploads/Logos/'.$fichier.'" alt="logo dynamique" width="987px" height="190px"/>';

Tongue
#9
Citation : echo '<img rsc="../randokerlouan/uploads/Logos/'.$fichier.'" alt="logo dynamique" width="987px" height="190px"/>';

Tongue
#10
Comme quoi notre cerveau est bien fait : il remet les lettres dans le bon ordre.
Moralité : utiliser un bon éditeur quand on code.
#10
Comme quoi notre cerveau est bien fait : il remet les lettres dans le bon ordre.
Moralité : utiliser un bon éditeur quand on code.
#11
Merci à tous les 2, c'est vrai les lettres dans le bon ordre cela marche beaucoup mieux.

Je modifie mon premier poste et je vous dis à bientôt pour d'autres aventures....

Cordialement

Alain
#11
Merci à tous les 2, c'est vrai les lettres dans le bon ordre cela marche beaucoup mieux.

Je modifie mon premier poste et je vous dis à bientôt pour d'autres aventures....

Cordialement

Alain


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)