JeuWeb - Crée ton jeu par navigateur
Contenu d'un div à partir d'un script PHP - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Contenu d'un div à partir d'un script PHP (/showthread.php?tid=6806)

Pages : 1 2 3


RE: Contenu d'un div à partir d'un script php - Sephi-Chan - 02-02-2014

Bon ben voilà, c'est mieux comme ça. :p

En fin de script, on voit les events listeners que j'ai défini. On peut voir que quand un checkbox change, j'appelle refreshSummary, pour… rafraîchir le résumé des flottes sélectionnées.

Cette méthode envoie au serveur (via une requête Ajax) les IDs des flottes sélectionnées. Le serveur retourne du HTML qui est injecté dans la div #selected-fleets. On pourrait faire ça uniquement client-side, s'il n'y a pas besoin des connaissances du serveur pour créer ce résumé.

Enfin, si le bouton pour envoyer les flottes est cliqué, on exécute la fonction sendFleets qui on envoie une nouvelle requête Ajax, à toi d'en faire ce que tu veux.


RE: Contenu d'un div à partir d'un script PHP - MadMass - 02-02-2014

Ok je comprend mieux, je m'y met demain, j'ai bouffé du javascript/jquery une bonne partie de la journée pour faire mon système de chat ingame :o
Mais merci Smile


RE: Contenu d'un div à partir d'un script PHP - Sephi-Chan - 02-02-2014

Tu ne devrais pas utiliser d'Ajax pour de la messagerie instantané. Le polling (aller chercher les messages toutes les N secondes) est inefficace et risque de ralentir/saturer inutilement ton serveur.

Pour ce genre de choses, il vaut mieux utiliser le push, où c'est le serveur qui envoie les messages au clients.

Si tu n'as pas la possibilité d'installer un serveur de push (en gros, si tu n'as pas un serveur dédié), je te conseille de passer par un service comme Pusher ou PubNub.


RE: Contenu d'un div à partir d'un script PHP - MadMass - 02-02-2014

J'ai la possibilité de le faire, mais en l'état, la solution que j'ai me permet d'avoir un contrôle total sur ce que je fais et ainsi implémenter des fonctions telles que les messages privés, discussions de groupe, etc. En outre, j'essaie d'alléger au maximum le script, notamment avec une table heap.


RE: Contenu d'un div à partir d'un script PHP - MadMass - 08-02-2014

Sephi-Chan, je suis en train d'implémenter ta solution ^^ (merci la console javascript de chromium, si j'aime pas javascript, c'est à cause de l'absence de messages d'erreur...)
Bref, je n'arrive pas à récupérer l'array que la fonction "getSelectedFleetIds" forme à partir des flottes sélectionnées. Je ne parvient pas à le récupérer dans php, il y a une façon de faire ?
BTW, pourquoi du GET et pas du post ? J'ai changé la méthode en POST ça marche aussi, une raison particulière à ce choix ? (vu que l'autre fonction marche avec du post)

Merci Smile


RE: Contenu d'un div à partir d'un script PHP - niahoo - 09-02-2014

GET tu récupères des infos du serveur, POST tu en envoies.


RE: Contenu d'un div à partir d'un script PHP - MadMass - 09-02-2014

Oki ^^
Pour ce qui est de récupérer le tableau transmis par javascript, j'arrive bien à récupérer la variable constante que je transmet (action), mais pas le tableau. Quand je fais un print_r($_GET['ids']); ça me renvoie undefined Sad


RE: Contenu d'un div à partir d'un script PHP - Sephi-Chan - 09-02-2014

Utilise ton inspecteur Javascript (l'onglet Network dans Chrome) pour voir exactement ce qui est envoyé avec la requête Ajax.


RE: Contenu d'un div à partir d'un script PHP - MadMass - 09-02-2014

Donc le soucis est là, voici l'entrée : misc.php?ids=undefined&action=movefleet
Il y a un soucis au niveau de la transmission du tableau construit par la fonction getSelectedFleetIds.

J'ai creusé un peu et je suppose que c'est du au fait que cette fonction ne renvoie rien (...). Du coup je l'ai modifiée de façon à mettre l'array créé dans une variable et de le renvoyer.
Cela fonctionne, mais du coup ça ne me renvoie que l'ID de la dernière checkbox cochée. Je ne sais pas si c'est ce qui est prévu à la base, j'avais en tête que le passage en tableau permettrait justement de renvoyer TOUTES les checkbox cochées et ainsi dispenser de devoir stocker server-side ce qui a déjà été sélectionné ^^
Donc j'ignore si ma manip est bonne... D'un autre côté, je trouve cela un peu étrange de faire passer un tableau en GET o_O


RE: Contenu d'un div à partir d'un script PHP - Sephi-Chan - 09-02-2014

C'est de ma faute, j'ai oublié return (j'ai perdu l'habitude d'en mettre, depuis que j'utilise CoffeeScript).


var getSelectedFleetIds = function() {
return $.makeArray($('#available-fleets :checkbox:checked').map(function(){ return this.value }));
}

Et avec ça le code fonctionnera correctement. Tu auras bien tous les IDs cochés dans le tableau.

Et faire passer un tableau en GET n'a absolument rien d'étrange. Tu peux même faire passer tes tableaux dans des tableaux dans des objets. Par exemple :


<form action="/foo">
<div><input type="email" placeholder="Email…" name="user[email]" /></div>
<div><input type="password" placeholder="Password…" name="user[password]" /></div>
<div><button>Submit</button></div>
</form>

Avec ce code, $_GET['user'] contiendra un tableau associatif (qu'on appelle aussi hash, hashtable, table de hachage, dictionnaire, etc. selon les langages) de la forme { email: 'foo@gmail.com', password: 'foo123' }.