Ajax et phpboost [Réglé]
Comment faire, pour trier un tableau ?
Créations de Modules
wmkheops Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre wmkheops
- Inscrit le : 11/06/2008
Petite explication j'ai un tableau que je voudrais pouvoir trier suivant les différentes colonnes
Je dois donc, si j'ai bien compris :
1. créer un fichier xmlhttprequest.php et verifier les variables passées en paramètres dans l'url,
2. inclure mes functions js dans le tpl
mais après je ne sais pas comment m'y prendre pour appeler et recevoir les données correctement depuis mon script php
Quelques explications serai le bienvenue
PS: pour générer mon tableau, je n'utilses pas de bdd
Merci
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Soit tu le fais vraiment en AJAX et tu demandes au serveur de te le trier par une requête HTTP que tu traites avec l'objet javascript XMLHTTPRequest.
Sinon tu tries en javascript, c'est aussi faisable.
Pour savoir quelle méthode utiliser il faudrait que tu précises un peu quel genre d'informations tu veux trier.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
wmkheops Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre wmkheops
- Inscrit le : 11/06/2008
Citation :Tu as deux solutions :
Soit tu le fais vraiment en AJAX et tu demandes au serveur de te le trier par une requête HTTP que tu traites avec l'objet javascript XMLHTTPRequest.
Sinon tu tries en javascript, c'est aussi faisable.
J'aimerais utiliser Ajax, pour me faire la main. Je sais déja que je vais devoir conjointement utiliser un javascript. J'ai trouvé cette librairie sur web sorttable.js
Citation :Pour savoir quelle méthode utiliser il faudrait que tu précises un peu quel genre d'informations tu veux trier.
un simple tableaux a 3 entrées, 2 numériques , et 1 chaine de caractères, avec 100 données de valeurs. Le tableau est placé en dessous de 2 formulaires différents, 1 renvoyant une simple donnée et l'autre renvoyant le fameux tableau sur plusieurs pages (10 résultats par page)
Pour l'ajax si j'ai bien compris il faut que j'envois des arguments a xmlhttprequest via mon script php, attendre la réponse, puis récupérer le résultat pour le réafficher dans la même page
J'ai déja regarder plusieurs codes source, mais j'avoue qu'il y des points que j'ai du mal à saisir. Je n'arrive pas à visualiser la structure du code correct que je dois mettre en place. Comme par exemple quel entête de document choisir pour XMLHTTPRequest, dois je inclure les fichiers php no-display_header ou non, ect...
Bref, je vais tout de même continuer d'étudier pour comprendre et y aller en essayant.
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Le fichier javascript qui va lancer la requête HTTP au serveur et traiter son résultat.
Le fichier php sur le serveur qui réceptionnera la requête.
Tu n'auras donc nul besoin de la librairie dont tu parles puisque tu veux faire faire les calculs par le serveur. Question performances, il n'y a pas photo, il vaut mieux ne pas passer par le serveur pour trier (à moins que ce soient des données qui viennent d'une base de données et qui sont très nombreuses où dans ce cas on pourrait profiter de la rapidité d'un SGBD). Mais j'avoue que pédagogiquement il est plus intéressant de faire de l'AJAX.
C'est pas compliqué, voilà en gros ce qu'il faut faire :
Côté javascript :
Code JAVASCRIPT :
// Fonction de tri function ajax_sort_values(field, order) { //URL à laquelle on envoie la requête (on fait passer les arguments en GET) var xhr_object = xmlhttprequest_init("fichier_php_traitant_la_requete.php?field=" + field + "&order=" + order); //On prépare la fonction de traitement du résultat de la requête xhr_object.onreadystatechange = function() { //Transfert terminé avec succès if( xhr_object.readyState == 4 && xhr_object.status == 200 && xhr_object.responseText != "") document.getElementById("contenu_tableau").innerHTML = xhr_object.responseText; //ici on écrit dans le bloc dont l'id est contenu_tableau le résultat else if( xhr_object.readyState == 4 && xhr_object.responseText == "" ) //Error { //Echec : impossible de joindre le serveur } } //On envoie la requête xmlhttprequest_sender(xhr_object, null); }
Et côté PHP :
Code PHP :
<?php require_once('../includes/begin.php'); require_once('../includes/header_no_display.php'); //On trie les données //Là c'est à toi de jouer //On écrit le résultat qui sera affiché par la fonction javascript echo '<table>'; foreach(....) echo '<tr><td>' . $valeur[1] . '</td><td>' . $valeur[2] . '</td></tr>'; echo '</table>'; include_once('../includes/footer_no_display.php'); ?>
Là je suis parti sur une solution relativement simple qui consiste à écrire simplement ce qu'on reçoit du l'AJAX dans la page. Ici le contenu du tableau est déjà écrit, et quand on demande de trier, on remplace le contenu existant par le contenu reçu. Pour trier il faut faire appel à la fonction javascript que j'ai appelée ajax_sort_values et qui prend en paramètre le champ sur lequel tu tries et l'ordre (croissant ou décroissant). Le nom de ces fonctions n'est en rien imposé, il s'agit juste d'un exemple.
J'espère avoir été clair. Si tu as des questions sur des morceaux de code n'hésite pas à demander. Je n'ai pas non plus détaillé comment on passait des paramètres par POST mais je pense que tu peux le faire aussi par GET et c'est plus simple niveau AJAX.
Bon courage
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
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é!
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Je me souviens plus trop en fait de la 2.0.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
wmkheops Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre wmkheops
- Inscrit le : 11/06/2008
Citation :
Tu n'auras donc nul besoin de la librairie dont tu parles puisque tu veux faire faire les calculs par le serveur
J'avais retenu çà car j'ai vu un exemple sur le web avec, donc en résumé, ma fonction de tri sera en PHP ?
Citation :
Question performances, il n'y a pas photo, il vaut mieux ne pas passer par le serveur pour trier (à moins que ce soient des données qui viennent d'une base de données et qui sont très nombreuses où dans ce cas on pourrait profiter de la rapidité d'un SGBD).
Pas d'images,pas de bdd, ce sont des données que je récupère depuis un site dans un array à 2 dimensions
Citation :
Mais j'avoue que pédagogiquement il est plus intéressant de faire de l'AJAX.
C'est mon but

Citation :
J'espère avoir été clair. Si tu as des questions sur des morceaux de code n'hésite pas à demander. Je n'ai pas non plus détaillé comment on passait des paramètres par POST mais je pense que tu peux le faire aussi par GET et c'est plus simple niveau AJAX.
Merci beaucoup, c'est déja un peu plus clair

Citation :
Le problème c'est que le code que tu viens de lui donner c'est pour la 2.1
Pas de souci, pour initaliser l'objet ajax j'ai compris
Petit question quand même ou et comment je récupère les données de mon tableau pour les trier ? Faut-t-il que je le parses dans fichier_php_traitant_la_requete.php via le javascript ?
Merci, je vous tiens au courant. De plus ce sera un petit module utile pour les utilisateurs de phpboost
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
En fonction des arguments que tu reçois en GET tu fais ton tri et tu affiches le résultat en utilisant echo par exemple.
Enfin je ne suis pas sûr d'avoir compris ta question.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
wmkheops Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre wmkheops
- Inscrit le : 11/06/2008
Citation :
Dans le fichier PHP tu dois avoir tes données (je ne sais pas d'où tu les récupères).
En fonction des arguments que tu reçois en GET tu fais ton tri et tu affiches le résultat en utilisant echo par exemple.
Enfin je ne suis pas sûr d'avoir compris ta question.
En fonction des arguments que tu reçois en GET tu fais ton tri et tu affiches le résultat en utilisant echo par exemple.
Enfin je ne suis pas sûr d'avoir compris ta question.
Donc je dois bien renvoyé mon tableau a 2 dimensions via un GET au fichier fichier_php_traitant_la_requete.php ok
merci
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Dans ce cas là tu vas t'embêter pour rien en passant par l'AJAX.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
wmkheops Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre wmkheops
- Inscrit le : 11/06/2008
Mon tableau est bien en php. Je passe par une classe externe pour le générer et je le récupère dans dans mon fichier php pour l'afficher via un template.
Ce que tu veux dire, c'est que dois mettre le contenu du fichier php_traitant_la_requete.php dans mon fichier ou je gère l'affichage et que j'appelle cette fonction suivant les arguments passés, c'est çà ?
Édité par wmkheops Le 07/07/2008 à 09h50
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Je ne suis pas sûr d'avoir bien compris ton souci.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
wmkheops Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre wmkheops
- Inscrit le : 11/06/2008
Citation :
C'est ton fichier fichier_php_traitant_la_requete.php comme je l'ai appelé qui va recevoir les GET et trier le tableau en affichant directement le résultat.
Je ne suis pas sûr d'avoir bien compris ton souci.
Je ne suis pas sûr d'avoir bien compris ton souci.
Ok, j'avais pas compris comme çà je pensais que je continuais a faire mon traitement dans mon fichier principale, puis balancer simplement le résultat dans le fichier xmlhttprequest. Mais si je fais comme tu dis, à chaque fois, il faut que je réappelle ma fonction récupérant les données. Je vais passer par une variable globale, ça résoudra le problème.A moins que je puisse envoyé mon array directement via GET. Je vais essayé comme tu me dis.
Merci
wmkheops Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre wmkheops
- Inscrit le : 11/06/2008
Merci
A+
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie