Comment récupérer l'id d'un élément de table BDD choisi par l'utilisateur ?

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Comment récupérer l'id d'un élément de table BDD choisi par l'utilisateur ?

    Bonjour,

    Je bute depuis bien des heures sur l'écriture d'une astuce, dans un script php. Je m'explique :

    - après une sélection, je liste dans un tableau scrollable les enregistrements d'une table de ma BDD,
    - pour chaque ligne de ce tableau, j'affiche l'id de l'enregistrement, et quelques autres données (sans importance pour ma question), ainsi qu'un bouton permettant à l'utilisateur -en le cliquant- de préciser quelle ligne il choisit,
    - après le clic de l'utilisateur, je souhaite récupérer dans une variable l'id de l'enregistrement cliqué (pour poursuivre un traitement sur ledit enregistrement).

    Tout en précisant que je souhaite que tout ceci soit dans un seul et même script (ex: pas de lien dirigeant vers une autre page).

    Question: qui aurait l'amabilité de me montrer la ou les lignes qu'il convient d'écrire pour afficher convenablement chaque enregistrement avec l'écriture correcte du bouton (ou lien, ou autre) ?

    Avec mes remerciements anticipés.

  • #2
    Envoyé par lendrevi Voir le message
    Bonjour,

    Je bute depuis bien des heures sur l'écriture d'une astuce, dans un script php. Je m'explique :

    ...

    Tout en précisant que je souhaite que tout ceci soit dans un seul et même script (ex: pas de lien dirigeant vers une autre page).

    ....
    Dans tous les cas il faut une url, même si c'est la même que la page courante (mais avec des paramètres différents), c'est la logique du web pour régénérer la page.

    Mais dans la logique de développement de Joomla, il y a des classes du framework différentes pour les items (au pluriels) et pour un item, donc 2 vues différentes, des models differents, et donc aussi 2 url différentes (comme les vues de com_content : articles -en fait category- et article).

    Donc pour en revenir plus précisément à ta demande, soit tu génères dans ta vue tes boutons ou tes liens avec une balise html de type a avec l'url du lien (méthode GET) et l'id de la ligne en paramètre.

    Voir par exemple /components/com_content/views/category/blog_links.php

    Dans cet exemple on appelle la méthode getArticleRoute du helper ContentHelperRoute qui retourne l'url en clair du lien (voir components/com_content/helpers/route.php)

    Ensuite la methode _ de JRoute ne fait qu'appeler ton routeur (en /components/com_content/router.php) pour voir s'il faut et comment calculer l'url SEO.


    Soit tu utilises un formulaire html (donc méthode POST) mets une case à cocher, avec comme valeur l'id, et pour chaque bouton, un javascript qui coche la case de la ligne courante et valide le formulaire.

    Après quel que soit la méthode il te faudra vérifier que l'id demandé figure bien dans les id proposés pour éviter toute tentative d'accès à des id non autorisés si un internaute mal intentionné bricole un peu.

    Pour cela le + simple tu peux mettre les id proposés en variable de cession pour effectuer la vérification qui va bien au retour du lien ou du formulaire, juste après le contrôle du jeton (token).
    Dernière édition par roland_d_alsace à 28/06/2019, 14h09
    A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
    Rejoignez le Joomla Users Groupe Alsace...
    roland_d_alsace va-t-il devenir roland_du_grand_est ?

    Commentaire


    • #3
      Bonjour Roland,

      Je te remercie pour cette réponse rapide, didactique, et explicite.
      J'opterais volontiers pour ta seconde méthode où tu me proposes :

      "... tu utilises un formulaire html (donc méthode POST) mets une case à cocher, avec comme valeur l'id, et pour chaque bouton, un javascript qui coche la case de la ligne courante et valide le formulaire"

      Je comprends bien la mise en place du formulaire et de sa seule case à cocher apparaîssant sur chaque ligne de mon tableau, mais je ne comprends pas ce que tu entends par :

      "... et pour chaque bouton, un javascript qui coche la case de la ligne courante et valide le formulaire"

      Pourrais-tu, stp, me donner un exemple d'écriture d'un tel bouton ? Merci beaucoup pour cette piste.

      Commentaire


      • #4
        Euréka, je viens d'arriver à bon port ...
        Merci encore, Roland.

        Commentaire


        • #5
          Envoyé par lendrevi Voir le message
          Bonjour Roland,

          Je te remercie pour cette réponse rapide, didactique, et explicite.
          J'opterais volontiers pour ta seconde méthode où tu me proposes :

          "... tu utilises un formulaire html (donc méthode POST) mets une case à cocher, avec comme valeur l'id, et pour chaque bouton, un javascript qui coche la case de la ligne courante et valide le formulaire"

          Je comprends bien la mise en place du formulaire et de sa seule case à cocher apparaîssant sur chaque ligne de mon tableau, mais je ne comprends pas ce que tu entends par :

          "... et pour chaque bouton, un javascript qui coche la case de la ligne courante et valide le formulaire"

          Pourrais-tu, stp, me donner un exemple d'écriture d'un tel bouton ? Merci beaucoup pour cette piste.
          Cette formule est un peu moins simple, car tu récupères un tableau.
          Tu peux t'inspirer de la méthode featured de /administrator/components/com_content/controllers/articles.php
          Pour le javascript, je n'ai rien sous la mains là (je suis bien loin de mes ordis), mais cela se trouve assez facilement sur la toile.



          Sinon plus simple encore, oublie la checkbox et fait une petite fonction javascript pour initialiser une variable de type hidden prévue dans le document à la valeur id passée en paramètre puis qui valide le formulaire.
          Cette fonction serait appelé par la méthode onclick de chaque bouton avec en parametre l'id de l'article.

          Je pense à un JS du genre (juste pour l'idée, à fignoler) :
          Code:
           function DoSubmit(id){
            document.myform.pid.value = id;
            document.getElementById("myform").submit();
          }
          Et le formulaire

          Code:
           <form name="myform" id="myform" action=".....">
          <input type="hidden" name="pid" value="0" /> ....
          <table>
          <tr><td>article id:1<input type="submit" name="submit" onclick="DoSubmit('1')" /</td></tr>
          <tr><td>article id:2<input type="submit" name="submit" onclick="DoSubmit('2')" /</td></tr>
          ....
          </form>
          Dernière édition par roland_d_alsace à 28/06/2019, 16h09
          A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
          Rejoignez le Joomla Users Groupe Alsace...
          roland_d_alsace va-t-il devenir roland_du_grand_est ?

          Commentaire

          Annonce

          Réduire
          1 sur 2 < >

          C'est [Réglé] et on n'en parle plus ?

          A quoi ça sert ?
          La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

          Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

          Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
          Comment ajouter la mention [Réglé] à votre discussion ?
          1 - Aller sur votre discussion et éditer votre premier message :


          2 - Cliquer sur la liste déroulante Préfixe.

          3 - Choisir le préfixe [Réglé].


          4 - Et voilà… votre discussion est désormais identifiée comme réglée.

          2 sur 2 < >

          Assistance au forum - Outil de publication d'infos de votre site

          Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

          Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

          Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

          UTILISER À VOS PROPRES RISQUES :
          L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

          Problèmes connus :
          FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

          Installation :

          1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

          Archive zip : https://github.com/AFUJ/FPA/zipball/master

          2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

          3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

          4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

          5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

          6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
          et remplacer www. votresite .com par votre nom de domaine


          Exemples:
          Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
          Télécharger le script fpa-fr.php dans: /public_html/
          Pour executer le script: http://www..com/fpa-fr.php

          Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
          Télécharger le script fpa-fr.php dans: /public_html/cms/
          Pour executer le script: http://www..com/cms/fpa-fr.php

          En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

          Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
          Voir plus
          Voir moins

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X