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

JavaScript Discussion :

Ajouter une variable à href


Sujet :

JavaScript

  1. #1
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut Ajouter une variable à href
    Bonjour.

    Je voudrais à partir d'une liste sélectionner une ligne de mon tableau et le renvoyer pour compléter un formulaire. Pour ce faire j'utilise un lien sur un champ id et une valeur de retour pour revenir à mon formulaire. Ce n'est peut être pas la bonne méthode, mais c'est celle que j'ai trouvé.
    Si je ne mets pas de cote à la valeur href
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href=../BLF/vue_formulaire.php?liste=bl_fournisseur&id=13064&id_stock=
    je peux aisément ajouter une variable en complément.

    Ce n'est pas propre.... Je veux donc mettre des cotes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href='../BLF/vue_formulaire.php?liste=bl_fournisseur&id=13064&id_stock='
    mais je n'arrive plus à ajouter ma variable de retour.

    voici ce que j'ai tenté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                       if(substr_count($valeur,'?')){
                            ?> <td><a <?php print $valeur?> id="lien" 
                                      onclick="document.getElementById('lien').href= <?php print $valeur.'&idR='.$id ?>"
                                    > <?php print $cellule ?>  </a></td> <?php
                       }else{
                            ?> <td><a <?php print $valeur?> id="lien" 
                                      onclick="document.getElementById('lien').href= <?php print $valeur.'?idR='.$id ?>"
                                    > <?php print $cellule ?>  </a></td> <?php
     
                       }
    Mon but est simple, je veux juste changer href.... Mais là, je ne vois pas mon erreur.
    Est ce le principe qui est mauvais, ou le mélange avec du php ?
    Merci de toute aide.
    Débusqueur de bug et chercheur en améliorations

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 636
    Points : 66 655
    Points
    66 655
    Billets dans le blog
    1
    Par défaut
    Regarde ton html (code source généré ... )
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="document.getElementById('lien').href='<?php print $valeur.'&idR='.$id; ?>'"
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    Bonjour Spacefrog. Merci de m'aider...
    Ça ne fait rien. Le href retourné reste inchangé. Je n'ai même pas le '&idR=' au bout de ma ligne.....
    dure dure....
    Voici le contenu de la variable $valeur = href='../BLF/vue_formulaire.php?liste=bl_fournisseur&id=13064&id_stock=0000000000'
    Y aurait-il le 'href=' en trop ?

    J'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                      $valeur= str_replace('href=' , '',$valeur);
                       if(substr_count($valeur,'?')){
                            ?> <td><a href= "<?php print $valeur?>" id="lien" 
                                      onclick='document.getElementById("lien").href= "<?php print $valeur.'&idR='.$id ?>" '
                                    > <?php print $cellule ?>  </a></td> <?php
                       }else{
    mais le href devient fou:
    Il me met l'adresse de la page affichée + $valeur: (j'ai retiré volontairement le http pour ne pas faire une url)
    //localhost/~moi/php/asseleci/pages/stock/%27../BLF/vue_formulaire.php?liste=bl_fournisseur&id=13064&id_stock=0000000000%27
    La ligne onclick= n'a aucun effet...
    C'est de plus en plus surprenant....
    Débusqueur de bug et chercheur en améliorations

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 25
    Points : 46
    Points
    46
    Par défaut
    Pour moi, la variable $valeur ne devrais pas contenir href.
    Elle devrait juste contenir la chaine : ../BLF/vue_formulaire.php?liste=bl_fournisseur&id=13064&id_stock=0000000000
    Pourrais tu nous montrer directement le code source HTML généré par ton script ?

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 636
    Points : 66 655
    Points
    66 655
    Billets dans le blog
    1
    Par défaut
    Regarde ton html (code source généré ... )
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    Citation Envoyé par jzyra Voir le message
    Pour moi, la variable $valeur ne devrais pas contenir href.
    Elle devrait juste contenir la chaine : ../BLF/vue_formulaire.php?liste=bl_fournisseur&id=13064&id_stock=0000000000
    Pourrais tu nous montrer directement le code source HTML généré par ton script ?
    Bonjour jzyra. Je l'ai fait. C'est indiqué dans le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $valeur= str_replace('href=' , '',$valeur);
    La formule magique (qui ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                       if(substr_count($valeur,'?')){
                            ?> <td><a href= "<?php print $valeur?>" id="lien" 
                                      onclick='document.getElementById("lien").href= "<?php print $valeur.'&idR='.$id ?>" '
                                    > <?php print $cellule ?>  </a></td> <?php
                       }else{
                            ?> <td><a <?php print $valeur?> id="lien"  
                                      onclick='document.getElementById("lien").href= "<?php print $valeur.'?idR='.$id ?>"'
                                    > <?php print $cellule ?>  </a></td> <?php
     
                       }
    génère ce code:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        <form action="vue_formulaire.php" method="POST" name="liste" id="liste" >
     
        <table align="center">
     <tr>  <td><a href= "'../BLF/vue_formulaire.php?liste=bl_fournisseur&id=13064&id_stock=0000000000'" id="lien" 
                                      onclick='document.getElementById("lien").href= "'../BLF/vue_formulaire.php?liste=bl_fournisseur&id=13064&id_stock=0000000000'&idR=0000002082" '
                                    > 0000002082  </a></td> 
    <td><a liste=blf_stock&id=0000002082>ACCU</a></td>
    <td><a liste=blf_stock&id=0000002082>Pieces Frigo</a></td><td align=right><font color=cyan>0.0</font></td>
    <td><a liste=blf_stock&id=0000002082>Accu pour philips hr23041</a></td>
    <td align=right><font color=cyan>52.27</font></td>
    <td align=right><font color=cyan>0.0</font></td>
    <td align=right><font color=cyan>0.0</font></td>
    <td><a httpliste=blf_stock&id=0000002082>&nbsp;</a></td>
    </tr>

    Il semble qu'il y a des problèmes de syntaxe. La fatigue me gagne. Je n'arrive pas à m'y retrouver....
    Merci.
    Débusqueur de bug et chercheur en améliorations

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 939
    Points : 44 112
    Points
    44 112
    Par défaut
    Bonjour,
    le code généré montre que tu as des problèmes avec les simple et double quottes.

    Tu peux avantageusement remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id="lien" onclick='document.getElementById("lien").href=
    par un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick = 'this.href="...
    PS : je ne vois pas trop l’intérêt de modifier au click l'attribut href, pourquoi ne pas mettre tout de suite la bonne URL ?

  8. #8
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    PS : je ne vois pas trop l’intérêt de modifier au click l'attribut href, pourquoi ne pas mettre tout de suite la bonne URL ?
    C'est le genre de truc qui me rend dingue quand un site fait ça. C'est pas prévisible, c'est pas accessible, c'est pas maintenable, c'est pas efficace… Bref, c'est pas bien !
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  9. #9
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    OK. Comme je l'ai déjà dit, je ne demande qu'a m'améliorer, mais je fais avec mes simples connaissances. (Je n'ai rien appris à l'école, je suis seulement autodidacte).
    J'ai construit un formulaire. Afin de compléter ce dit formulaire, je pointe sur une liste. Pour les stocks, elle doit être à jour donc envoyée par le serveur.

    Dans cette liste j'ai introduit des hyper-liens.

    Chaque lien doit être capable de relever l'id de la ligne choisie et le renvoyer vers un formulaire bien précis.
    La variable $valeur, me renvoie vers mon formulaire d'origine. Je veux juste y ajouter un id pour exploiter la suite sur mon formulaire.

    Dans la 1ere version de mon travail je faisais pire, mais ça fonctionnait. Maintenant, que je passe à msqli je veux faire du meilleur travail.

    Donc, je pose la question très directement: Si ce n'est pas du bon travail, comment procéder autrement ?
    Merci.

    Merci à nosmoking. ( Moi aussi, je ne fume pas). Je retient ta remarque.
    Débusqueur de bug et chercheur en améliorations

  10. #10
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 939
    Points : 44 112
    Points
    44 112
    Par défaut
    Donc, je pose la question très directement: Si ce n'est pas du bon travail, comment procéder autrement ?
    est ce que tu ne serais pas en train de réinventer l'utilisation d'un formulaire classique ?
    Code html : 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
    <form action="vue_formulaire.php" method="POST">
     <input type="hidden" name="liste" value="bl_fournisseur">
     <input type="hidden" name="id_stock" value="0000000000">
     <table>
       <tr>
         <td><input type="radio" name="idR" value="0000002082"></td>
         <td>ACCU</td>
         <td>52.27</td>
       </tr>
       <tr>
         <td><input type="radio" name="idR" value="0000002083"></td>
         <td>Pieces Frigo</td>
         <td>0.00</td>
       </tr>
       <tr>
         <td><input type="radio" name="idR" value="0000002084"></td>
         <td>Accu pour philips hr23041</td>
         <td>0.00</td>
       </tr>
     </table>
     <p><input type="submit" value="Envoi"></p>
    </form>

  11. #11
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    C'est tout à fait ça no smoking. Je viens de modifier mon code et tout roule. Il n'y a pas besoin d'utiliser de JS pour faire ce genre de travail.
    J'étais gêné par une cote, mais maintenant ça roule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                       $valeur= substr($valeur,0,-1);
                       if(substr_count($valeur,'?')){
                           $valeur.="&idR=$id'";
                       }else { $valeur.="?idR=$id'";}
     
                            ?> <td><a <?php print $valeur?> > <?php print $cellule ?>  </a></td> <?php
     
                       }
    Merci à toi et watilin qui m'a mis sur la bonne piste.
    Je clos le sujet.
    Débusqueur de bug et chercheur en améliorations

  12. #12
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je ne sais plus si c'est à toi que je disais ça dans un précédent post, mais en général il y a moyen d'éviter les imbrications de guillemets, en évitant les « niveaux d'imbrication » des différents codes. Par exemple, du HTML dans du JS dans du PHP. C'est normal de générer du HTML au moyen de PHP ; en revanche, ça l'est moins de générer du JS, et encore moins de générer du HTML au moyen de JS qui a lui-même été généré. Donc si tu rencontres encore un problème de guillemet, pose-toi la question : est-ce que je n'ai pas moyen de faire autrement ?

    Citation Envoyé par LampeRouge
    Il n'y a pas besoin d'utiliser de JS pour faire ce genre de travail.
    Exactement. C'est plus simple quand tout se passe d'un seul côté, client ou serveur.

    Pour préciser un peu ma remarque précédente, ce que je qualifie de « pas bien », c'est le fait de modifier le href au moment où l'utilisateur clique. Si tu le modifies avant, il n'y a pas de souci. Quand on survole un lien, tu l'as sûrement remarqué, l'adresse de destination apparaît dans un coin de la fenêtre. Ceci permet à l'utilisateur de contrôler sa navigation : il peut éviter de se retrouver sur des sites qu'il ne veut pas visiter (par exemple un site malicieux ou un rickroll). Si tu modifies le href au moment du clic, tu retires ce contrôle à l'utilisateur, et ça peut être vu comme une tentative de clickjacking. Gmail et Facebook, entres autres, font ça à des fins de statistiques/tracking.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  13. #13
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    Effectivement. Je prends note de tous les écueils que je rencontre afin de ne pas les répéter.... Et je remercie la communauté de me tirer les épines du pied. C'est un super moyen que d'apprendre par l'échec. On retient beaucoup mieux.
    Bien amicalement.
    Débusqueur de bug et chercheur en améliorations

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter une variable d'environnement
    Par julien.63 dans le forum Développement OS X
    Réponses: 4
    Dernier message: 14/06/2007, 01h34
  2. Réponses: 1
    Dernier message: 14/02/2007, 18h08
  3. ajouter une variable à une chaine
    Par youtou dans le forum C
    Réponses: 11
    Dernier message: 06/06/2006, 16h11
  4. Réponses: 1
    Dernier message: 30/03/2006, 08h19
  5. ajouter une variable sur un control
    Par gijy dans le forum MFC
    Réponses: 15
    Dernier message: 21/03/2006, 19h18

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