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 :

créer des liens automatiquement mais sans boucle


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 créer des liens automatiquement mais sans boucle
    Bonjour,

    Je viens de terminer une épouvantable lutte contre le script ci-dessous. Son but est simple :
    J'entre un texte($texte), son titre($libelle) et son titre pour l'url ($urlMotClef) dans l'admin.
    Ensuite je récupère ce texte via la liste de tous les textes classés par titre.
    Le script ci-dessous va ensuite repérer dans ce texte tous les titres des autres textes et créer des liens automatiquement vers eux en reprenant leurs urlMotClef .
    exemple :
    titre (libelle) = j'aime mon pc
    titre pour l'url (urlMotClef)= j-aime-mon-pc
    lien final = < href="http://www.lesite.com/j-aime-mon-pc.htm">j'aime mon pc </a>.
    C'est très pratique.

    Mais il y a encore un foyer de résistance :
    Si un titre se retrouve x fois dans le texte, le script va créer x lien. Alors bien sur qu'une seule fois serait suffisant.
    Et là ma foi je n'ai pas assez l'expérience du terrain pour mener à bien cet assaut final.

    Donc je viens chercher du renfort.


    Le script :
    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
     
    <?php
    // d'abord on va récupérer le texte correspondant à celui dont on a choisi le titre depuis un select
    $valider="SELECT texte FROM textes WHERE urlMotClef ='$interneLiaison'";
    $validerR=mysql_query("$valider");
    while ($r=mysql_fetch_array($validerR))
    {
    $def=$r[texte];
    };
    mysql_free_result ($validerR)
    ?>
     
    <?php
    // maintenant on va récupérer tous les titres et tous les titres pour l'url des textes autres que celui choisi (pour ne pas faire des liens du texte vers lui même)
    $liste="SELECT libelle,urlMotClef FROM definitions WHERE urlMotClef != '$interneLiaison' ORDER BY urlMotClef ";
    $listeR=mysql_query($liste);
    while ($bob= mysql_fetch_assoc($listeR))
    {
    $def=str_replace($bob['libelle'],"<a href=\"http://www.lesite.com/{$bob['urlMotClef']}.htm\">{$bob['libelle']}</a>",$def);
    }
    echo"
    <div align=\"left\">
    $def</div> <p>
    <textarea cols=\"50\" rows=\"20\" name=\"defLiaison\">$def</textarea><p>
    <p>
    
    ";
    mysql_free_result($listeR);
    ?>
    C'est pas parce que j'ai tort que vous avez raison.

  2. #2
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut
    tu as essayé avec un select distinct ?

  3. #3
    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
    ah non tiens, je vais essayer, je reviens dans 5 minutes.
    C'est pas parce que j'ai tort que vous avez raison.

  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
    ça ne change rien. c'eut été trop facile
    C'est pas parce que j'ai tort que vous avez raison.

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Salut,

    Si j'ai bien compris ton problème.

    Avec le texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Voila du texte blah blah blah
    Et que l'on veuille créer un lien avec le mot blah.

    tu obtiens 3 liens ( puisqu'ilyà 3 fois blah fans le texte ), c'est bien cela ?

    Dans ce cas la le problème se situe au niveau de str_replace, qui remplace toutes les occurences trouvées (cf http://www.php.net/manual/fr/function.str-replace.php).


    A ce problème la solution est d'utiliser strpos et substr_replace.

    En gros, à vérifier..., cela devrait s'approcher de la solution.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $Pos = strpos($texte, $mot );
    $texte = substr_replace($texte , "<a>".$mot."</a>", $Pos , strlen($mot) );
    Désolé de ne pas l'avoir vérifié mais je n'ai pas trop le temps la :/

    Bye

  6. #6
    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 pour ta réponse, je vais essayer cette piste.
    C'est pas parce que j'ai tort que vous avez raison.

  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
    ça fait pshiiiiitt.
    C'est pas parce que j'ai tort que vous avez raison.

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    :
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  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
    Je veux dire que le résultat est difficilement descriptible, ça me sort pleins de liens avec plus ou moins tous les titres.


    Mais il faut dire que là je suis fatigué, j'ai quasiment recopié le script en l'état.



    je vais réessayer après avoir mangé.
    C'est pas parce que j'ai tort que vous avez raison.

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

Discussions similaires

  1. [XL-2010] Créer des liens hypertextes automatiquement sur les valeurs d'une colonne
    Par Mikayel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/10/2014, 15h22
  2. créer des onglets automatiquement
    Par bnreb10 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 07/08/2006, 09h05
  3. [FTP] Qui a le scrit pour créer des liens automatiques ?
    Par JackBeauregard dans le forum Langage
    Réponses: 4
    Dernier message: 03/07/2006, 20h37
  4. Réponses: 5
    Dernier message: 13/06/2006, 23h27
  5. Réponses: 5
    Dernier message: 24/01/2006, 01h16

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