IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP et Jquery


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 235
    Points : 82
    Points
    82
    Par défaut PHP et Jquery
    Bonjour à tous,

    Depuis quelques temps je dev une solution PHP pour mon employeur (un presque CRM pour simplifier). L'outil évolue et à force d'ajouter des fonctionnalités les pages deviennent de plus en plus longues à charger, la faute à un gros volumes de données à afficher. Mon idée est de rendre chaque modules dynamique, c'est à dire qu'ils se chargent en appuyant sur un bouton au lieu de tous ce charger à l'ouverture de page.

    Prenons pour exemple le module "Affaires". Il charge une liste d'affaires pour un client données et une plage d'année (par exemple 2020 et n-1). Ces infos sont stockées dans un array php qui est parcouru pour les afficher mais aussi réaliser des comparatifs à la ligne, des cumuls... Un petit bout de formulaire permet à l'utilisateur de modifier la plage d'années. Dans ma petite tête je souhaiterais que jquery me créé la liste des affaires et ensuite si il y a un résultat alors les données sont parcouru avec tout les traitements php prévu.

    Sauf que j'ai aucune idée de comment faire. Est-ce que vous auriez des idées, des sites qui explique comment utiliser jquery de façon plus complexe que simplement charger un select par rapport à un autre ?

    Merci d'avance.

  2. #2
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 932
    Points
    932
    Par défaut
    Le terrain de jeu de jQuery se situe coté navigateur (IHM) : avec jQuery, tu appelles le serveur à la rescousse (service, PHP) et en récupères des données, sculptes le DOM à ta guise, réagis aux saisies utilisateur... Tu n'attaques pas directement une base du serveur.

    Tandis que PHP intervient :
    1) au chargement de la page (1er chargement ou Submit)
    2) sur demande AJAX déclenchée par jQuery (ou javascript) - rafraîchissement partiel
    Un point c'est tout, le reste c'est territoire Browser (jQuery, javascript, CSS...), pas toucher.

    Si j'ai bien compris ton problème de lourdeur dans l'application, tu veux "déporter" une partie du chargement initial de page dans des rafraîchissements partiels déclenchés avec AJAX (au clic sur différents boutons). Tes extractions resteront côté serveur avec du PHP, par contre il va falloir "échanger" entre jQuery et PHP (GET ou POST à l'aller et souvent JSON au retour). La difficulté, si tu as des échanges un peu "musclés", se situe généralement à l'exploitation des données retournées, parce que tu dois alimenter tous tes champs "dynamiques" avec des instructions jQuery.

    Le serveur va continuer à faire tous les traitements qu'il produit aujourd'hui, mais tu devras peut-être les organiser autrement pour passer dans les "tuyaux".
    Par exemple;
    - au chargement tu affiches seulement les affaires 2020-2019 pour voyager léger
    - le formulaire permet à l'utilisateur de saisir "2019-2018" pour interroger une nouvelle période
    - au clic sur un bouton, jQuery déclenche un appel AJAX à un traitement PHP qui va extraire les affaires en fonction du paramètre ("Médor, va chercher 2019-2018")
    - le traitement PHP renvoie un nouveau tableau (ou un message comme quoi il n'y a pas d'affaires sur la période)
    - jQuery traite les données renvoyées pour les afficher dans le formulaire.

    Quels morceaux te posent problème ?
    Que veux-tu dire par "tous les traitements php prévus" ? Quelles manips exactement fais-tu dans ta page au chargement?

    Sinon, tu peux aussi travailler le découpage en formulaires pour charger les informations de manière plus "ciblée".

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 235
    Points : 82
    Points
    82
    Par défaut
    Merci pour tes précisions.

    Jusqu'à présent les dev que j'ai fais était à l'ancienne car je ne suis pas dev et jusqu'à présent j'en ai fait peu. Mais ce projet m'a intéressé tout de suite, donc une 1ere version est sortie il y a deux ans avec très peu de fonction et au fur et à mesure nous avons ajouté des fonctions. Arrivé à un moment le code est devenu très difficile à maintenir et à faire évoluer, du coups depuis le début de l'année j'ai entamé une refonte et re-organisation du code pour arriver à système de class métiers et de class d'affichage. Ce n'est pas encore parfait mais avec le temps le code se bonifie (et mes compétences aussi). Je ne suis pas encore sur un modèle MVC car je me greffe sur un CMS qui ne l'est pas encore (mais tout le monde travail pour y arriver). Tout ça pour dire que Jquery est une nouveauté pour moi, j'ai commencé à l'intégrer dans le projet de façon basique : proposition de résultat pendant la saisie dans un input, mise à jour d'un select par rapport à un autre select. Même si je me documente pas mal l'articulation PHP/Jquery est encore un peu obscur pour des besoins plus complexe. Même si j'avais bien compris qu'il intervient côté navigateur et non côté serveur.

    Je vais tenter de te faire une version algo (vieux souvenir) de la version actuelle d'un des modules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Chargement page généré par PHP
    Requête PHP sélection Affaires getOppors(client, annee-1, annee)
    Pour getOppors
      Affichage du nom de l'affaire
      var oppor1 = Requête PHP détail affaire du mois encours n-1 getStatsOppor(client, affaire, annee-1, moisDébut, moisFin)
      var total1 = total1 + oppor1['valeur']
     
      var oppor2 = Requête PHP détail affaire du mois encours n getStatsOppor(client, annee, date, moisDébut, moisFin)
      var total2 = total2 + oppor2['valeur']
     
      Conversion en décimal fr et Affichage de opport1['valeur']
      Conversion en décimal fr et Affichage de opport2['valeur']
      Si annee == anneeEnCours
        var oppor3 = Requête PHP détail reste à facturé getStatsOpporLiv(client, affaire, annee, moisDebut, moisFin)
        var total3 = total3 + oppor3
        Conversion en décimal fr et Affichage de opport3['valeur']
      Fin Si
     
      Affichage évolution getEvolution(oppo1, oppor2 + oppor3)
      Affichage en % de l'évolution getPercent(oppor1, oppor2 + oppor3)
     
      var oppor4 = Requête PHP détail affaire année n-1 getStatsOppor(client, affaire, année-1)
      var total4 = total4 + opport4
      var oppor5 = Requête PHP détail affaire année n getStatsOppor(client, affaire, année)
      var total5 = total5 + opport4
     
      Conversion en décimal fr et Affichage de opport4['valeur']
      Conversion en décimal fr et Affichage de opport5['valeur']
    Fin
     
    Conversion en décimal fr et Affichage de total1['valeur']
    Conversion en décimal fr et Affichage de total2['valeur']
    Conversion en décimal fr et Affichage de total3['valeur']
    Conversion en décimal fr et Affichage de total4['valeur']
    Conversion en décimal fr et Affichage de total5['valeur']
    Voila une version simplifier et je l'espère clair d'un des modules que je souhaite "Jqueryser".

    Si je me lance dans l'intégration de Jquery, est-ce que je n'aurais pas intérêt à utiliser un framework dédié ?

  4. #4
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 932
    Points
    932
    Par défaut
    Beaucoup de frameworks s'appuient sur PHP/jQuery, donc tu as du choix pour dégoter un framework, qui t'aidera sûrement à structurer le code MVC-style.
    Après cela dépend aussi du temps que tu peux y investir. Tu trouveras sans mal des comparatifs (chacun est plus ou moins begginner-friendly, comme disent nos amis anglophones).
    Le bon côté, c'est qu'il existe pas mal de communautés solides pour donner un coup de main.
    Cela dit, si tu es seul à pratiquer dans ton entreprise, ce n'est guère raisonnable, je te conseille de recruter des volontaires...

    Pour revenir à ton application et à l'affichage pour getOppors, tout ce qui commence par var= évoque du javascript, je suppose qu'il s'agit de ta page ; que nous appellerons page 1... En plus de ta page 1, tu ponds un pur fichier PHP (appellons-le medor.php) comportant les requêtes et les traitements de rafraîchissement (sans html ni js), jQuery invoque medor en AJAX depuis ta page 1 en passant des paramètres, par exemple en POST, (medor.php aura des instructions du style $client=$_POST['idclient']; etc pour lire les paramètres) medor mouline et renvoie toutes les données sous forme d'array éventuellement converti en JSON comme {"client": 8, "tableau":{"opport":{"annee":{"2020": {"ligne1":{"nombre":32, "montant_enjeu":12341.00, ...}, "ligne2":{... etc et même chose pour le tableau "affaires"...} tout ça renvoyé à jQuery qui efface les données précédentes, parcourt le bousin à l'aide de belles boucles, et rafraîchit la page 1 en agençant soigneusement les données rafraîchies dans la page.

    Si les plugins jQuery d'un framework peuvent te simplifier la vie sur le parcours PHP/jQuery/DOM, tant mieux, ce n'est pas toujours trivial (avec l'exemple ci-dessus il y a déjà 5 niveaux de profondeur dans l'objet en réponse)

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 453
    Points : 4 978
    Points
    4 978
    Par défaut
    Bonjour,
    Si jquery t'intéresse, tu peux utiliser DataTable en mode serverSide, qui répond à tes besoins.

    C'est un plugin jQuery permettant de gérer les données en fonction des paramètres de l'utilisateur + recherche, trie, pagination ..

  6. #6
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 235
    Points : 82
    Points
    82
    Par défaut
    Citation Envoyé par Paraffine Voir le message
    Beaucoup de frameworks s'appuient sur PHP/jQuery, donc tu as du choix pour dégoter un framework, qui t'aidera sûrement à structurer le code MVC-style.
    Après cela dépend aussi du temps que tu peux y investir. Tu trouveras sans mal des comparatifs (chacun est plus ou moins begginner-friendly, comme disent nos amis anglophones).
    Le bon côté, c'est qu'il existe pas mal de communautés solides pour donner un coup de main.
    Cela dit, si tu es seul à pratiquer dans ton entreprise, ce n'est guère raisonnable, je te conseille de recruter des volontaires...
    En fait je suis tout seul au service info (petite structure) et j'assure l'adminSys et le dev... Je crois que je suis DevOpp

    Pour revenir à ton application et à l'affichage pour getOppors, tout ce qui commence par var= évoque du javascript
    Le pseudo algo que j'ai donné dans mon précédent message n'a pas d'appartenance à un langage, c'était pour la logique de fonctionnement du module.

  7. #7
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 932
    Points
    932
    Par défaut
    Citation Envoyé par flipflip Voir le message
    En fait je suis tout seul au service info (petite structure) et j'assure l'adminSys et le dev... Je crois que je suis DevOpp
    Bienvenue au club, alors
    Dans ces conditions, tant que tu restes dans ton budget, tu as effectivement une latitude certaine. Attention quand même à la documentation de tes œuvres.
    Pense aussi à mesurer le temps que tu passes à faire ces développements originaux, car cela fait partie des actifs de l'entreprise.

    Recense les points où tu te sens moins à l'aise côté jQuery (manipulation du DOM, AJAX, manipulation des objets Javascript ou du JSON, etc.) pour vérifier à quel point tel ou tel framework te simplifie la vie sur ces aspects-là.
    Tu peux te lancer dans des tutoriels une fois que tu auras défini ta short-list. Je pratique ceux d'Openclassrooms ; ce n'est sans doute pas parfait, mais ça va vite, les points de contrôles -quiz- et les TP te mettent le pied à l'étrier (d'ailleurs je m'aperçois que les tutoriels Laravel 5 ont le même auteur sur OC et ici...) Tu auras déjà une idée beaucoup plus concrète, si tu es prêt à y consacrer un peu de temps.

    Personnellement je n'ai pas voulu me lancer dans un framework, parce que j'en ai déjà un peu bavé quand il a fallu se lancer en solo et sans filet dans une première application .NET "savonneuse" (consommation de web service Soap). Le truc fonctionne mais c'est assez cracra faute de maîtriser la bestiole -et encore, c'est du procédural...
    Pour l'instant je préfère comprendre précisément comment ça se passe en PHP/jQuery sur l'existant que je dois maintenir avant de lancer les bulldozers, surtout que je trouve la gestion des erreurs passablement brumeuse côté browser - mais j'y viendrai peut-être... et je te demanderai des conseils

Discussions similaires

  1. Intégration PHP et jquery week calendar?
    Par Sayrus dans le forum Langage
    Réponses: 8
    Dernier message: 22/10/2009, 16h25
  2. php et jquery récupérer un $_POST
    Par elcastor dans le forum jQuery
    Réponses: 1
    Dernier message: 06/06/2009, 18h46
  3. Moteur de recherche PHP - Ajax - Jquery - SQL
    Par visual3d dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/05/2009, 16h45
  4. [JQUERY] Comment appeler une fonction php avec jquery
    Par popogendarme dans le forum jQuery
    Réponses: 1
    Dernier message: 20/03/2007, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo