Ajax - Charger une page php [Réglé]
magikverse Membre non connecté
-
Booster Mortier
- Voir le profil du membre magikverse
- Inscrit le : 08/01/2008
- Site internet
Dans une page php contenant du html j'insère des liens comme ceci:
Ensuite plus bas je viens placer une div:
Le but serais que chaque lien affiche le contenu de la page 'php' dans la div 'result' plutôt que dans une nouvelle page.
Je sais qu'il est possible gràce au ajax d'éviter d'utiliser un IFRAME et c'est ce que je voudrais faire. Je précise qu'il s'agit d'une petite application d'environ 6 pages et que le référencement ne tient pas sa place.
J'ai essayer encore et encore, mais sans résultat, c'est pour quoi je viens demander votre aide.
Édité par magikverse Le 02/05/2008 à 00h21
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Dans la page appelante (pense à remplacer "chemin" par le chemin vers tes pages, tes pages doivent s'appeler pagenumero_numero.php:
<script type="text/javascript"> <!-- function XMLHttpRequest_page(idpage) { var xhr_object = null; var filename = "chemin/pagenumero_" + idpage + ".php"; var data = null; if(window.XMLHttpRequest) // Firefox xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else // XMLHttpRequest non supporté par le navigateur return; xhr_object.open("POST", filename, true); xhr_object.onreadystatechange = function() { if( xhr_object.readyState == 4 && xhr_object.status == 200 ) document.getElementById("result").innerHTML = xhr_object.responseText; } xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.send(data); } --> </script> <a href="javascript:XMLHttpRequest_page(1);">Le lien</a> <a href="javascript:XMLHttpRequest_page(2);">Le lien #2</a> <a href="javascript:XMLHttpRequest_page(3);">Le lien #3</a> <div id="result"></div>
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
magikverse Membre non connecté
-
Booster Mortier
- Voir le profil du membre magikverse
- Inscrit le : 08/01/2008
- Site internet
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
magikverse Membre non connecté
-
Booster Mortier
- Voir le profil du membre magikverse
- Inscrit le : 08/01/2008
- Site internet
Il y a un autre point que je n'arrive pas a éclaircir. Voilà en faite je travaille sur un générateur, l'utilisateur rempli les champs et ensuite on génére un résultat avec les informations de chaque champs rempli.
Exemple:
<?php require("generator.php"); form_meta("result.php"); ?>
Dans generator.php
<?php function form_meta($teamhq){ echo' <form id="form1" class="fieldset_content" name="form1" method="post" action="'.$teamhq.'"> <input name="name" type="text" id="name" class="text" size="30" maxlength="150" /> <input type="submit" name="valid" value="Générer la présentation" class="submit" /> </form> '; } function generation(){ $title = $_POST['title']; if(empty($name)) {} else { echo'[b][color=blue]Date de Sortie :[/color][/b] [i]'.stripslashes($name).'[/i] '; } } ?>
Dans result.php
<?php require("generator.php"); generation(); ?>
Grâce à toi Crowkait je peux naviguer entre chaque générateur par mon menu sans changer de page, lorsque je soumet je me rend sur "result.php" ce qui est tout à fait normal.
J'aimerais bien que ce résultat sois traité sur la même page sachant que la page contient ceci:
<?php include_once('../templates/header.html'); include_once('../templates/content.html'); include_once('../templates/footer.html'); ?>
Dans "header.html" j'ai mon menu et que dans "content.html" j'ai une div dans lequel s'affiche mes "formulaires". la page que je demande exemple generator_1.php
<?php require("generator.php"); form_meta("result.php"); ?>
Je crois que je n'ai oublier aucune information en faite cela me fait faire une bonne révision de ce que j'ai fais.
Merci énormément, déjà en très peu de temps j'ai bien avancée

EDIT: pour les accents et autre caractère la solution que j'ai trouver a été d'ajouter au echo afficher depuis ajax
echo utf8_encode('');
Édité par magikverse Le 02/05/2008 à 05h15
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
function generation(){ $title = $_POST['title']; if(empty($name)) {} else { echo'[b][color=blue]Date de Sortie :[/color][/b] [i]'.stripslashes($name).'[/i] '; } }
D'où sort la variable $name?? Je suppose que tu voulais faire ça plutôt:
function generation() { $name = trim($_POST['name']); if( empty($name) ) { } else { echo '[b][color=blue]Date de sortie :[/color][/b] [i]' . stripslashes($name) . '[/i]'; } }
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
magikverse Membre non connecté
-
Booster Mortier
- Voir le profil du membre magikverse
- Inscrit le : 08/01/2008
- Site internet
, en effet j'affiche la même je n'ai pas de trim par contre dans ma fonction de génération et cela fonctionne la différence?<input name="name" type="text" id="name" class="text" size="30" maxlength="150" /> function generation(){ $name = $_POST['name']; if(empty($name)) {} else { echo'[b][color=blue]Date de Sortie :[/color][/b] [i]'.stripslashes($name).'[/i] '; } }
Édité par magikverse Le 02/05/2008 à 15h58
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
magikverse Membre non connecté
-
Booster Mortier
- Voir le profil du membre magikverse
- Inscrit le : 08/01/2008
- Site internet
Je réfléchis et je crois que je pourrais traiter la réponse sur result.php et ensuite venir récupérer ce résultat dans mon conteneur sur mon index.php,
je ne trouve par contre aucun moyen de retourner le résultat obtenu avec generation();
Pourtant il dois bien y avoir un moyen de transporter le résultat dans une autre page (coté serveur).
Aussi j'ai chercher longtemps sur le web une façon d'insérer une condition dans un champs (un séparateur). Par exemple ";" Dans le but de récupérer plusieurs information individuellement mais dans le même input.
Exemple:
Vos photos: http://www.phpboost.com/1.png;http://www.phpboost.com/2.png;http://www.phpboost.com/3.png
En faite à chaque ; je devrais reprendre la condition If et afficher...
Merci encore!
magikverse Membre non connecté
-
Booster Mortier
- Voir le profil du membre magikverse
- Inscrit le : 08/01/2008
- Site internet
Le contenu s'affiche dans le même block mais pas sur la même page ce qui est très fonctionnel car mon menu reste fonctionnel tant que la div est présente.Me reste encore cette idée de séparateur dans une champs pour venir créer plusieurs variables à partir du même input donc un "name"...
Une petite question ^^ Est-il possible de récupérer le contenu d'un textarea sans avoir a le soumettre coté utilisateur? Simplement récupérer son contenu a la fin de sa génération et lui assigner une variable, le traitement devrait s'effectuer sur la page...
Merci pour tout :P
magikverse Membre non connecté
-
Booster Mortier
- Voir le profil du membre magikverse
- Inscrit le : 08/01/2008
- Site internet
mais bon je trouve important de souligner qu'un problème est résolu...Et bien voici ma solution:
if(empty($img)) {} else { $img = preg_replace('#;#', '[/img] ', $img); $img = preg_replace('#http:#', '[img]http:', $img); echo ''.stripslashes($img).' '; }
Il suffit de mettre à la fin de chaque image un ";". pour que le bbcode sois générer correctement.
Est-il possible de récupérer le contenu d'un textarea sans avoir a le soumettre coté utilisateur? Simplement récupérer son contenu a la fin de sa génération et lui assigner une variable, le traitement devrait s'effectuer sur la page...
Il suffisais de faire le post dans une pop-up de faire toutes les opérations désirés une fois complété on ferme la pop-up et le fichier .txt contenant le textarea est offert en téléchargement.Bref Résolu.
Reste un truc auquel je bloque... Faire un formulaire en AJAX, j'ai vu quelque tutoriel, mais je n'arrive pas a bien saisir cette méthode de POST et GET en AJAX

À la prochaine!
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
if( empty($img) ) { } else { $images = explode(';', $img); foreach($images as $image) { echo '[img]' . stripslashes($image) . '[/img] '; } }
Pour les GET et les POST en ajax c'est juste la transimission qui se fait différemment mais ça tu n'as pas à t'en occuper, c'est à la récupération que ça change. Personnelement je ne me sers pas de la transmission par GET en Ajax.. De plus POST est approprié pour transmettre des contenus important.
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
magikverse Membre non connecté
-
Booster Mortier
- Voir le profil du membre magikverse
- Inscrit le : 08/01/2008
- Site internet
Merci!Je ne crois pas non plus que GET sois nécessaire mais je bloque au moment de passer les variables comme je le ferais en php...
Voici un exemple:
<!-- function getXMLHttpRequest_form() { var xhr = null; var contents = document.getElementById('result').value; if(window.CONCAT(XMLHttpRequest , window.ActiveXObject)) { if(window.ActiveXObject) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { xhr = new XMLHttpRequest(); } } else { alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return null; } return xhr; xhr.open("POST", "traitement.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhx.send("name=" + value&"age=" + value); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && (xhr.status == CONCAT(200 , xhr.status) == 0)) { alert("OK"); // On va s'occuper des données reçues } } } -->
À cette ligne:
xhx.send("name=" + value&"age=" + value);
Je ne suis absolument pas sur que je passe une quelconque variable, valeur... a la page nommer plus haut si je donne <input name="name" type="text"/>
Ensuite j'imagine qu'il suffit de mettre <form OnSubmit="javascript:mafonction">
et si la fonction est bonne le traitement sera effectuer sur la page php traitement.php puis afficher dans la div voulu gràce a la var contents (plus haut).
Mais je crois que plusieurs truc m'échappe encore
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
xhx.send("name=" + value + "&age=" + value);
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
magikverse Membre non connecté
-
Booster Mortier
- Voir le profil du membre magikverse
- Inscrit le : 08/01/2008
- Site internet
dans generator_1.php
xhx.send("name=" + value + "&age=" + value);
Dans le sens de ce que tu me montre n'est pas bon ou... Je n'ai pas résolue mon problème, voici un autre essaie:
Ma fonction JS
<!-- function XMLHttpRequest_result(idpage) { var xhr_object = null; var filename = "../generator/result_" + idpage + ".php"; var data = "title=title&img=img"; if(window.XMLHttpRequest) // Firefox xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else // XMLHttpRequest non supporté par le navigateur return; xhr_object.open("POST", filename, true); xhr_object.onreadystatechange = function() { if( xhr_object.readyState == 4 && xhr_object.status == 200 ) document.getElementById("result").innerHTML = xhr_object.responseText; } xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr_object.send(data); -->
En faite si j'ai finalement bien compris il me suffit de récupérer la value de mes input var data = ""; et ensuite à la fin avec xhr_object.send(data);
dans la page result_1.php
$title = $_POST['title']; $img = $_POST['img'];
Avec ce code j'ai bien la page demander mais aucun POST effectuer et je ne comprend toujour pas comment poster simplement ces input,textarea... dans la page php appeler avec ma fonction.
Merci Énormément pour avoir tout lu je crois bien que j'approche du but avec cette dernière pris sur le même exemple que tu m'as donner plus haut...