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] Liens automatiques dans une expression.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Par défaut [Tableaux] Liens automatiques dans une expression.
    Bonjour tout le monde !

    J' avais déjà posé la question sur un précédent forum, mais sans réponse. Pourtant, ce que je souhaite faire n' est pas des plus simples, en tout cas pour moi.

    Présentation du problème :
    J' ai créé une base de données qui contient plusieurs caractéristiques de cartes à jouer (type "Magic" ou "Yu-Gi-Oh!" pour ceux qui connaissent). Ce type de carte contient entre autre une Description. Et dans la description, il peut quelquefois y avoir le nom d' une autre carte de jeu !

    Exemple typique : "Si vous avez plus de 3 points vous pouvez invoquer Supertrucquitue en même temps que cette carte."
    Supertrucquitue est ici le nom d' une carte, inventée pour la (bonne) cause.

    J' ai fait un formulaire qui recherche une ou des cartes suivants les critères disponibles et en affiche les données (un peu comme ici, la classe en moins).

    Mais lors de l' affichage des données, j' aurai voulu :
    1°) Coloriser le nom de la carte quand elle apparait, selon son type (Monstre/Magie/Piège/...).
    2°) Transformer automatiquement l' expression du nom de la carte pour y insérer un lien vers une recherche de celle-ci.

    Laissez moi deviner... C' est pas clair, tout ça...
    En gros, lors de l' affichage du texte, si Supertrucquitue est une carte monstre, on verra marqué : "Si vous avez plus de 3 points vous pouvez invoquer Supertrucquitue en même temps que cette carte."
    Si vous cliquez sur Supertrucquitue, c' est comme si vous aviez lancé une recherche de la carte dans la BdD. Mais dans la BdD, le nom de la carte ne contient pas un <a href="va-me-chercher-cette-carte-quand-on-clique-sur-son-nom"></a>.

    J' espère avoir plus de chances cette fois, car ce qui peut paraitre évident à certains l' est déjà moins pour moi. En tout cas, et quoi qu' il advienne, merci d' avance aux lectrices/lecteurs de s' être au moins penché sur mon problème.

  2. #2
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    alors pour ce qui est de la coloration tu n'as cas utiliser un tableau PHP type clé => valeur par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $correspondance = array (
    "monstre" => "#006699",
    "invocation" => "#8855ff",
    "sort" => "#330011",
    ...);
    pour ce qui est du lien tu peux donner un nom à ton lien et tu récupères ce nom par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="va-me-chercher-cette-carte-quand-on-clique-sur-Supertrucquitue"
    name="Supertrucquitue">Supertrucquitue</a>
    et tu récupères la valeur de name.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Par défaut
    J' avais un peu peur d' une réponse de ce type .

    Car bien que ça puisse paraître idiot, il y a des centaines, voire des milliers de cartes dont la description a une référence à une autre. Il va donc de soi que lorsque j' ai entré les descriptions de chaque carte, boulot ô combien intéressant, je n' ai pas rajouté une balise <a></a> sur les noms des cartes citées.

    La difficulté principale est de reconnaître qu' une chaine de caractères dans la description correspond au nom exact d' une ou plusieurs des autres cartes de la BdD. Pour le moment la seule chose qui me vient à l' idée est un titanesque array de plusieurs milliers de noms, avec une boucle For appliquée à $donnees['Description'].

    Je vous laisse songer à la lenteur du processus. On fait difficilement pire pour une simple page web !

    Le point qui chagrine aussi, c' est que ma recherche passant par un formulaire, la récupération des données se fait avec $_POST[''] et non un $_GET['']. Je n' ai même pas l' assurance de pouvoir lancer une recherche ainsi.

    Concernant la colorisation... L' idée est pas mauvaise, je la garde dans un coin de mémoire. Merci trotters213 .

  4. #4
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    Citation Envoyé par Chloros
    J' avais un peu peur d' une réponse de ce type .

    Car bien que ça puisse paraître idiot, il y a des centaines, voire des milliers de cartes dont la description a une référence à une autre. Il va donc de soi que lorsque j' ai entré les descriptions de chaque carte, boulot ô combien intéressant, je n' ai pas rajouté une balise <a></a> sur les noms des cartes citées.
    Alors peuchère il fallait y penser avant, 80% conception 20% programmation et pas l'inverse
    Il fallait faire des tests sur des échantillon avant de partir dans le grandeur nature.

    Tu peux nous montrer 1 ou 2 exemples de description pour voir ce qu'on pourrait retirer (en utilisant des expressions régulières ou un truc du genre).

    PS :
    Citation Envoyé par Chloros
    Car bien que ça puisse paraître idiot, il y a des centaines, voire des milliers de cartes dont la description a une référence à une autre.
    J'ai un petit frère donc je suis très bien placé pour savoir qu'il y en a des milliers de ces cartes de m....

  5. #5
    Membre éclairé Avatar de pioule
    Profil pro
    Inscrit en
    Août 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 66
    Par défaut
    Salut !

    Pour moi l'idéal serait de mettre le nom de chaque carte dans un délimiteur, par exemple [], et de générer l'affichage par une fonction remplacera le délimiteur par ce qu'il faut avec une expression régulière.

    Exemple avec comme délimiteur [] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function insererLien($chaine)
    {
       $newchaine=preg_replace('`\[([^[]+)\]`s',
    '<a href="affichelacarte.php?nom=$1"><font color="#FF0000"><b>$1</b></font></a>',
    $chaine);  
       return $newchaine;
    }
     
    echo insererLien($chaine);
    Les inconvénients : il faut repasser sur tous les enregistrements pour mettre tes noms de cartes entre crochets , et affichelacarte.php récupère le nom avec un $_GET...

    Après les recherche dans une DB sur un nom j'aime pas trop non plus, mais bon

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

Discussions similaires

  1. [WD-2003] Insérer automatiquement un lien hypertexe dans une image
    Par ybezier dans le forum VBA Word
    Réponses: 1
    Dernier message: 29/07/2012, 20h54
  2. Réponses: 6
    Dernier message: 17/08/2005, 12h38
  3. Insérer une ligne automatiquement dans une autre tab
    Par davyd dans le forum Langage SQL
    Réponses: 10
    Dernier message: 29/03/2005, 17h08
  4. "Différence de type dans une expression" Tquery
    Par Hakim dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/04/2004, 00h22
  5. lien hypertexte dans une anim flash
    Par vedder dans le forum Flash
    Réponses: 17
    Dernier message: 14/01/2004, 14h11

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