[php + Ajax] include "dynamique?" [résolu]

include "dynamique?" [résolu] [php + Ajax] - PHP - Programmation

Marsh Posté le 20-04-2008 à 13:41:43    

Salut, j'ai un nouveau problème.
 
J'ai cherché sur le net comment faire pour que mes menus et header ne se recharge pas à chaque changements de pages. Je ne voulais pas utiliser les Iframes donc j'ai pensé à Ajax avec php.
 
 
Avec quelques recherches et un peut de bidouillage j'arrive à ceci:
 
Dans mon fichier index.php:  
 

Code :
  1. function request(url,cadre) {
  2. var XHR = null;
  3. if(window.XMLHttpRequest) // Firefox
  4.  XHR = new XMLHttpRequest();
  5. else if(window.ActiveXObject) // Internet Explorer
  6.  XHR = new ActiveXObject("Microsoft.XMLHTTP" );
  7. else { // XMLHttpRequest non supporté par le navigateur
  8.  alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  9.  return;
  10. }
  11.  // envoie de la requête, methode GET et de l'url
  12. XHR.open("GET",url, true);
  13.  // on guette les changements d'état de l'objet
  14. XHR.onreadystatechange = function attente() {
  15.  // l'état est à 4, requête reçu !
  16. if(XHR.readyState == 4)     {
  17.  // ecriture de la réponse
  18. document.getElementById(cadre).innerHTML = XHR.responseText;
  19.    }
  20. }
  21. XHR.send(null);  // le travail est terminé
  22. return;
  23. }


 
et ceci dans mon "corps" toujours dans le fichier index.php:

Code :
  1. <?php
  2. if($_GET['p']=="accueil" ) {
  3. include("accueil.html" );
  4.     exit;
  5. }
  6. if($_GET['p']=="inscription" ) {
  7.  include("inscription.html" );
  8.     exit;
  9. }
  10. ?>


 
Source: http://www.graphiks.net/cours/ajax [...] -ajax.html
 
Donc ici j'ai bien ces liens qui marchent:
 
http......blabla/index.php?p=accueil  
et
http......blabla/index.php?p=inscription
 
qui s'ouvre presque correctement mais le soucis c'est que la page se recharge entièrement  :(


Message édité par Aslan117 le 22-04-2008 à 16:30:32
Reply

Marsh Posté le 20-04-2008 à 13:41:43   

Reply

Marsh Posté le 20-04-2008 à 13:48:03    

A ta place j'aurai fait une variable session booléenne:
 

Code :
  1. if (!isset($_SESSION['display']) || $_SESSION['display'] == false) {
  2.  require_once('mon_header_dynamique.php'); // L'animation est jouée
  3.  $_SESSION['display'] = true;
  4. }
  5. else {
  6.  require_once('mon_header_statique.php'); // Correspond à l'état final de l'animation
  7. }


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 20-04-2008 à 13:52:10    

Euh dsl mais je n'ai pas d'animation  :??:  Dynamique ne correspond pas à mon probléme je pense finalement :/

Reply

Marsh Posté le 20-04-2008 à 14:06:10    

On peut pas faire d'include en ajax, tu dois avoir un div (xmlhttp) qui affichera le contenue de tes pages appelées en ajax et chacun de tes liens doit être du style :

Code :
  1. <a href="" onclick="request('donne.php?quoi=ha','xmlhttp');return(false)">lien 1</a>


Reply

Marsh Posté le 20-04-2008 à 14:24:26    

J'ai déjà essayer ca avant ma phase de bidouillage, mais le problème est que l'adresse ne change pas. Mais la page ne se charge pas complètement certes.  
De plus lorsque je replace la phrase "bonjour toi" en ajoutant des caractères comme:  ^éàèç, ça les remplace par un symbole (un carré blanc avec à l'intérieur un point dintérogation noir)
 
Je ne comprends vraiment plus rien :s

Message cité 1 fois
Message édité par Aslan117 le 20-04-2008 à 14:26:15
Reply

Marsh Posté le 20-04-2008 à 14:34:59    

C'est normal que l'url du navigateur ne change pas puisque c'est la même page qui reste affichée, la but de l'ajax c'est de modifier le contenue sans recharger la page justement.
Pour les caractéres c'est un problème d'encodage, utilises l'UTF-8 ou utf8_decode();


Message édité par masterpsx le 20-04-2008 à 14:35:16
Reply

Marsh Posté le 20-04-2008 à 14:48:52    

Oki je vais voir sa. Mais j'ai déjà vu des sites avec l'adresse qui change (?=accueil tousa) et qui ne recharge pas complètement la page, comment faire dans ce cas la?
 
Et sinon est t-il possible de mettre " <a href="" onclick="request('donne.php?quoi=ha','xmlhttp');return(false)">lien 1</a> " dans des boutons en flash?

Reply

Marsh Posté le 20-04-2008 à 14:58:52    

C'est surement une impression que le site ne se recharge pas entiérement, ca depend du navigateur, du serveur, si le gzip est actif ou pas ect..
 
Pour le flash je suis pas un spécialiste mais il me semble que c'est possible d'utiliser du javascript avec.

Reply

Marsh Posté le 20-04-2008 à 15:02:18    

Merci beaucoup pour ton aide en tout cas  :)  Je vais de ce pas dans la section flash/actionscript pour demandé  :jap:

Reply

Marsh Posté le 20-04-2008 à 15:47:36    

Euh, on met ou l'encodage déjà  :??:

Reply

Marsh Posté le 20-04-2008 à 15:47:36   

Reply

Marsh Posté le 20-04-2008 à 16:22:12    

Dans <head> avec une balise meta :

Code :
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


Reply

Marsh Posté le 20-04-2008 à 16:30:25    

Un grand merci  :jap:  Tu vient de faire un perfect  :D

Reply

Marsh Posté le 21-04-2008 à 13:49:25    

Finalement ça ne marche pas car ce n'est que le fichier inclut qui comporte des symboles.

Reply

Marsh Posté le 21-04-2008 à 14:01:28    

Utilises utf8_decode(); alors pour corriger ton contenue : http://fr2.php.net/utf8_decode

Reply

Marsh Posté le 21-04-2008 à 14:41:53    

si tu as envie de gagner du temps utilise prototype ou jquery (frameworks js)
de plus, ton site aura plus de chance de fonctionner sur la plupart de navigateurs
 
http://jquery.com/
http://www.prototypejs.org/
 
et n'oublie pas que tel quel, ton site sera mal indexé par les moteurs de recherche.
à moins de faire du "unobtrusive javascript"...

Reply

Marsh Posté le 21-04-2008 à 15:05:12    

Merci à vous deux, je regarde de suite  :)

Reply

Marsh Posté le 21-04-2008 à 16:04:13    


Tout a fait, il y a aussi les fonctions type htmlentities() et htmlspecialchars() qui peuvent poser problème si on ne leur précise pas l'encodage, d'ou l'interet de utf8_decode() pour éviter de revoir tout son code.

Reply

Marsh Posté le 22-04-2008 à 11:22:01    

Bon alors j'ai des news, Dans mon fichier index.php j'ai afit un include du fichier accueil.php, les écritures sont normaux, mais c'est lorsque l'include se fait avec cette méthode qu'apparaît les symboles: http://www.graphiks.net/cours/ajax [...] -ajax.html
 
preuve: http://aslan.infographie.free.fr/Autres/symboles.PNG
 
Ici c'est un screen pris de la même page, en haut il y a l'inscule spéciale (comme sur le lien du haut) et en bas l'incude normale ( <?php include("" )?> ).
 
Je n'ai pas compris cette histoire de frameworks :/

Message cité 1 fois
Message édité par Aslan117 le 22-04-2008 à 11:22:16
Reply

Marsh Posté le 22-04-2008 à 15:20:06    

Aslan117 a écrit :

Je n'ai pas compris cette histoire de frameworks :/

exemple avec jquery pour charger une url dans un div :

Code :
  1. $('#div1').load('script.php');

ce que tu fais en 27 lignes, tu pourrais le faire en une seule, et ça serait compatible avec la plupart des navigateurs...
 
pour la definition de framework : http://fr.wikipedia.org/wiki/Framework

Reply

Marsh Posté le 22-04-2008 à 15:51:04    

J'ai essayer rien à faire :/

Reply

Marsh Posté le 22-04-2008 à 16:12:16    

On t'as déja expliqué que ta page qui est incluse doit être soit au format UTF-8 (si c'est une vulgaire page html) soit toutes les variables de texte passés par utf8_decode() (si c'est du php).

Reply

Marsh Posté le 22-04-2008 à 16:31:18    

Merci beaucoup ça marche  :jap:  :jap:  (pourquoi ça n'a pas marché juste avant je ne sais pas  :pfff: )

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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