[RESOLU] Ajax dans mon site SOS !

Eléphanteau du PHP | 25 Messages

05 juil. 2014, 14:14

Salut les amis,
bon alors voila j'aimerai mettre un systeme ajax sur mon site:
la page index.php tout le contenu de chaque page ce passe sur cette page (Architecture MVC) voici sont contenus:
<?php
header( 'content-type: text/html; charset=utf-8' );
define('CAN', true);

session_start();
// Initialisation
include_once('init.php');
include_once(PATH_INCLUDES.'/pdo_connect.php');
//Assemblage de la page
include_once(PATH_INCLUDES.'/header_page.php');
include_once(PATH_INCLUDES.'/nav_page.php');

//Controleur demandé dans $_GET['controleur']
if (empty($_GET['controleur'])) {$NOM_CONTROLEUR = NULL; include_once PATH_MVC_CONTROLEUR . '/controleur.home.php';}
ELSE {
	$NOM_CONTROLEUR = $_GET['controleur'];
	$NOM_FICHIER_CONTROLEUR = 'controleur.'. $NOM_CONTROLEUR .'.php';
	if (is_file(PATH_MVC_CONTROLEUR.'/'. $NOM_FICHIER_CONTROLEUR)){
        include PATH_MVC_CONTROLEUR . '/' . $NOM_FICHIER_CONTROLEUR;
	}
	ELSE {
		ECHO 'Ce controleur n\'existe pas';
	}
}

//Pied de page
include_once(PATH_INCLUDES.'/footer_page.php');
?>
Si je suis le principe d'Ajax j'aimerai que lorsque l'on demande la page ('ex: index.php?controleur=liste-serveurs) seulement le controleur soit charger, le reste de la page de se refresh pas
Merci d'avance

Mammouth du PHP | 1339 Messages

05 juil. 2014, 16:47

Bah je comprend pas ce qui est compliqué ?

Tu fais ca :

<a href="ton_lien.html">Test</a>

Apres tu triches en jQuery pour que le lien ne marche pas et raffraichisse:

[javascript]$('a').on('click', function(e) {
e.preventDefault(e); // Annule le fait que on ai cliqué sur un lien.
var controleur = $(this).attr('href');
// Ton code ajax
});[/javascript]

Comme ca tu recupere "ton_lien.html" et tu dis a la page de changer le contenu par le contenu de cette page là.
Comme ca si le mec arrive sur la page directe, elle s'affiche, si il clique sur le lien, elle s'affiche aussi mais la page se recharge pas.

Je t'ai expliqué la logique mais apres c'est un poil plus complexe.
Tu peux également sans recharger la page, mettre à jour l'url dans la barre de navigation.
Avec ca, tu peux meme gerer l'histoirique : http://spoiledmilk.com/blog/html5-chang ... hing-page/

Dis moi si ca t'aide.
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 25 Messages

05 juil. 2014, 17:07

Personne comprend ce que je veux faire il y a pas moyen de faire du vocal ca sera plus simple :)

Mammouth du PHP | 1339 Messages

05 juil. 2014, 18:29

Moi je comprend que tu veux modifier le contenu de ton site sans recharger la page...
Ce que je te propose fait ca :)
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 25 Messages

05 juil. 2014, 19:25

et dans '//ton code ajax' je dois mettre quoi ?

Mammouth du PHP | 1339 Messages

05 juil. 2014, 19:31

Tu met un code en AJAX pour recuperer le contenu d'une page ...

[javascript]
$('a').on('click', function(e) {
e.preventDefault(e); // Annule le fait que on ai cliqué sur un lien.
var page = $(this).attr('href');

$.ajax({
type: 'GET',
url: 'importerPage.php',
data:'page='+page,
processData: true,
async: false,
error:function(msg){
alert( "Error !: " + msg );
},
success:function(data){
$('#le_champ_a_mettre_a_jour').html(data);
}
});
});
[/javascript]

Et tu creer ton fichier importerPage.php
<?php echo file_get_contents($_GET['page']); ?>
Encore une fois c'est du théorique ...
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 25 Messages

05 juil. 2014, 20:15

Faut que je parle en vocal pour expliqué parce que c'est un peu compliqué a comprendre visiblement si quelqu'un se porte volontaire faite moi signe :)

Eléphanteau du PHP | 25 Messages

05 juil. 2014, 20:22

En plus j'arrive a rien avec ton code
je vous donne le lien de mon site pour voir et comprendre ce que j'esseye de faire : http://nolimitgaming.fr/
Je redis j'aimerai que quand on clique sur l'onglet seulement le contenu change pas, toute la page

Mammouth du PHP | 1339 Messages

05 juil. 2014, 20:40

Quel est l'interet de faire un truc inutile si en plus tu ne sais pas le faire ?
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 25 Messages

05 juil. 2014, 21:00

Juste pour voir de quoi c est capable

Eléphanteau du PHP | 25 Messages

11 oct. 2014, 00:10

c est pas une page que je dois appelé mais une fonction qui appelle un controleur en php ! c est ca la difficulté

ViPHP
ViPHP | 4039 Messages

13 oct. 2014, 10:36

L'architecture n'est pas bonne, ou en tout cas, tu as peut-ếtre une idée plus ou moins claire de ce que le pattern "MVC" implique en PHP, mais en y ajoutant de l'ajax tu doit repenser le tout.

Ajax, c'est du javascript asynchrone: les données sont chargées dynamiquement, et quand elles arrivent, javascript se charge de les traiter.

Dans ton modèle MVC (limite inutile, enfin bon), Php n'est que le modèle*. Controlleur et vue devraient tout deux être côté client, si vraiment tu veux utiliser du JS asynchrone utilement.


*: si tu est vraiment, a fond MVC, la couche PHP a son propre controlleur et sa propre vue, vue qui sert alors de modèle a la couche JS. Mais bon, MVC, sa date d'avant le choc pétrolier de '73, donc ne t'en préoccupe pas plus qu'il n'en faut quand même :wink:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 25 Messages

13 oct. 2014, 17:19

bhé je cherche simplmemnt a afficher la vue en ajaax !

Eléphanteau du PHP | 25 Messages

13 oct. 2014, 22:52

Humm pourquoi tu dis l architecture n est pas la bonne ... explique toi :)

ViPHP
ViPHP | 4039 Messages

14 oct. 2014, 14:55

Humm pourquoi tu dis l architecture n est pas la bonne ... explique toi :)
Tu pars du principe que ton controleur est en PHP. Mais si tu veux utiliser ajax, ton controleur devrait se trouver chez le client, en javascript. Ou sur les deux. Le fait est que le modèle MVC s'applique mal au web, c'est comme ca, c'est pas prévu pour. Et donc la tu te heurtes à ses limites.

Et si par "charger la vue en ajax", tu veux simplement charger la page HTML complète pour l'afficher, c-a-d emuler un navigateur en JS juste pour le plaisir, ne perds pas ton temps, c'est inutile.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.