Page 1 sur 2
Actualisation d'image
Posté : 22 déc. 2015, 21:05
par cite carter
Bonjour
J'ai dans une bdd plusieurs entrées avec des images.
Sur mon site je fais apparaitre une de ces images. je voudrais que cette image change après quelques secondes sans devoir réactualiser la page entière.
Voici le code que j'utilise pour récupérer l'image de ma bdd:
Code : Tout sélectionner
$rst = $bdd->query('SELECT image from matable order by Rand() LIMIT 0, 1');
while($donnees = $rst->fetch())
{
$image = nl2br($donnees['image']);
if (empty($image)) {
echo '<img src="imagedefaut.jpg" />';
}
else {
echo '<img src="image/'.$donnees['image'].'" alt="image"/>';
}
}
$rst->closeCursor();
On m'a indiqué qu'il était possible de le faire avec:
en récupérant la liste des images dans un tableau, puis de transformer ce tableau au format json
mais je n'y connais rien en javascript, json...
Quelqu'un pourrait-il m'éclairer sur la procédure, svp.
Re: Actualisation d'image
Posté : 22 déc. 2015, 22:29
par or 1
http://www.guillaumevoisin.fr/developpe ... vec-jquery
où ton php doit générer dynaniquement cette partie :
<ul class="diaporama">
<li><img src="img/galerie/image1.jpg" alt="Image 1" /></li>
<li><img src="img/galerie/image2.jpg" alt="Image 2" /></li>
<li><img src="img/galerie/image3.jpg" alt="Image 3" /></li>
<li><img src="img/galerie/image4.jpg" alt="Image 4" /></li>
<li><img src="img/galerie/image5.jpg" alt="Image 5" /></li>
</ul>
du code html.
Re: Actualisation d'image
Posté : 22 déc. 2015, 23:19
par cite carter
J'ai déjà utilisé ce genre de diaporama ou autre slider, mais je cherche une solution plus légère qui ne ferait que actualiser l'image ou le div qui la contient.
Re: Actualisation d'image
Posté : 23 déc. 2015, 00:49
par or 1
la base, c'est cela :
document.getElementById("imageid").src="../template/save.png";
mais vu que tu dis ne rien n'y connaitre, cela sera plus à mettre en place qu'un diaporama.
Re: Actualisation d'image
Posté : 23 déc. 2015, 16:50
par KriSpiX
Voici un exemple simple juste en JS.
Code : Tout sélectionner
<img src="#" id="image" />
<script type="text/javascript">
var images = ['image1.png', 'image2.jpg', 'image3.png'];
var i = 0;
function ImageRotation() {
document.getElementById("image").src = images[i];
(i < images.length - 1) ? i++ : i=0;
setTimeout("ImageRotation()", 2000)
}
window.onload = function(){
ImageRotation();
}
</script>
Re: Actualisation d'image
Posté : 23 déc. 2015, 20:58
par cite carter
Super, mais comment introduire mes images récupérées par une requête sql ?
Re: Actualisation d'image
Posté : 23 déc. 2015, 21:03
par or 1
tu génères la ligne :
var images = ['image1.png', 'image2.jpg', 'image3.png'];
à partir du php qui fait une requete sql sur la table adéquate.
Re: Actualisation d'image
Posté : 23 déc. 2015, 21:29
par cite carter
ça c'est un gros problème pour moi, ça fait une semaine que je patauge.
Re: Actualisation d'image
Posté : 23 déc. 2015, 21:39
par or 1
il y a pourtant une bonne base de départ avec le code que tu as donné :
$rst = $bdd->query('SELECT image from matable order by Rand() LIMIT 0, 1');
while($donnees = $rst->fetch())
{
$image = nl2br($donnees['image']);
if (empty($image)) {
echo '<img src="imagedefaut.jpg" />';
}
else {
echo '<img src="image/'.$donnees['image'].'" alt="image"/>';
}
}
$rst->closeCursor();
Re: Actualisation d'image
Posté : 24 déc. 2015, 00:31
par cite carter
J'arrive à afficher une image de la bdd mais pas d'actualisation.
mon code php:
Code : Tout sélectionner
$rst = $bdd->query('SELECT image from matable LIMIT 0, 1');
while($donnees = $rst->fetch())
{
$tableau[] = $donnees;
}
foreach($tableau as $cle)
{
foreach($cle as $leChamp => $valeur)
{
}
}
if (empty($valeur)) {
echo '<img src="imagedefaut.jpg" id="image"/>';
}
else {
echo '<img src="image/'.$valeur.'" id="image" />';
}
$rst->closeCursor();
Le script:
Code : Tout sélectionner
var images = <?php echo json_encode($valeur); ?>[];
var i = 0;
function ImageRotation() {
document.getElementById("image").src = images[i];
(i < images.length - 1) ? i++ : i=0;
setTimeout("ImageRotation()", 2000)
}
window.onload = function(){
ImageRotation();
}
Re: Actualisation d'image
Posté : 04 janv. 2016, 03:06
par cite carter
Bonne année à tous.
Je suis toujours à la recherche d'une solution à mon problème et de préférence sans ajax.
Re: Actualisation d'image
Posté : 04 janv. 2016, 16:55
par Patriboom
Tu peux faire ça en javascript à même la page.
Est-ce que ça t'intéresse?
En PHP, tu emplis un tableau javascript des noms de tes images.
En boucle javascript, tu renouvelles ton image à l'aide de la commande que tu cites setInterval
En pur PHP, je ne vois pas de solution, mais il y a une passe-passe que tu peux faire en PHP-javascript dans iframe.
Le iframe est une page PHP qui lit ta bdd et choisis une image. Le javascript de cet iframe rafraîchit l'image de la page principale et commande un rafraîchissement de l'iframe.
Re: Actualisation d'image
Posté : 04 janv. 2016, 20:22
par cite carter
En PHP, tu emplis un tableau javascript des noms de tes images.
En boucle javascript, tu renouvelles ton image à l'aide de la commande que tu cites setInterval
C'est exactement ce qui m’intéresse, mais je rame dessus depuis quinze jours sans réussite, sachant que je ne veux pas entrer les noms des images manuellement mais l'automatiser par des requètes dès qu'ils sont ajoutés à la bdd .
Re: Actualisation d'image
Posté : 04 janv. 2016, 21:13
par Patriboom
Alors, il te suffit de faire une boucle de lecture de ta bdd
Code : Tout sélectionner
<script>
var imgs = new Array();
<?php
while ($Quel = mysqli_fetch_array($resultat)) {
echo "imgs[] = '".$Quel["NomImage"]."';";
}
?>
</script>
Re: Actualisation d'image
Posté : 05 janv. 2016, 16:43
par cite carter
Code : Tout sélectionner
<img src="#" id="image" />
<script type="text/javascript">
var images = ['image1.png', 'image2.jpg', 'image3.png'];
var i = 0;
function ImageRotation() {
document.getElementById("image").src = images[i];
(i < images.length - 1) ? i++ : i=0;
setTimeout("ImageRotation()", 2000)
}
window.onload = function(){
ImageRotation();
}
</script>
Comment remplacer la ligne
par la boucle de lecture de la bdd ?
J'ai tenté plusieurs approches sans succès.