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

Administration MySQL Discussion :

[MySQL] Créer des liens automatiquement depuis un commentaire posté.


Sujet :

Administration MySQL

  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 [MySQL] Créer des liens automatiquement depuis un commentaire posté.
    Bonjour,
    Je viens d'avoir une idée assez bonne pour mon site , mais un peu complexe pour moi.
    Voilà: dans mon admin j'ai un script qui crée des liens automatiquement à partir d'une définitions vers toutes les définitions dont le titre est contenu dans son texte
    Exemple :
    -Définition1 = bob
    -Texte de la définition 1 = vive la pomme de terre.
    Titre des définitions déjà dans la base =
    - pommes
    - frites
    - chocolat.
    Donnera dans la définitions1 : vive les <a href=pomme>pommes</a>de terre.

    C'est pratique, bien que très mal fignolé : si il y a 40 fois le mots ça me sort 40 fois le liens et si on a pommes, alors le 's' se retrouve en dehors du lien.
    Mais je suis derrière pour tout corriger, à défaut d'avoir un script bien fignolé.

    Par contre, ce que je souhaite faire c'est cela :

    Le visiteur poste un commentaire.
    Le script va chercher dans la base si des titres de définitions se trouvent dans le texte du commentaire.
    Si oui le script crée un lien automatiquement sur ce mot, vers la définitions dont le titre est identique.
    Mais cela est automatique, donc doit fonctionner parfaitement : pas de mots tronqués, pas de doublons etc...

    Pour l'instant, mon script est celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // on va chercher tous les titres de  définition dans la base avec l'url correspondante
    $liste="SELECT titre,url FROM mots ";
    $listeR=mysql_query($liste);
    while ($bob= mysql_fetch_assoc($listeR))
    {
    //on remplace dans le texte initiale tous les mots qui corresponde à un titre par ce même titre avec l'url dans le texte du lien.
    $texte=str_replace($bob['titre'],"<a href=\"{$bob['url']}.htm\">{$bob['titre']}</a>",$texte);
    }
    C'est pas parce que j'ai tort que vous avez raison.

  2. #2
    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
    Bon alors j'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $liste="SELECT libelle,urlMotClef FROM definitions ";
    $listeR=mysql_query($liste);
    while ($bob= mysql_fetch_assoc($listeR))
    {
    $libelle=$bob[libelle];
    $libelle=" $libelle ";
    $contenu=str_replace($libelle,"<a href=\"http://www.monsite.com/{$bob['urlMotClef']}.htm\">$libelle</a>",$contenu);
    }
    Comme vous le voyez il y a un espace de chaque coté de " $libelle ".
    A l'affichage, les liens se créent comme il faut :
    but créera un lien sur "but" mais pas sur "début", cela grace aux espaces en question.

    Par contre en faisant cela, le lien du genre http://www.monsite.com/ .htm

    C'est pas super.

    Sans les espaces ça fonctionne "bien", mais j'ai des liens à l'intérieur des mots, genre dé< href="http://www.monsite.com/but.htm">s.
    C'est pas parce que j'ai tort que vous avez raison.

  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
    Bon je viens d'essayer ça aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ($bob= mysql_fetch_assoc($listeR))
    {
    $libelle=$bob[libelle];
    $libelle="#\b$libelle\b#i";
    $contenu=str_replace($libelle,"<a href=\"http://www.monsite.com/{$bob['urlMotClef']}.htm\">$libelle</a>",$contenu);
    }
    Cette fois ça ne crée même plus aucun lien.
    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
    Bon en fait ça fonctionne avec les " ", je sais pas comment j'avais fait mes test.

    Comment je fais pour faire la même chose avec des mots qui sont au pluriels dans le texte et au singulier dans ma liste de titres ?

    Bougez pas je vais répondre aussi.
    C'est pas parce que j'ai tort que vous avez raison.

  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
    le nombre n'est pas tout, il y a le genre aussi. Et également les formes conjuguées... bref => lemmes
    http://fr.wikipedia.org/wiki/Lemme_%28linguistique%29

  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 Mister N, je me sentais un peu seul dans mon post.

    Je vais voir ton lien.

    En fait mon problème est celui là:

    Mon script dit "trouve les mots équivalent à " $var " dans le texte " (notons les espaces dans " $ var ", ils permettent de ne pas avoir des liens en plein milieu d'un mot ).

    Maintenant le problème c'est que si le mot est en début de phrase, si il est en fin de phrase, si il est précédé ou suivi d'un lien (et donc le < ou le > du lien sont collés à lui) etc... et bien là le lien ne se fait plus, idem si il est suivi ou précédé d'un <br> collé à lui.

    L'idée est bonne, je tiens à y arriver mais là c'est pas au point...

    ** edit **

    Bon je viens de lire ton lien, intéressant c'est un fait, d'autant plus que la linguistique m'intéresse. Mais je suis pas Google quand même, pour l'instant je me contenterai de liens vers les titres précis des définitions.
    C'est pas parce que j'ai tort que vous avez raison.

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

Discussions similaires

  1. Creer des liens hypertextes depuis des images
    Par bpm_180 dans le forum VBA Word
    Réponses: 3
    Dernier message: 21/03/2009, 00h46
  2. [MySQL] Générer des liens automatiquement
    Par matto10 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/12/2008, 13h52
  3. importer des liens hypertextes depuis excel
    Par maywen dans le forum Access
    Réponses: 1
    Dernier message: 30/03/2007, 22h52
  4. [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
  5. créer des liens automatiquement mais sans boucle
    Par psychoBob dans le forum Langage
    Réponses: 8
    Dernier message: 15/12/2005, 15h20

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