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

PHP & Base de données Discussion :

Récupérer un résultat et le mettre en avant


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut Récupérer un résultat et le mettre en avant
    bonjour a tous,

    J'ai fait un moteur de recherche avec une belle pagination.
    J'aimerais recuperer le resultat sql et mettre le mot du $_POST
    en coloration dans le resultat de la requete.

    est ce possible?

    merci d'avance de votre aide

    cordialement

  2. #2
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    mettre le mot du $_POST
    Je pense que tu veux dire par ceci, le critères de recherche saisie par l'utilisateur?

    Dans ce cas si ton formulaire contient ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rechercher:<input type=text name=critere size=20>
    Tu vas récupérer ceci une fois posté comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<b>".$_POST['']."</b>"
    Pour le code SQL, post nous ce que tu as déjà fait et on vera.

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut
    voila mon code sql :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <?php
     
     include('config.php');
     
    if( isset($_GET['page']) && is_numeric($_GET['page']) )
    {
      $page = $_GET['page'];
      }
    else{
      $page = 1;} 
     
     $nb_par_page = 10;
     
     $debut = ($page-1)*$nb_par_page;
     
    $reponse = mysql_query("SELECT * FROM trouver WHERE MATCH(titre,description,url) AGAINST('$mot1' IN BOOLEAN MODE) AND MATCH(langue) AGAINST('+$langue' IN BOOLEAN MODE) LIMIT $debut,$nb_par_page  ");
     
        while ($donnees = mysql_fetch_array($reponse) )
       {
     ?>
     <br>
        <u><?php echo $donnees['titre']; ?></u><br><?php echo $donnees['description'];?><br><a href="<?php echo $donnees['url']; ?>"><?php echo $donnees['url']; ?></a>
    	<br><br>
     <?php 
     }
     
     
     $resultat = mysql_query("SELECT * FROM trouver WHERE MATCH(titre,description,url) AGAINST('$mot1' IN BOOLEAN MODE) AND MATCH(langue) AGAINST('+$langue' IN BOOLEAN MODE) ");
     $nrows = mysql_num_rows($resultat) or die(mysql_error()) ;
     $totalDesMessages = $nrows;
     
     $nombreDePages = ceil($totalDesMessages / $nb_par_page) ;
     
     echo "<br><br>";
     
    if($debut>0) 
                {
                echo "<a href=resultat.php?page=".($page-1)."><<</a>  ";    
                }            
     
                for ($i = 1 ; $i <= $nombreDePages ; $i++)
                {
     
                if($i==$page) 
                {
                 echo ' <font color="#CC0033"> ['.$i.'] </font> '; 
                }	
                else 
               {
                echo ' <a href="resultat.php?page='.$i.'">'.$i.'</a> ';
                }
                }
            if(($debut+$nb_par_page)<$nrows)
                {
                echo "<a href=resultat.php?page=".($page+1).">>></a>";
                }
     
     
     
     
    echo "</center>";
        mysql_close();
    ?>
    et j'ai fait passer tout en session donc $_POST['truc'] = $_SESSION['truc']


  4. #4
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    bhe il suffit de faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str_replace($_POST['truc'], '<font color="red">'.$_POST['truc'].'</font>', $resultat_de_la_requete);
    non ?

  5. #5
    Membre averti
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut
    oui j'ai essayé mais sa ne me renvoie pas le mot dans le resultat en couleur

    d'une aurai pas une autre solution

    merci

  6. #6
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    p'tet en essayant de mettre trim() zutour des variables (pour supprimer les espaces)... Car y'a pas de raison que ça ne marche pas !

    str_replace(trim($_POST['truc']), '<font color="red">'.trim($_POST['truc']).'</font>', $resultat_de_la_requete);

    A moins qu'il n'y ai plusieurs mots dans ta recherche, of course

  7. #7
    Membre averti
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut
    ben oui sa doit etre par ce qu'il ya plusieus mot dans ma recherche ,

    mais comment proceder alors?


  8. #8
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Ca depend de ta recherche... si c'est une recherche par exepression, ça ne devrait rien changé. Si c'est une recherche mot par mot (donc que tu tests chaque mots dans la requete SQL), alors faut faire la manip mot par mot...

    recherche : voiture rouge
    sql : select * from texte where lower(texte) like "%'.mysql_escape_string('voitre').'%" or lower(texte) like "%'.mysql_escape_string('rouge').'%"

    a ce moment, tu créé 2 tableaux de mots clefs (explode(' ', $_chaine)), tu rajoute les balises <font> autour de chaque mots du 2e tableau et tu fais ton str_replace en utilisant des tableaux en parametre...

    Pour les test, colle des strtolower() un peu partout, ça peut jouer aussi !

  9. #9
    Membre averti
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut
    c'est peut etre du au fait que je fait ma recherche en fulltext mode boolean

    non?

  10. #10
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    recherche en fulltext mode boolean
    C'est pas faux (<- private joke pour ceux qui connaissent Kaamelott)

    Blague a part, c koi fulltext mode boolean ? tu stock tes valeurs en binaire ?

  11. #11
    Membre averti
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut
    ben recherche fulltext c'est une recherche en texte entier (avec des phrases)
    et le mode boolean est attacher a la recherche fulltext c'est pour avoir plus de precision quand a la recherche de la phrases, c'est a dire avec des operateurs lier au mode fulltext de mysql
    ex>,<,*,+,-)

    voila

    up je n'arrive pas a distinguer la phrases rechercher dans le resultat
    comment pourrais je faire

    ps: si tu veut plus d'info regarde la doc mysql fulltext

  12. #12
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    t'as coller du trim et strtolower partout ? parce que ça devrait quand meme marcher !

  13. #13
    Membre averti
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut
    oui trim strolower explode mais sa ne marche toujours pas

    tu n'aurai pas une autre solution stp

    merci

  14. #14
    Membre averti
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut
    j'ai fait sa mais ça ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    strtolower(trim($reponse));
    explode(' ', trim($reponse));
    strtolower(trim($mot1));
    explode(' ', trim($mot1));
    str_replace(trim($mot1), '<font color="#0066FF">'.trim($mot1).'</font>', trim($reponse));
    quelqu'un aurai une autre solution svp

    merci d'avance

  15. #15
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    strtolower, trim et explode retournent un resultat mais ne modifient pas les parametres que tu leurs passe

    $reponse = strtolower(trim($reponse));

  16. #16
    Membre averti
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Par défaut
    j'ai fait ce que tu m'a dit mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\resultat.php on line 105
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reponse = strtolower(trim($reponse));
    $reponse = explode(' ', trim($reponse));
    $reponse = str_replace(trim($mot1), '<font color="#0066FF">'.trim($mot1).'</font>', trim($reponse));

  17. #17
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    c'est au niveau de ta requete qu'il y a un soucis...

    Tu serais pas en train d'essayer de faire un traitement direct sur ta requete avant que cette derniere n'ai été traité ? parce que c'est sur le resultat de la requete qu'il faut le faire...

    Plus de détail sur ton probleme dans ma signature

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/04/2014, 14h05
  2. Mettre en avant plan une autre application...
    Par loupdeau dans le forum MFC
    Réponses: 13
    Dernier message: 19/05/2005, 13h26
  3. récupérer le résultat d'une requete
    Par sheira dans le forum ASP
    Réponses: 3
    Dernier message: 03/12/2004, 11h04
  4. [C#] Récupérer le résultat d'une procédure stockée
    Par fabrice1596 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/10/2004, 13h45
  5. Réponses: 5
    Dernier message: 05/10/2004, 13h05

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