Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1775 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1720476
Aslan117
Posté le 20-04-2008 à 13:41:43  profilanswer
 

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
mood
Publicité
Posté le 20-04-2008 à 13:41:43  profilanswer
 

n°1720480
CyberDenix
Posté le 20-04-2008 à 13:48:03  profilanswer
 

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)
n°1720482
Aslan117
Posté le 20-04-2008 à 13:52:10  profilanswer
 

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

n°1720484
masterpsx
Aigloun foutougrafe
Posté le 20-04-2008 à 14:06:10  profilanswer
 

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>


n°1720490
Aslan117
Posté le 20-04-2008 à 14:24:26  profilanswer
 

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
n°1720493
masterpsx
Aigloun foutougrafe
Posté le 20-04-2008 à 14:34:59  profilanswer
 

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
n°1720501
Aslan117
Posté le 20-04-2008 à 14:48:52  profilanswer
 

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?

n°1720505
masterpsx
Aigloun foutougrafe
Posté le 20-04-2008 à 14:58:52  profilanswer
 

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.

n°1720507
Aslan117
Posté le 20-04-2008 à 15:02:18  profilanswer
 

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

n°1720523
Aslan117
Posté le 20-04-2008 à 15:47:36  profilanswer
 

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

mood
Publicité
Posté le 20-04-2008 à 15:47:36  profilanswer
 

n°1720552
masterpsx
Aigloun foutougrafe
Posté le 20-04-2008 à 16:22:12  profilanswer
 

Dans <head> avec une balise meta :

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


n°1720558
Aslan117
Posté le 20-04-2008 à 16:30:25  profilanswer
 

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

n°1720968
Aslan117
Posté le 21-04-2008 à 13:49:25  profilanswer
 

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

n°1720972
masterpsx
Aigloun foutougrafe
Posté le 21-04-2008 à 14:01:28  profilanswer
 

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

n°1721005
soju
One shot !
Posté le 21-04-2008 à 14:41:53  profilanswer
 

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"...

n°1721033
Aslan117
Posté le 21-04-2008 à 15:05:12  profilanswer
 

Merci à vous deux, je regarde de suite  :)

n°1721109
masterpsx
Aigloun foutougrafe
Posté le 21-04-2008 à 16:04:13  profilanswer
 


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.

n°1721598
Aslan117
Posté le 22-04-2008 à 11:22:01  profilanswer
 

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
n°1721916
soju
One shot !
Posté le 22-04-2008 à 15:20:06  profilanswer
 

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

n°1721961
Aslan117
Posté le 22-04-2008 à 15:51:04  profilanswer
 

J'ai essayer rien à faire :/

n°1721993
masterpsx
Aigloun foutougrafe
Posté le 22-04-2008 à 16:12:16  profilanswer
 

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).

n°1722010
Aslan117
Posté le 22-04-2008 à 16:31:18  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
petit souci avec variable d'un Input [résolu]prb de chemin dans un include
[Résolu] Affichage de la déconnexion d'un utilisateur[Résolu] Recherche avancée dans un array
[Résolu] Incorrect password avec Bookmark4U / php[Résolu]preg_match
[Résolu] Pb classe javascript[résolu] CSS-HTML - texte surligné !???
[Résolu] Problème de récupération 
Plus de sujets relatifs à : [php + Ajax] include "dynamique?" [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR