Tchat actualisation auto
4 participants
Tchat actualisation auto
Bonjour,
Serais t'il possible d'avoir un tchat qui s'actualise automatiquement ( avec ajax/javascript)
Serais t'il possible d'avoir un tchat qui s'actualise automatiquement ( avec ajax/javascript)
Spiritus- Messages : 8
Date d'inscription : 09/12/2012
Re: Tchat actualisation auto
Plutôt que de se focaliser sur le chat, qui est annexe, ne serait-il pas possible d'abord de supprimer ces fichues redirections qui ont lieu à chaque page où on envoie une commande?
Si on se connecte, on arrive sur la page qui se charge d'ouvrir la session, et une fois la page affichée, le site web essaye de nous rediriger. Si on lancer un bâtiment, pareil. Si on convertit des villageois, pareil...
A croire que le contenu de la page web est envoyé d'abord, et qu'ensuite la commande (login, construction, villageois) est traitée par le serveur qui, alors, demande au client de recharger la page...
Non seulement c'est deux fois trop lourd (car le serveur envoie 1 fois la page, puis fait la commande, puis recharge la page et donc la renvoie), mais en plus, si notre navigateur est bien configuré pour éviter les déboires et les publicités à tout va, Firefox va bloquer la redirection et demander l'autorisation avant de recharger la page. C'est lourd, c'est inutile, et cela ne fait clairement pas professionnel. De plus, tant qu'on n'a pas suivit la redirection, on conserve la page "telle qu'elle était avant d'exécuter la commande", autrement dit, avec des données obsolètes.
Donc, est-ce qu'il serait d'abord possible de changer un peu l'ordre des lignes de code PHP pour d'abord faire exécuter au serveur les commandes demandées, et ensuite, envoyer la BONNE page au client?
Si on se connecte, on arrive sur la page qui se charge d'ouvrir la session, et une fois la page affichée, le site web essaye de nous rediriger. Si on lancer un bâtiment, pareil. Si on convertit des villageois, pareil...
A croire que le contenu de la page web est envoyé d'abord, et qu'ensuite la commande (login, construction, villageois) est traitée par le serveur qui, alors, demande au client de recharger la page...
Non seulement c'est deux fois trop lourd (car le serveur envoie 1 fois la page, puis fait la commande, puis recharge la page et donc la renvoie), mais en plus, si notre navigateur est bien configuré pour éviter les déboires et les publicités à tout va, Firefox va bloquer la redirection et demander l'autorisation avant de recharger la page. C'est lourd, c'est inutile, et cela ne fait clairement pas professionnel. De plus, tant qu'on n'a pas suivit la redirection, on conserve la page "telle qu'elle était avant d'exécuter la commande", autrement dit, avec des données obsolètes.
Donc, est-ce qu'il serait d'abord possible de changer un peu l'ordre des lignes de code PHP pour d'abord faire exécuter au serveur les commandes demandées, et ensuite, envoyer la BONNE page au client?
Xenos- Messages : 43
Date d'inscription : 29/11/2012
Re: Tchat actualisation auto
Alors pour le chat auto, on va le faire
Xenos : là actuellement c'est comme tu dis, la page envoie pour exécution, puis exécution puis redirection
mais tu es bien obligé que la page envoie pour exécution, non ?
sinon ajax/javascript ?
Xenos : là actuellement c'est comme tu dis, la page envoie pour exécution, puis exécution puis redirection
mais tu es bien obligé que la page envoie pour exécution, non ?
sinon ajax/javascript ?
Re: Tchat actualisation auto
Non, y'a pas de redirection si tu exécute d'abord puis affiche ensuite.
A mon avis, dans ton code, tu as, pour l'instant, les parties suivantes:
- Récupération des données
- Execution
-Echo des donnée récupérées
Or, les données ont été récupérées avant d'exécuter les commandes demandées à la page, d'où la redirection requise. Il te faut simplement de mieux découper:
- Récupération des données requises pour la commande
- Exécution de la commande
- Récupération des données à afficher
- Echo pour l'affichage
Et il n'y a plus de redirection.
Aucun site web ne fait comme tu le fais actuellement (une redirection à chaque page à laquelle on a demandé de faire une commande).
A mon avis, dans ton code, tu as, pour l'instant, les parties suivantes:
- Récupération des données
- Execution
-Echo des donnée récupérées
Or, les données ont été récupérées avant d'exécuter les commandes demandées à la page, d'où la redirection requise. Il te faut simplement de mieux découper:
- Récupération des données requises pour la commande
- Exécution de la commande
- Récupération des données à afficher
- Echo pour l'affichage
Et il n'y a plus de redirection.
Aucun site web ne fait comme tu le fais actuellement (une redirection à chaque page à laquelle on a demandé de faire une commande).
Xenos- Messages : 43
Date d'inscription : 29/11/2012
Re: Tchat actualisation auto
Attend, je suis pas sur de comprendre
Mon code est comme ça
appelle de la page ou se situe le code php à exécuter
code de la page sur laquelle est le joueur --> formulaire à exécuter
Le joueur envoie le formulaire, ça s'exécute dans la page où se trouve le code php donc avant d'afficher le formulaire et après ça s'affiche
Donc théoriquement là je suis bon non ?
Mon code est comme ça
appelle de la page ou se situe le code php à exécuter
code de la page sur laquelle est le joueur --> formulaire à exécuter
Le joueur envoie le formulaire, ça s'exécute dans la page où se trouve le code php donc avant d'afficher le formulaire et après ça s'affiche
Donc théoriquement là je suis bon non ?
Re: Tchat actualisation auto
Théoriquement oui, mais en pratique, la page qui est affichée donne des données obsolètes, donc je suppose que les données qui sont affichées ont été récupérées AVANT d'exécuter la commande dans le code PHP.
Si t'as besoin d'aide pour le code PHP, n'hésite pas à me demander (car sans code, j'vais avoir du mal à te dire exactement où ca va pas).
Si t'as besoin d'aide pour le code PHP, n'hésite pas à me demander (car sans code, j'vais avoir du mal à te dire exactement où ca va pas).
Xenos- Messages : 43
Date d'inscription : 29/11/2012
Re: Tchat actualisation auto
merci pour ta proposition d'aide, bon voilà un exemple de nos codes (j'ai enlevé ce qui étais inutile) :
Et ensuite dans fonction_batiment.php, tu as :
- Code:
<?
session_start();
include 'batiment_fonction.php';
?>
<div class="">
<form action="batiment.php" method="post">
<input type="submit" name="achat_maison" id="achat_maison" value="augmenter" />
</form>
</div>
Et ensuite dans fonction_batiment.php, tu as :
- Code:
if(isset($_POST['achat_maison']))
{
Le code augmente le niveau de la maison
Le code retire le prix de la maison à l'or du joueur
?>
<meta http-equiv="Refresh" content="0;url=batiment.php">
<?php
}
Re: Tchat actualisation auto
J'en pense que la ligne
Une fois les actions faites, après l'include, il suffit d'aller piocher dans la BDD les données à afficher et dans la suite du code, de les afficher. Car je pense que, pour l'instant, les données sont récupérées d'abord, puis les commandes dans le include sont exécutées, et enfin, les données (récupérées en début de page et non-changées par le include) sont affichées: elles sont donc obsolètes. d'où la nécéssité soit:
- De modifier les données non seulement dans la BDD via le fichier inclus, mais aussi de les modifier dans le script PHP, autrement dit, exécuter la requète SQL qui va bien pour changer le nombre de maisons mais également incrémenter la variable $maisons du script PHP
soit
- De ne pas récupérer les données SQL en début de script, de faire le include dans lequel la BDD est modifiée (le include fait sa petite requête SQL pour ajouter des maisons), et seulement après les include, récupérer les données de la BDD, données qui seront alors à jour (si tu utilises des transactions SQL, alors il faut bien commiter la transaction des modifications dans le include avant d'aller récupérer les données SQL à afficher)
n'a rien à faire là.<meta http-equiv="Refresh" content="0;url=batiment.php">
Une fois les actions faites, après l'include, il suffit d'aller piocher dans la BDD les données à afficher et dans la suite du code, de les afficher. Car je pense que, pour l'instant, les données sont récupérées d'abord, puis les commandes dans le include sont exécutées, et enfin, les données (récupérées en début de page et non-changées par le include) sont affichées: elles sont donc obsolètes. d'où la nécéssité soit:
- De modifier les données non seulement dans la BDD via le fichier inclus, mais aussi de les modifier dans le script PHP, autrement dit, exécuter la requète SQL qui va bien pour changer le nombre de maisons mais également incrémenter la variable $maisons du script PHP
soit
- De ne pas récupérer les données SQL en début de script, de faire le include dans lequel la BDD est modifiée (le include fait sa petite requête SQL pour ajouter des maisons), et seulement après les include, récupérer les données de la BDD, données qui seront alors à jour (si tu utilises des transactions SQL, alors il faut bien commiter la transaction des modifications dans le include avant d'aller récupérer les données SQL à afficher)
Xenos- Messages : 43
Date d'inscription : 29/11/2012
Re: Tchat actualisation auto
Yeeeeeeah, c'est bon, ça marche : la page ne se recharge plus à l'achat !
Merci merci merci Xenos
EDIT : problème --> quand on envoie le formulaire et qu'on manque d'or, d'habitant, ... ça remet sur une page avec une écriture tout petite depuis que j'ai fait le changement :s
Merci merci merci Xenos
EDIT : problème --> quand on envoie le formulaire et qu'on manque d'or, d'habitant, ... ça remet sur une page avec une écriture tout petite depuis que j'ai fait le changement :s
Re: Tchat actualisation auto
Non, ca a l'air de marcher... Ca affiche une page blanche avec la boite d'alerte "pas assez d'habitant" et la page est ensuite affichée...
Le soucis vient probablement du fait que la balise script avec le alert est placée dans le html/head.
Au lieu d'envoyer directement le "alert", crée une fonction javascript et appelle-là quand la page est chargée:
html/head/script:
function chargementpasok()
{
alert(...); //Si jamais y'a pas d'erreur, il suffit de laisser une fonction toute vide)
};
html/body:
attribut "onload"="javascript:chargementpasok();"
Normalement, la fonction javascript sera appelée quand le body sera chargé, autrement dit, quand la page sera chargée (aka quand toutes les balises HTML du body seront reçues, ce qui n'implique pas que les images soient déjà chargées mais dans le cas présent, on s'en moque de cette précision).
Le soucis vient probablement du fait que la balise script avec le alert est placée dans le html/head.
Au lieu d'envoyer directement le "alert", crée une fonction javascript et appelle-là quand la page est chargée:
html/head/script:
function chargementpasok()
{
alert(...); //Si jamais y'a pas d'erreur, il suffit de laisser une fonction toute vide)
};
html/body:
attribut "onload"="javascript:chargementpasok();"
Normalement, la fonction javascript sera appelée quand le body sera chargé, autrement dit, quand la page sera chargée (aka quand toutes les balises HTML du body seront reçues, ce qui n'implique pas que les images soient déjà chargées mais dans le cas présent, on s'en moque de cette précision).
Xenos- Messages : 43
Date d'inscription : 29/11/2012
Re: Tchat actualisation auto
Je comprend rien c'est du charabia votre truc ^^
haza- Messages : 50
Date d'inscription : 26/11/2012
Age : 32
Localisation : Grenoble
Re: Tchat actualisation auto
Pour le tchat, tu as ajax/jvascript ou jquery
Spiritus- Messages : 8
Date d'inscription : 09/12/2012
Re: Tchat actualisation auto
Pour ton histoire de texte petit, cela vient effectivement du fait que tu envoie un "script/alert()" au client avant d'envoyer le contenu du tag "body". Ducoup, firefox (peut-etre que les autres navigateurs font pareil) est obligé de créer un "body" temporaire, le temps d'afficher ton "alert()", puis ensuite, il réceptionne le reste de la page.
Voici le code HTML effectif envoyé au client (buggé donc):
Le document n'est donc pas valid HTML5 (ni XML d'ailleurs) puisque le script/alert() est envoyé avant même d'ouvrir le tag html/body.
Pour corriger le soucis, il te suffit d'envoyer d'abord le html/ puis le html/head, puis d'ouvrir le html/body, et seulement à ce moment là, d'ajouter le script/alert()
Voici le code HTML effectif envoyé au client (buggé donc):
- Code:
<script>
alert('Vous n\'avez pas assez d\'habitant disponible !');
</script>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Zoooombie</title>
<link rel="stylesheet" type="text/css" href="Includes/style.css">
<link rel="shortcut icon" href="Includes/zombie_fav.png" type="image/png"/>
<link rel="shortcut icon" type="image/png" href="Includes/zombie_fav.png" />
<link rel="icon" href="Includes/zombie_fav.png" type="image/png"/>
</head>
<body>
<div class="tout">
<table class="haut">
Le document n'est donc pas valid HTML5 (ni XML d'ailleurs) puisque le script/alert() est envoyé avant même d'ouvrir le tag html/body.
Pour corriger le soucis, il te suffit d'envoyer d'abord le html/ puis le html/head, puis d'ouvrir le html/body, et seulement à ce moment là, d'ajouter le script/alert()
Xenos- Messages : 43
Date d'inscription : 29/11/2012
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|