"re-executer " un script php via un bouton html

"re-executer " un script php via un bouton html - HTML/CSS - Programmation

Marsh Posté le 22-02-2011 à 21:29:05    

bonsoir !
 
j'ai integré dans une div un script de rotation aléatoire d'images (en gros a chaque rafraichissement de page il va chercher une image au pif dans un repertoire que j'ai indiqué) et je voulais savoir si il etait possible de "relancer" a la demande le script php pour pouvoir changer le contenu de la div sans avoir a recharger entierement la page ?  
 
voici en gros comment c'est construit (c'est simplissime, mais en php je panne pas grand chose donc je sais pas trop comment re executer rotate.php au moyen d'une commande "onclick" logé dans une autre div par exemple)
 

Code :
  1. <img id="fond" src="img/rotate.php" alt="" />


 
auriez vous une idée ?

Reply

Marsh Posté le 22-02-2011 à 21:29:05   

Reply

Marsh Posté le 23-02-2011 à 01:07:48    

Oui, il est possible de recharger uniquement le contenu d'un div avec du code PHP, sans tout recharger.
 
C'est une technique qui s'appelle ajax, et qui nécessite aussi un petit peu de javascript.
 
Faire une recherche sur le web pour des tutoriaux à propos d'Ajax. La première fois qu'on voit, on peut penser que c'est un peu compliqué (et c'est pour cela que je ne l'explique pas ici), mais avec quelques exemples et un peu de pratique, on arrive à s'en sortir.
 
Bon courage !

Reply

Marsh Posté le 23-02-2011 à 08:29:40    

Du AJAX en PHP ???? Oo wow c'est quoi ce topic.
Relis la définition de AJAX :
http://fr.wikipedia.org/wiki/Ajax_%28informatique%29

Reply

Marsh Posté le 23-02-2011 à 10:00:37    

Encore un posteur qui insulte les autres !  :o  
 
Et en plus, à tort !   :kaola:  
 
Voir http://www.w3schools.com/php/php_ajax_database.asp
http://gael-donat.developpez.com/web/intro-ajax/  
http://www.xul.fr/scripts/ajax-php.php  
http://j-seignalet.developpez.com/ [...] alendrier/
http://www.editeurjavascript.com/t [...] script.php
 
Bien sûr que Ajax et PHP vont ensemble.
Ce n'est pas obligatoire, mais cela arrive quand le langage utilisé du côté du serveur est le PHP.
Si on utilise autre chose, côté serveur, ce sera autre chose.
Mais, en l’occurrence, c'est PHP qui est utilisé, et donc on n'aura un appel de Javascript vers PHP, puis au retour, une mise dans le div par Javascript.
 
cetplus, j'espère que vous allez vous excusez !
Ou bien si vous éditez votre message, alors j'éditerais le mien.

Reply

Marsh Posté le 24-02-2011 à 02:59:28    

Hallucinant !
Déjà je n'ai jamais insulté qui que ce soit.
Ensuite je suis désolé : le AJAX est écrit en Javascript.
Il peut y avoir une interaction (tu le cites toi même).
 
Mais quand j'ai vu :
"Oui, il est possible de recharger uniquement le contenu d'un div avec du code PHP, sans tout recharger. C'est une technique qui s'appelle ajax, et qui nécessite aussi un petit peu de javascript."
 
C'était pas du tout clair, comme tu l'a présenté.
Donc je m'excuse de la précipitation, vu que tu as parfaitement compris.

Reply

Marsh Posté le 24-02-2011 à 18:57:06    

re, merci pour vos réponse, ne vous enflammez pas  :jap: , je suis allé regarder du coté d'ajax et effectivement ça colle, mieux que ça j'ai trouvé un fonction jquery qui simplifie encore la chose (pratique vu que mon site comportait deja du jquery, j'avai la librairie loadé et la syntax en mode "assisté" du jquery me scie bien  :wahoo: ) par contre du coup j'ai un nouveau probleme pour cette meme page, toujours relative au "rechargement" du fichier php rotate.php :
 
en fait je me suis rendu compte que je n'arrivait pas a rafraichir le fichier en question, je m'explique : en gros j'ai commencé par proceder comme ceci :
 
dans ma page principale il y a ma div dont le contenu doit changer quand on clique sur un bouton :
 

Code :
  1. <div id="fond_ouais"></div>

(je vous epargne le css qui lui correspond, de toute façon le probleme de vient pas de la ^^)
 
ainsi que le bouton :
 

Code :
  1. <div id="refresh"><img src="img/refresh.png"/></div>


 
et le script jquery :
 

Code :
  1. $(document).ready(function() { 
  2. $("#refresh" ).click(function(){
  3. $("#fond_ouais" ).load("fond.php" );
  4. });
  5. });


 
et voici la page "fond.php" qui contient juste la balise image avec le script rotate en source :
 

Code :
  1. <body>
  2. <img id="fond" src="img/rotate.php" alt="oui" />
  3. </body>


 
(pareil, y'a du css en plus mais je ne le mentionne pas ici)
 
donc en gros ça marche bien, mais une fois ! en gros je fais une preview, j'ai ma div vide, j'appui sur refresh et une image (différente a chaque tentative de preview) s'y loge, cependant si je réessaie d'appuyer sur refresh il me reload bien ma page fond.php mais ne change pas l'image, en gros il ne réexecute pas le fichier "rotate.php", il doit garder en mémoire l'image précedente peut etre...
 
l'autre solution que j'avai envisagé en premier lieu mais que je n'ai pas réussi a faire fonctionner c'est d'avoir ma balise image directement dans la div de ma page principale (et non pas dans une page tierce qui sera appelé par le jquery) et de tenter d'y recharger la source directement par jquery, mais la ça ne fonctionne pas du tout T_T ex :
 

Code :
  1. <head>
  2. (...)
  3. $(document).ready(function() {
  4. $("#refresh" ).click(function(){
  5.     $("#fond" ).load("qap03/rotate.php" );
  6.     });
  7. });
  8. (...)
  9. </head>
  10. <body>
  11. (...)
  12. <img id="fond" src="qap03/rotate.php" alt="oui" />
  13. <div id="refresh"><img src="img/refresh.png"/></div>
  14. (...)
  15. </body>


 
mais il ne se passe rien, quelqu'un aurait il une idée de comment je pourrais faire ?

Reply

Marsh Posté le 24-02-2011 à 19:13:16    

edit : trouvé !
 
j'ai trouvé une solution, très simple au final xD :
 

Code :
  1. <div id="fond_ouais"><img id="fond" src="qap03/rotate.php"/></div>
  2. <div id="refresh"><img src="img/refresh.png" onclick="fond.src='qap03/rotate.php'"/></div>


 
marche nickel !

Reply

Marsh Posté le 26-02-2011 à 02:09:08    

bon et bien en fait non, ça marche mais uniquement sur opera qui semble virer spontanément le rotate.php du cache lorsque je clique (du coup il l'éxecute de nouveau et me donne une nouvelle image) sinon pour FF, IE et Chrome , il reste coincé sur la meme image (en gros il ne relance pas le script de randomisation et reste sur la premiere image trouvée) du coup ce qu'il faudrait c'est que je trouve un moyen de lui dire "vide le cache avant de recharger rotate.php" lorsque je clique sur refresh pourqu'il n'ai pas le reflexe (logique ceci dit) de réutiliser ce qu'il a deja utilisé une fois. Est-ce possible ? (j'ai essayer la réactualisation de div en ajax et j'ai le meme probleme, en fait ça vient du fait que contrairement a beaucoup de témoignage que j'ai lu concernant les utilisation d'ajax, genre actualiser une fenetre de chat, une pendule etc... la mon fichier php reste le meme, c'est un randomizer, du coup il le recharge pas et garde ce qu'il a deja.
 
Du coup faudrai vraiment que je trouve un moyen de vider le cache du navigateur de l'utilisateur (ce qui n'est pas sympa du tout) ou alors plus chouette, d'empecher le script rotate.php de se mettre en cache lorsqu'il est executer (du coup le navigateur le ré executera vraiment a chaque fois) est-ce possible ?

Reply

Marsh Posté le 26-02-2011 à 03:29:26    

Salut.
Voici un code source antérieur que j'utilisais pour mes fonds écrans: (si cela peut t'aider)

Code :
  1. <html>
  2. <script language="Javascript">
  3. <!--
  4. function mote()
  5. {
  6. var doc=document.getElementById('fond');
  7. var math=Math.floor(Math.random() * 5) + 1;
  8. document.title = math;
  9. switch(math){
  10. case 1:doc.src="1.jpg";break;
  11. case 2:doc.src="2.jpg";break;
  12. case 3:doc.src="3.jpg";break;
  13. case 4:doc.src="4.jpg";break;
  14. case 5:doc.src="5.jpg";break;
  15. }}
  16. //-->
  17. </script>
  18. <body onLoad="javascript:mote();" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0" bgcolor="#A0A0F6">
  19. <p><img id="fond" src="" width="1254" height="810"></img></p>
  20. </body></html>
 

Voili, voilou. Bonne chance !

 

Edit : Est-ce que je peux voir ton php ? Tu nous en parles, mais on ne sais pas de quoi il s'agit.
Une autre solution que je te propose, c'est d'incrémenter directement ton image dans un fichier .php ce qui évite les problèmes.
Je veux dire que la page que tu consultes avec l'image est elle même le script php.

 

Edit2 : Tu veux la mettre où ton image ? Sur ton site, sur un blog, sur un forum ?


Message édité par cetplus le 26-02-2011 à 07:02:54
Reply

Marsh Posté le 26-02-2011 à 07:02:26    

Salut.
Finalement je crois avoir compris ton problème.
Voici ce qu'il te faut :

Code :
  1. <div id="loadpix"><img src="http://pwnt.co.uk/sigs/quotes/index.php?load=11.893012598639508"></div>
  2. <a onclick="javascript:var doc = document.getElementById('loadpix').innerHTML;var dic = document.getElementById('loadpix');if(doc.indexOf('t1')&gt;=0){dic.innerHTML = '&lt;img src=\'http://pwnt.co.uk/sigs/quotes/index.php?load=t2\'&gt;';}else{var math=Math.random()*500;dic.innerHTML = '&lt;img src=\'http://pwnt.co.uk/sigs/quotes/index.php?load='+math+'\' &gt;';}">Refresh</a>
 

Tu appuis sur "Refresh" pour reloader l'image.
Le principe est simple, on initialise une variable 'Math' qui random un chiffre, puis on l'incrémente dans la page php avec $GET.
J'avais essayer avec le changement d'ID mais ça ne fonctionnait pas, car le navigateur comprenait ce qu'il fallait changer (pas tout quoi pour optimiser).
Voili, voilà tout le problème est résolu.

 

Edit: Je reviens pour mettre un code clair.
C'est bon, j'ai rectifié certain truc inutile : (menti, y a tout d'inutile  :ange: )

Code :
  1. <img src="http://pwnt.co.uk/sigs/quotes/index.php" id="banimg">
  2. <a href="" OnClick="javascript:document.getElementById('banimg').src='http://pwnt.co.uk/sigs/quotes/index.php?load='+Math.random()*500;">Rafraichir</a>
 

ou encore en ce qui te concerne :

 
Code :
  1. <img src="qap03/rotate.php" id="banimg">
  2. <a href="" OnClick="banimg.src='qap03/rotate.php?load='+Math.random()*500;">Rafraichir</a>
 

Tu peux tester : http://yarflam.web44.net/ext11/index.html  (te fis pas aux images, j'ai pris les 1ère que j'avais ^^)
Finalement tu m'as donné une idée formidable pour un de mes projets.


Message édité par cetplus le 26-02-2011 à 07:38:02
Reply

Marsh Posté le 26-02-2011 à 07:02:26   

Reply

Marsh Posté le 26-02-2011 à 14:55:50    

wahoo !!!  :) merci merci merci gars ça marche !! en gros le principe c'est de multiplier le resultat de rotate.php par un coeff en random donc différent a chaque fois qu'il est appelé ?

Reply

Marsh Posté le 27-02-2011 à 07:48:30    

crasse2 a écrit :

wahoo !!!  :) merci merci merci gars ça marche !! en gros le principe c'est de multiplier le resultat de rotate.php par un coeff en random donc différent a chaque fois qu'il est appelé ?

 

De rien  :)
C'est pas un coeff, c'est une variable bidon qui sert à recharger l'image; mais oui c'est ça.


Message édité par cetplus le 27-02-2011 à 07:52:03
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed