<?php
header('Content-type: text/html; charset=UTF-8');
$tab_news[0]['text'] = 'Avatar AB';
$tab_news[0]['image'] = 'http://www.laquadrature.net/wiki/images/4/48/Quadrature_black-out_HADOPI_50x50px_fixed_texte.png';
$tab_news[1]['text'] = 'Avatar Stopher';
$tab_news[1]['image'] = 'http://lindev.fr/public/images/bt-agents-color.jpg';
$tab_news[2]['text'] = 'Avatar Albat';
$tab_news[2]['image'] = 'http://albat.fr.free.fr/phpfrance/coccinelle_v3.png';
shuffle($tab_news);
?>
<!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>Document sans nom</title>
<script type="text/javascript">
function Message(id_message,id_photo)
{
var id_mes = document.getElementById(id_message);
var id_pho = document.getElementById(id_photo);
var tab_news_js = <?php echo (isset($tab_news) && is_array($tab_news))? json_encode($tab_news) : 'new Array' ?>;
// nombre d'éléments du tableau
var nb_tab_news_js = tab_news_js.length;
// Si les éléments cibles existent et le tableau a plus d'un élément
if (id_mes && id_pho && nb_tab_news_js > 1)
{
var Img_preload_src = new Array();
// préchargement des images
for (var i=0; i < nb_tab_news_js; i++)
{
if (typeof tab_news_js[i]['image'] != 'undefined')
{
Img_preload_src[tab_news_js[i]['image']] = new Image();
Img_preload_src[tab_news_js[i]['image']].src = tab_news_js[i]['image'];
}
}
function Boucle(inc)
{
//je défini l'indice en focntion de la position dans le tableau
var inc = inc < nb_tab_news_js ? inc : 0;
// Je nettoie l'élément cible du texte
var noeuds = id_mes.childNodes.length;
for (var i = 0; i < noeuds; i++)
{
id_mes.removeChild(id_mes.firstChild);
}
// Je prend l'adresse de la photo enregistrée dans le tableau; il faudrait remplacer adresse_image_vide.jpg par l'adresse d'une imaage transparente (au cas ou l'image ne serait pas renseignée dans le tableau php)
var image = typeof tab_news_js[inc]['image'] != 'undefined' ? tab_news_js[inc]['image'] : 'adresse_image_vide.jpg' ;
// Je cherche le texte enregistré dans le tableau
var texte = typeof tab_news_js[inc]['text'] != 'undefined' ? tab_news_js[inc]['text'] : '';
// je crée un noeud texte avec le texte récupéré
texte = document.createTextNode(texte);
// J'insère la photo dans l'élément cible
id_pho.src = image;
// J'insère le noeud texte dans l'élément cible
id_mes.appendChild(texte);
//j'incrémente
inc++;
//J'appelle la fonction Boucle toutes les cinq secondes
setTimeout(function(){Boucle(inc)},'5000');
}
Boucle(0);
}
}
// Fonction de chargement onload
function AddLoad_JS(func) {
if (window.addEventListener)
{
window.addEventListener("load", func, false);
}
else if (document.addEventListener)
{
document.addEventListener("load", func, false);
}
else if (window.attachEvent)
{
window.attachEvent("onload", func);
}
}
// Chargement onload de la fonction Message avec ses paramètres id texte et id image
AddLoad_JS(function(){Message('news_texte','news_photo')});
</script>
<style type="text/css">
#conteneur td {
width : 200px;
}
#conteneur {
height : 100px;
width : 400px;
border : 3px solid black;
}
</style>
</head>
<body>
<table id = "conteneur">
<tr>
<td id = "news_texte">
<?php if (isset($tab_news[0]['text'])) echo $tab_news[0]['text'];?>
</td>
<td>
<img id = "news_photo" src="<?php if (isset($tab_news[0]['image'])) echo $tab_news[0]['image']; else echo 'adresse_image_vide.jpg'?>" />
</td>
</tr>
</table>
</body>
</html>
Simplement en remplissant ton tableau php tu augmente le nombre d'élément qui apparaîtra dans le tableau html. Ici toutes les cinq secondes mais tu peux bien entendu changer cette valeur.
var tab_news_js = <?php echo json_encode($tab_news) ?>;
var temp_array = tab_news_js.slice(0, tab_news_js.length);
var texte = null;
var image = null;
var timer = function ()
{
var current = temp_array.shift();
texte.innerHTML = current.text;
image.src = current.image;
if (!temp_array.length)
{
temp_array = tab_news_js.slice(0, tab_news_js.length);
}
window.setTimeout(timer, '1000');
};
var addOnLoad = function ()
{
texte = document.getElementById('news_texte');
image = document.getElementById('news_photo');
timer();
};
if (window.addEventListener)
{
window.addEventListener('load', addOnLoad, false);
}
else if (window.attachEvent)
{
window.attachEvent('onload', addOnLoad);
}
C'est vrai que tu t'embête beaucoup moinstu t'embêtes un peu pour le JavaScript quand mêmevar tab_news_js = <?php echo json_encode($tab_news) ?>; var temp_array = tab_news_js.slice(0, tab_news_js.length); var texte = null; var image = null; var timer = function () { var current = temp_array.shift(); texte.innerHTML = current.text; image.src = current.image; if (!temp_array.length) {C temp_array = tab_news_js.slice(0, tab_news_js.length); } window.setTimeout(timer, '1000'); }; var addOnLoad = function () { texte = document.getElementById('news_texte'); image = document.getElementById('news_photo'); timer(); }; if (window.addEventListener) { window.addEventListener('load', addOnLoad, false); } else if (window.attachEvent) { window.attachEvent('onload', addOnLoad); }
sauf qu'il prendra beaucoup plus niveau proc, et pour la mémoire c'est pas la peine sauf si tu veux que la personne reste 1h sur ta page et regarde le bandeau défilé, surtout qu'on parle d'à peine quelque ko, et si on suis ta logique du W3C personne ne ferait d'ajax puisque XMLHttpRequest n'est pas a l'état actuelle valid W3C (bientôt surementMais si mon code est plus verbeux, il est aussi plus sécurisé (pas de variables globales et vérification des variables du tableau), plus optimisé pour l'affichage des images qui s'afficheront instantanément, plus respectueux du DOM W3C, et plus optimisé car utilisant moins de mémoire pour le navigateur en cas d'un tableau de news/images un peu volumineux![]()
Code : Tout sélectionner
<?php
header('Content-type: text/html; charset=UTF-8');
$tab_temoignages[0]['image'] = 'sites/all/images/empty_tem.jpg';
$tab_temoignages[0]['text'] = 'Avatar AB';
$tab_temoignages[1]['image'] = 'sites/all/images/empty_tem_b.jpg';
$tab_temoignages[1]['text'] = 'Avatar Stopher';
$tab_temoignages[2]['image'] = 'sites/all/images/empty_tem.jpg';
$tab_temoignages[2]['text'] = 'Jérôme Lissargue
32 ans, contrôleur de gestion chez Airbus
(Toulouse)
"Ils m’ont bluffé ! Ultrarapide sans transiger avec la qualité, Stéphane le technicien est allé droit au but. Désormais, au moindre pépin, je sais que je pourrai constamment compter sur eux."';
shuffle($tab_temoignages);
?>
Code : Tout sélectionner
<script language="Javascript">
function Message(id_message,id_photo)
{
var id_mes = document.getElementById(id_message);
var id_pho = document.getElementById(id_photo);
var tab_temoignages_js = <?php echo (isset($tab_temoignages) && is_array($tab_temoignages))? json_encode($tab_temoignages) : 'new Array' ?>;
// Nombre d'éléments du tableau
var nb_tab_temoignages_js = tab_temoignages_js.length;
// Si les éléments cibles existent et le tableau a plus d'un élément
if (id_mes && id_pho && nb_tab_temoignages_js > 1)
{
var Img_preload_src = new Array();
// Préchargement des images
for (var i=0; i < nb_tab_temoignages_js; i++)
{
if (typeof tab_temoignages_js[i]['image'] != 'undefined')
{
Img_preload_src[tab_temoignages_js[i]['image']] = new Image();
Img_preload_src[tab_temoignages_js[i]['image']].src = tab_temoignages_js[i]['image'];
}
}
function Boucle(inc)
{
// Je définie l'indice en focntion de la position dans le tableau
var inc = inc < nb_tab_temoignages_js ? inc : 0;
// Je nettoie l'élément cible du texte
var noeuds = id_mes.childNodes.length;
for (var i = 0; i < noeuds; i++)
{
id_mes.removeChild(id_mes.firstChild);
}
// Je prend l'adresse de la photo enregistrée dans le tableau; il faudrait remplacer adresse_image_vide.jpg par l'adresse d'une imaage transparente (au cas ou l'image ne serait pas renseignée dans le tableau php)
var image = typeof tab_temoignages_js[inc]['image'] != 'undefined' ? tab_temoignages_js[inc]['image'] : 'sites/all/images/empty_tem.jpg' ;
// Je cherche le texte enregistré dans le tableau
var texte = typeof tab_temoignages_js[inc]['text'] != 'undefined' ? tab_temoignages_js[inc]['text'] : '';
// je crée un noeud texte avec le texte récupéré
texte = document.createTextNode(texte);
// J'insère la photo dans l'élément cible
id_pho.src = image;
// J'insère le noeud texte dans l'élément cible
id_mes.appendChild(texte);
// J'incrémente
inc++;
// J'appelle la fonction Boucle toutes les sept secondes
setTimeout(function(){Boucle(inc)},'7000');
}
Boucle(0);
}
}
// Fonction de chargement onload
function AddLoad_JS(func) {
if (window.addEventListener)
{
window.addEventListener("load", func, false);
}
else if (document.addEventListener)
{
document.addEventListener("load", func, false);
}
else if (window.attachEvent)
{
window.attachEvent("onload", func);
}
}
// Chargement onload de la fonction Message avec ses paramètres id texte et id image
AddLoad_JS(function(){Message('news_texte','news_photo')});
</script>Code : Tout sélectionner
/* Témoignages */
#conteneur td {
width : 75px;
}
#conteneur {
height : 175px;
width : 100%;
border : 0px solid black;
}Code : Tout sélectionner
<table id = "conteneur">
<tr>
<td>
<img id = "news_photo" src= "<?php if (isset($tab_temoignages[0]['image'])) echo $tab_temoignages[0]['image']; else echo 'sites/all/images/empty_tem.jpg' ?>" />
</td>
<td id = "news_texte">
<?php if (isset($tab_temoignages[0]['text'])) echo $tab_temoignages[0]['text']; ?>
</td>
</tr>
</table id = "conteneur">Vous pouvez voir ça ici, en bas, pour témoignages : (j'enlèverai l'url si besoin après" />
<?php if (isset($tab_temoignages[0]['text'])) echo $tab_temoignages[0]['text']; ?>
Code : Tout sélectionner
AddLoad_JS(function(){Message('news_texte','news_photo')});
ça c'est pas gagné d'avance : adresser directement les éléments d'un tableau est plus rapide que d'employer une fonction pour décompiler une copie du tableau... ton tableau temporaire est reconstruit à chaque passage dans la boucle, en contre partie j'incrémente juste une variable.... sauf qu'il prendra beaucoup plus niveau proc...Mais si mon code est plus verbeux, il est aussi plus sécurisé (pas de variables globales et vérification des variables du tableau), plus optimisé pour l'affichage des images qui s'afficheront instantanément, plus respectueux du DOM W3C, et plus optimisé car utilisant moins de mémoire pour le navigateur en cas d'un tableau de news/images un peu volumineux![]()
ouai si tu veux insérer du HTML c'est galère en gros faut presque recréer tout un parsé DOM et la ...Là ou tu va plus vite c'est d'employer innerHTML. Simplement en évitant de l'utiliser, j'essaie de montrer comment manipuler les éléments du DOM, c'est plus didactique. Mais là dessus je n'ai pas une position arrêtée (ça serait difficile). Outre sa facilité d'utilisation, innerHTML est très pratique surtout, comme tu le dis, si l'on veut formater du texte
![]()
Code : Tout sélectionner
<table id = "conteneur">
<tr>
<td>
<img id = "news_photo" src= "<?php if (isset($tab_temoignages[0]['image'])) echo $tab_temoignages[0]['image']; else echo 'sites/all/images/empty_tem.jpg' ?>" />
</td>
<td id = "news_texte">
<?php if (isset($tab_temoignages[0]['text'])) echo $tab_temoignages[0]['text']; ?>
</td>
</tr>
</table id = "conteneur">Code : Tout sélectionner
<table id = "conteneur">
<tr>
<td>
<img id = "news_photo" src= "" />
</td>
<td id = "news_texte">
</td>
</tr>
</table id = "conteneur">