[REGLE] Conseils pour améliorer le diaporama en PHP

Salut à toutes et à tous,

Bon cela faisait deux mois que je n’avais plus internet, suite à mon déménagement, et à l’efficacité de Free pour me faire passer en dégroupage totale… :frowning:

J’ai mis en ligne un petit site pour vendre mon appart’(s’il y en a qui sont intéressé sebiseb.net/), et je souhaiterais faire en sorte que chaque pièce énoncé on puisse cliqué et que cela nous renvoie sur l’image - tout en laissant la possibilité de faire tourner le diaporama.

fichier index.php :

[code]<?php echo '<?xml version="1.0" encoding="UTF-8"?>’; ?>

Immobilier - Duplex F3 - EPERNON
Vend appartement F3 en duplex - 169.000 €
EPERNON(28) à 45 min. de Montparnasse

Appartement 3 pièces de style ancien avec poutres apparentes, vue sur étang et parc boisé, comprenant ;

  • salle à manger
  • grande cuisine aménagée
  • 2 chambres
  • salle de bain
  • toilette indépendante
  • cave
surface : 67m2 loi Carrez,
chauffage au gaz,
accès à la gare et aux commerces à pieds,
PAS DE CHARGE DE COPROPRIÉTÉ,
PRIX (sans frais d'agence) : 169.000 € NÉGOCIABLE


site mis à jour en février 2008
contactez nous
[/code]

fichier diapo.php

<?php header ('Content-type: multipart/x-mixed-replace; boundary="cachange"'); if ($dh = opendir('.')) { while (($file = readdir($dh)) !== false) { if (filetype($file) == 'file') { $finfo = @getimagesize($file); $mime = $finfo[mime]; if (substr ($mime, 0, 6) == 'image/') { echo "--cachange\r\n"; echo "content-type: ".$mime."\r\n\r\n"; echo file_get_contents($file); echo "\r\n"; flush(); sleep(5); } } } closedir($dh); echo "--cachange--"; } ?>

Attention, mon niveau en php est “newbie” !

J’ai pas testé mais si tu rajoute un événement onClick sur ta balise image?

OnClick sur une c’est pas un peut trop IE ça ?? ton onClick devrait être dans le autour de ton

Du moment que ça marche :smiley:

salut,

Je ne suis pas certain que l’événement onclik soir IE…mais plutôt javascript.

Je pense que tu dois créer l’événement comme suit :

Ensuite tu crée une fonction en Javascript qui s’appelle “afficheimage” à laquelle tu passe l’argument envoyé par le “onclick”. L’argument sera en fait le nom de la photo à afficher.
Cette fonction javascript va créer de toutes pièces un mini page HTML (sans les boutons, etc…) en y insérant la photo passée en argument.

l’evenement onclick est bien du javascript que viens faire IE la dedans?

De toutes facons c’est pour une utilisation temporaire donc on se fou un peu que ce soit nickel chrome derrière tout ce que sebiseb doit vouloir c’est que ça fonctionne vite et bien :wink:

Il voulait parler de ce que recommande le w3c

Salut,

Tout ce que j’ai trouvé a ce sujet sur la documentation du w3c c’est ce lien qui dit clairement que l’on peut mettre un onclick dans une balise img : w3.org/TR/html401/struct/obj … l#edef-IMG

Edit : si vous avez plus d’infos là dessus je suis preneur ^^

Ce n’est pas grave c’est du JavaScript qu’il faut utiliser pour ce genre de choses :slightly_smiling: (php étant côté serveur ça va être dur de toucher au dom ^^).

Quelques pistes pour que tu arrive a faire ton code JavaScript :

  • Fonctionner sans php de préférence (j’adore php mais dans le cas présent il n’est pas vraiment adapté).
  • Mettre donc une image “normale” au départ.
  • Te faire une fonction javascript qui fasse le diaporama.
  • Te faire une autre fonction qui puisse être appellée via on onclick judicieusement placé sur le nom des pièces. Cette fonction doit permettre de modifier le diaporama en cours (j’entend par là faire s’afficher l’image de la pièce souhaitée).

Bon, ce sont juste des idées, je vais regarder cette aprem si je peut faire un script de ce genre (et au passage rectifier quelques petits points, cf ci dessous)

Afin d’améliorer ta page, tu peut regarder les points suivants :

  • Ne pas utiliser des
    etc pour faire te titre, mais utiliser les

  • Enlever ton de la page et le mettre dans le fichier css (dans ta page met un par exemple)

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?> - Inutile d’utiliser php pour afficher ceci, ça fait perdre du temps (interpréteur oblige). Un simple <?xml version="1.0" encoding="UTF-8"?> est bien plus simple, lisible et rapide.

  • Ne pas mettre ton adresse mail en clair, histoire d’éviter les spambots.

Merci à tous,

J’ai essayé quelques trucs avec onclick, mais rien de satisfaisant… parce que je crois, je ne maîtrise pas le language. Bon, dès que j’ai un peu de temps je m’y recolle…

…pour le mail, oui, j’ai commencé à faire un formulaire - Mais il faut que je finalise avant de mettre en ligne ! Je vous donne des nouvelles dès que j’ai le temps de faire avancer les choses sérieusement :frowning:

Re !

J’ai fait un petit truc, en espérant que ceci te convienne :wink: N’hésite surtout a faire part de tes remarques, modifier le code etc.

Spécification :

  • Les photos doivent être placées dans un dossier nommé img et toutes renommées en photo_0.jpg, photo_1.jpg, photo_2.jpg etc (au besoin change le code si tu veux autre chose).
  • Le fichier diapo.js se trouve à la racine.

Nota :

  • Dans diapo.js, pense a changer le nombre max de photos dans la fonction faitDiapo().
  • Dans index.htm, a rajouter les événements lors du click sur le nom de la pièce et a adapter le numéro passé en paramètre au numéro de la photo.
  • Le diaporama ne s’arrête jamais, même si tu clique sur le nom d’une pièce pour la regarder.
  • Lorsque tu clique sur le nom d’une pièce, l’image de la pièce reste plus longtemps “chargée” que dans le diaporama normal. Le diaporama reprend ensuite.

Contenu de index.htm (inutile de garder le .php vu qu’il n’y a plus de php ^^)

[code]<?xml version="1.0" encoding="UTF-8"?>

Immobilier - Duplex F3 - EPERNON
<!-- En-tête de la page -->

<h1>Vend appartement F3 en duplex - <span>169.000 €</span></h1>
<h2>EPERNON(28) à 45 min. de Montparnasse</h2>
<hr />


<!-- Corps de la page -->

<div id="diaporama">
	<img id="diapo" src="img/photo_0.jpg" alt="diaporama" width="544" height="408" />
</div>

<div>

	<p>
	Appartement 3 pièces de style ancien avec poutres apparentes, vue sur étang et parc boisé, comprenant :
	</p>

	<ul>
		<li onclick="changeDiapo(0)">salle à manger</li>
		<li>grande cuisine aménagée</li>
		<li onclick="changeDiapo(1)">2 chambres</li>
		<li>salle de bain</li>
		<li>toilette indépendante</li>
		<li>cave</li>
	</ul>

	<ul>
		<li><b>surface :</b> 67m<sup>2</sup> loi Carrez,</li>
		<li><b>chauffage</b> au gaz,</li>
		<li><b>accès</b> à la gare et aux commerces à pieds,</li>
		<li><b>PAS DE CHARGE DE COPROPRIÉTÉ,</b></li>
		<li><b>PRIX (sans frais d'agence) :</b> 169.000 € NÉGOCIABLE</li>
	</ul>

</div>


<!-- Pieds de la page -->

<div id="bas">
	<br />
	<hr />
	<p>site mis à jour en février 2008</p>
	<p><a href="mailto:sebiseb(at)free(dot)fr">contactez nous</a></p>
</div>
[/code]

Contenu de style.css

[code]body {
width: 984px;
background: #ffffff;
color: #000000;
}

p {
text-indent: 16px;
text-align: justify;
}

a:link, a:visited, a:active {
color: #0000ff;
text-decoration: none;
}

a:hover {
color: #ff0000;
text-decoration: none;
}

h1 {
font-size: 36px;
font-weight: bold;
}

h1 span {
font-size: 36px;
font-weight: normal;
color: #990000;
}

h2 {
font-size: 36px;
font-weight: normal;
}

ul {
text-align: justify;
text-indent: 8px;
margin-left: 16px;
}

li {
margin-left: 16px;
}

ul + ul {
list-style-type: none;
}

#diaporama {
float: left;
text-align: center;
margin : 16px;
}

#bas {
clear: both;
text-align: center;
}

#bas p {
float: left;
text-align: left;
font-size: 10px;
}

#bas p + p {
float: right;
text-align: right;
font-weight: bold;
font-size: 1em;
}[/code]

Contenu de diapo.js

[code]var timer;

function faitDiapo(i)
{
document.getElementById(“diapo”).src=“img/photo_”+i+".jpg";

if (i >= 2)
	i=0;
else
	i++;

timer = setTimeout("faitDiapo("+i+")",4000);

}

function changeDiapo(i)
{
document.getElementById(“diapo”).src=“img/photo_”+i+".jpg";
clearTimeout(timer);
timer = setTimeout(“faitDiapo(”+i+")",4000);
}[/code]

[Edit : mais pourquoi les boutons citer et éditer sont si proches l’un de l’autre ? <_<]

[quote=“Ashgenesis”]l’evenement onclick est bien du javascript que viens faire IE la dedans?

De toutes facons c’est pour une utilisation temporaire donc on se fou un peu que ce soit nickel chrome derrière tout ce que sebiseb doit vouloir c’est que ça fonctionne vite et bien :wink:[/quote]
C’est IE qui a le premier accepté les évènements sur une balise IMG, Netscape 4 ne savait pas l’interpréter.

Tycho Brahe, MERCI BEAUCOUP
pour ton travail… C’est là que l’on voit la puissance d’une communauté open source !

Cependant le OnClick ne semble pas fonctionner ni sur firefox, et sur ie7… Mais au moins le diaporama tourne vraiment en boucle.

Bon je vais essayer d’adapter un petit le tout, le customiser un peu quoi. En tout cas,
et encore MERCI !

pour faire mieux on peut faire du javascript non intrusif:
pompage.net/pompe/javascript … hapitre-1/
pompage.net/pompe/javascript … hapitre-2/
pompage.net/pompe/javascript … hapitre-3/
pompage.net/pompe/javascript … hapitre-4/

De rien :wink:

Chez moi ça marche très bien, c’est juste qu’il n’y a pas de curseur de forme spéciale ou autres trucs de ce genre (c’est déroutant quand on ne le sais pas). Ce détail peut se régler facilement avec un peut de css ^^

j’ai un peu cafouillé, mais maintenant c’est ok -> sebiseb.net/
MERCI ENCORE POUR TOUT TON AIDE !

Juste pour dire que j’ai remplacer le onclick, par onmouseover, fonctionne qui réalise en fait exactement ce que j’avais en tête au départ - et que j’avais utiliser il y a très longtemps pour une bidouille internet. J’ai également balisé les noms des pièces par “a” pour qu’au passage de la souris la couleur du lien soit modifier.