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 :

[Tableaux] Placer une balise <href></a> dans le value d'un input text


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut [Tableaux] Placer une balise <href></a> dans le value d'un input text
    Bonjour,

    Je n'arrive pas à faire un truc qui à première vue me parraissait simple :
    Placer dans le value dans input un texte de lien pour proposer aux visiteurs de faire un lien depuis leur site.

    J'ai essayé cela (il y a un urlRewriting):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $link="<A href=/"http://www.site.com/$page.htm/">dico</a>"
    ?>
    <input type="text" value="<?php echo"$link" ?>" size="50">
    Mais en pratique, ça m'affiche dans le value :
    <a href=
    et rien d'autre, puis hors du value :
    dico" size="50">

    J'ai essayé en faisant cela mais c'est pareil :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="text" 
    value="<a href="http://www.site.com/<?php echo"$page"?>.htm">
    dico</a>" size="50">

    Je fois faire commment ?

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlentities($link, ENT_QUOTES)
    ?

  3. #3
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 864
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 864
    Points : 3 437
    Points
    3 437
    Par défaut
    Salut,

    Je vois un problème dans ton code initial :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $link='<A href="http://www.site.com/"' . $page . '.htm">dico</a>';
    ?>
    <input type="text" value="<?php echo $link; ?>" size="50">
    Ca devrait mieux fonctionner, sinon regarde du coté de la suggestion de Mr.N A+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Non ça ne fonctionne pas.

    j'ai essayé le truc de MrN, ça ne fonctionne pas.

    J'ai esayé le truc de KiLVaiDeN, fonctionne pas non plus.

    J'ai essayé plein de variante avant et sans les ' " et c'est pareil.

    Si je fais juste ça, c'est bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="text" value="http://www.site.com/<?php echo"$page"?>.htm" size="50">
    Alors je viens de réessayer cela, c'est le plus simple à priori, mais non ça donne le même résultat qu'indiqué au premier post :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <input type="text" 
    value=
    "
    <a href="http://www.site.com/<?php echo"$page"?>.htm">dico</a>
    " 
    size="50">

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ceci marche impeccable chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $page = 'ma_page';
    $link = '<A href="http://www.site.com/'. $page .'.htm/">dico</a>';
    ?>
    <input type="text" value="<?php echo htmlentities($link, ENT_QUOTES); ?>" size="50" />

  6. #6
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 864
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 864
    Points : 3 437
    Points
    3 437
    Par défaut
    Arg oui dans mon code j'ai justement oublié le htmlentities

    Le code de Mr.N est le bon A+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Cela fonctionne, merci les gars, qu'est ce que je ferais pas sans vous !


    Je voudrais bien comprendre quand même :

    -Dans $link, que changent les ' par rapport aux " ?
    -Toujours dans $link, pourquoi écrire '. $page.' et pas simplement $page ?
    -A quoi sert au juste le htmlentities ?
    -A quoi sert ensuite le ENT_QUOTES en paramètre ?

  8. #8
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 864
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 864
    Points : 3 437
    Points
    3 437
    Par défaut
    Salut, voici les explications :

    1) Quand tu utilises des chaines de caractères délimitées par des simples quotes ( ' ) ce sont des chaines simples, où les variables PHP ne sont pas interpretées. Ainsi, si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'la variable contient : $coucou';
    Ca va t'afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    la variable contient $coucou
    et pas le contenu de la variable $coucou.

    Donc, pour pouvoir afficher des variables, tu es obligé de faire des concaténations quand tu utilises les chaines en simple quote, et donc de faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'la variable contient : ' . $coucou;
    2) Quand tu utilises des chaines avec des double quotes ( " ) tes variables sont interpretées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "la variable contient : $coucou";
    Fonctionnera et t'affichera bien le contenu de la variable.

    Maintenant pourquoi utiliser des chaines en simple quote ? Parce que pour afficher du HTML, qui contient enormément de double quotes, ça deviendrait vite illisible.

    Test de lisibilité, que préfères-tu entre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<a href=\"http://www.google.fr\" title=\"$google\">$google</a>";
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="http://www.google.fr" title="' . $google . '">'. $google . '</a>';
    Je préfère la version 2, car tu vois tout de suite quelles sont les variables utilisées. En plus tu peux faire des appels de méthodes, des accès à un tableau, etc.. alors qu'avec la méthode 1 c'est plus compliqué.

    De plus, les chaines de type double quote sont plus lentes à afficher, car elles passent par un parseur qui cherche les variables à interpreter, alors que les chaines en simple quotes sont plus rapides.

    3) et 4) en gros, htmlentities sert à échapper les caractères non compatibles, et quand tu rajoutes ENT_QUOTES, ça t'échappe les quotes convenablement ( en ajoutant les \' nécéssaires ). Voir la doc PHP à ce sujet.

    Voila A+

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    merci


    Par contre je ne pige pas trop l'utilité d'échapper les quotes avec htmlentities puisque de toute façon les quotes de la variable link ne sont pas interprétés, sa valeur étant entre simple quote.

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

Discussions similaires

  1. [DOM] Placer une balise div vide
    Par Doc_xhtml dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 12/12/2011, 18h05
  2. onClick dans une balise <a href>
    Par coshibe dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 17/11/2011, 16h24
  3. Réponses: 2
    Dernier message: 10/08/2010, 11h21
  4. [Tableaux] Récupérer le contenu d'une balise HTML
    Par StarNab dans le forum Langage
    Réponses: 2
    Dernier message: 01/09/2006, 12h38
  5. [META] Une balise pour ne pas mettre la page dans le cache
    Par PierrotY dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 23/06/2006, 07h36

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