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
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X