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 :

Surligner le résultat d'une requête


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Surligner le résultat d'une requête
    Bonjour a tous, voilà mon problème :

    J'ai créé une base de données qui recense tous les fichiers multimédias que je possède dans plusieurs tables d'une base de données MySQL, et on peut rechercher une élément par nom, acteur(s) et genres.

    La question est la suivante :

    Comment puis-je faire en sorte que, quand quelqu'un tape par exemple "Jason Statham", cet élément soit surligné dans les résultats ? J'ai pas mal fouillé, mais la je ne trouve rien du tout, je m'en remet à vous.

    Merci

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Vous pouvez utiliser la fonction str_replace qui permet de modifier une portion de texte par une autre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $search = 'Jason';
    $text = 'Jason est vraiment le meilleur !';
    $text = str_replace($search, '<strong>'.$search.'</strong>', $text);

  3. #3
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    Cherche: http://www.google.be/search?q=css+surligner

    Si tu cherches à surligner à la demande avec php :
    Il ne faut alors plus que préciser la condition,
    le fichier css possédant alors les classes ( surligner et normal) avec leurs valeurs trouvées dans le lien plus haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <span class='<?php if(condition){echo "surligner";}else { echo "normal";} ?>
    '> TEXTE A SURLIGNER</span>

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses, j'ai essayé la proposition de ThomasR, et il y a eu une erreur de comprehension (j'ai du mal m'exprimer)

    Voici donc la nouvelle question :

    je veux trouver dans ma base de données un film du nom de Death Race, si je tape dans le formulaire "death", il m'affichera donc la fiche complète du film, mais il surlignera juste le mot "death", et il affichera quand même le mot "race" après. Peut-être que c'est un peu plus clair ? En tout cas merci pour la rapidité des réponses, j'en suis cloué

  5. #5
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    Sans le code sous les yeux ce sera dur de te répondre,

    Il se pourrait que le code html généré soit :
    D'ou le surlignage, si c'est le cas, tu dois t'arranger pour modifier ton script pour que la ligne de sortie soit plutot

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $req=mysql_query("SELECT * FROM films WHERE name LIKE '%".$_POST['search']."%' ORDER BY name");
    while($ligne=mysql_fetch_array($req))
    {
    echo "<b>Nom du Film</b> :".$ligne['name']."<br/><br/>
    <b>Genres :</b>".$ligne['type']."<br/><br/><b>
    Acteurs :</b>".$ligne['acteurs']."<br/><br/><b>
    Résumé :<br/></b>".$ligne['resume']."";
    }
    En gros, même si le nom n'est pas complet, il l'affichera en entier, mais surlignera (ou mettra en gras) ce que l'utilisateur a tapé, par exemple :

    je tape "death"

    Il m'affichera le film de la sorte "Death Race" ou "Death Race" (en notant que dans la BDD, il y a l'entrée Death Race)

  7. #7
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    ok je pense avoir compris,

    Donc tu tapes
    tu recois
    tu voudrais
    L'utilisation de la commande str_ireplace me parait judicieuse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $name = str_ireplace($_POST['search'],'<b>'.$_POST['search'].'</b>',$ligne['name']);
    Placé dans la fiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $req=mysql_query("SELECT * FROM films WHERE name LIKE '%".$_POST['search']."%' ORDER BY name");
    while($ligne=mysql_fetch_array($req))
    {
    echo "<b>Nom du Film</b> :".$name."<br/><br/>
    <b>Genres :</b>".$ligne['type']."<br/><br/><b>
    Acteurs :</b>".$ligne['acteurs']."<br/><br/><b>
    Résumé :<br/></b>".$ligne['resume']."";
    }

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Waw ! ça marche nickel, je ne sais comment te remercier !

    Je me rend compte que je vais devoir boulotter toutes les fonctions, étant donné que j'ai commencé le php il y a 2 semaines

    Merci pour tout !

  9. #9
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    C'est exactement le code que je t'ai donné plus haut.

    Pour information, préfères utiliser la balise <strong /> que <b />, strong va indiquer une forte pondération du mot, b ne sert qu'à la présentation, pas la sémantique.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 37
    Points : 21
    Points
    21
    Par défaut surligner le mot trouvé dans une base de données
    Citation Envoyé par speedy_g Voir le message
    ok je pense avoir compris,

    Donc tu tapes
    tu recois
    tu voudrais
    L'utilisation de la commande str_ireplace me parait judicieuse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $name = str_ireplace($_POST['search'],'<b>'.$_POST['search'].'</b>',$ligne['name']);
    Placé dans la fiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $req=mysql_query("SELECT * FROM films WHERE name LIKE '%".$_POST['search']."%' ORDER BY name");
    while($ligne=mysql_fetch_array($req))
    {
    echo "<b>Nom du Film</b> :".$name."<br/><br/>
    <b>Genres :</b>".$ligne['type']."<br/><br/><b>
    Acteurs :</b>".$ligne['acteurs']."<br/><br/><b>
    Résumé :<br/></b>".$ligne['resume']."";
    }
    Ceci marche très bien à la condition de ne pas utiliser la fonction ireplace...
    Fatal error: Call to undefined function: str_ireplace() in /

    Mais, je souhaiterais améliorer un peu la solution proposée...
    J'ai donc recours à votre aide, car je n'ai pas réussi.
    Voilà ce que je voudrais arriver à faire :
    que les résultats proposés soient mis en valeur au fur et à mesure.
    Mon script permet de rechercher des mots en provençal dans une base de données,
    mais avec votre script donné ci-dessus, pour que le mot trouvé soit mis en valeur,
    il faut que la demande corresponde exactement à un mot dans la base .
    Je souhaiterais que les premières lettres suffisent...
    Je m'explique,ainsi actuellement,si la recherche porte sur troubadours il faut mettre l'intégralité du mot avec le s du pluriel (car dans la base troubadour ne figure qu'au pluriel).
    Je voudrais qu'en tapant déjà :
    tro* puis trou*, puis troub* puis trouba* etc;
    on ait déjà la mise en valeur dans les résultats proposés.
    Or, avec l'astérisque les mots trouvés, ne sont pas surlignés dans les résultats proposés...
    Ainsi, si je tape troubadour* la réponse s'affiche bien,mais sans la mise en valeur.
    J'espère être clair dans ma question et je vous remercie d'avance pour votre aide.
    http://www.ubaye-verdon.net/provence/formthmH.php?

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

Discussions similaires

  1. Comparer le résultat d'une requête
    Par VirginieGE dans le forum ASP
    Réponses: 3
    Dernier message: 10/08/2004, 15h15
  2. Arrondir le résultat d'une requête
    Par wautierp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/06/2004, 11h56
  3. Résultat d'une requête dans une variable...
    Par Hoegaarden dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/04/2004, 13h51
  4. Résultat d'une requète SQL
    Par camino dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/02/2004, 15h22
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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