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 :

Recherche interne Mysql [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut Recherche interne Mysql
    Bonjour,
    je souhaite avoir un moteur de recherche interne sur ma base SQL et j'ai un petit souci au niveau des majuscules :

    si je saisis "shellys", la requête ne trouve rien et si je saisi "Shellys", la requête me renvoi le bon évènement...

    Merci de votre aide.

    moteur_de_recherche.php (formulaire) :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
    <title>MON SITE</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
     
    <body>
     
    <?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
     
    <div id="mainContent">
     
    <br />	
    <p>
    <form action="recherche_interne.php" method="POST">Entrer le nom de l'artiste ici : 
    <input type="text" tabindex ="1" name="recherche" 
    onfocus="this.className='textarea_focus';" onblur="this.className='';valide(this, 'err_mdp');" class="ev" />
     
    <br />
    <p><b>ne pas indiquer les pronoms comme "Le" "Les" "The" ..merci.</b></p>
    </p>
    <br />
     
    <input type="submit" tabindex ="2" value="Rechercher" />
     
    </form>
     
    </div>
     
    <?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
     
    </body>
     
    </html>
    recherche_interne.php (résultats) :
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
    <title>MON SITE</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
     
    <body>
     
    <?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
     
    <div id="mainContent">
     
     
    <h2>R&eacute;sultats</h2>
     
    <?php
    // connexion à la base
    require("configuration.php");
    $sql = connect_sql();
    //On determine l'expression a rechercher
    if(isset($_POST['recherche'])) $saisie = $_POST['recherche'];
    else
    {
    	echo '<b>'.'Vous n\'avez rien saisi !'.'</b>';
    	echo '<p>'.$saisie.'</p>';
    	echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
    }
     
    	echo '<p>'.'<b>'.$saisie.'</b>'.'</p>';
    	$rec = htmlentities($_POST['recherche']);
    	//ayant tout des mots dans leurs informations
        $mots = explode(' ',$rec);//sépare l'expression en mots cles
        foreach($mots as $mot)
        {
    	$req2 = 'SELECT * FROM evenement WHERE nom LIKE "%'.$mot.'%" ';
        }
    	$requete = mysql_query($req2) or die ('Erreur : '.mysql_error() );
    	$total = mysql_num_rows($requete);
    	//On vérifie que la table contient quelque chose
    	if
    	(mysql_num_rows($requete) == 0)
    	{
    	echo '<p>'.'<b>'.'Aucun &eacute;v&egrave;nement ! '.'</b>'.'</p>'.'<br>'.'</br>';
    	echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
    	}
    	//Si il y a des entrées	  
    	else
    	{
    	//On fait une boucle pour sortir toutes les entrées
    	while($affiche = mysql_fetch_array($requete))
    	{
    	//On remet la date au format français
    	setlocale (LC_TIME, 'fr_FR.UTF8');
    	$date_affiche = $affiche["date_ev"];
    	$date_vue = strftime("%A %d %B",strtotime("$date_affiche"));
    	//On affiche les entrées
    	echo '<br />';
    	echo '<b>'.$affiche["type_evenement"]."   ".'</b>';
    	echo '<br />';
    	echo "     ".$affiche["type_etab"]."   ";
    	echo '<b>'."     ".$date_vue."   ".'</b>';
    	echo "     ".$affiche["secteur"]."   ";
    	echo "Début à : ".$affiche["heure"]."   ";
    	echo "  Tarif : ".$affiche["tarif"]."   ";
    	echo " ".$affiche["montant"]."   ";
    	echo " où ? ".$affiche["lieu"]."   ";echo '<br />';
    	echo '<br />';
    	echo '<div class="autre">';
    	echo '<span style="color:#8E236B;">';
    	echo '<strong>';
    	echo $affiche["nom"];
    	echo '</strong>';
    	echo '</span>';
    	echo '<br />';
    	echo '<div class="cache">';
    	echo '<strong>';
    	echo $affiche["description"];
    	echo " mis en ligne par  ".$affiche["pseudo_ev"]."   ";
    	echo '</strong>';
    	echo '</div>';
    	echo '</div>';
    	echo '<br />';
    	}	// fin du while
     
    	echo '<br />';
    	echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
     
    	}	//on ferme le else
     
    // Fermeture de la connexion à la base de données
    mysql_close();		
     
    ?>
     
    <?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
    </body>
    </html>

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 182
    Par défaut
    Salut,

    jette un coup d'oeil sur ce post, je pense que ta solution s'y trouve dors et déjà!

    http://www.developpez.net/forums/d29...se-caracteres/

  3. #3
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut
    Désolé roduce mais j'ai un message d'erreur :
    Parse error: syntax error, unexpected T_STRING in /mnt/154/sdc/8/e/fazpedro/recherche_interne.php on line 39

    j'avais modifié la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req2 = 'SELECT * FROM evenement WHERE nom LIKE "%'.$mot.'%" ';
    par cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req2 = 'SELECT * FROM evenement WHERE nom LIKE "%'.$mot.'%" ' COLLATE utf8_unicode_ci;
    c'est peut-être pas là qu'il faut mettre COLLATE ?
    Merci de l'aide !

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    quelle est l'interclassement de ta table ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 182
    Par défaut
    [QUOTE=fazpedro;6116217]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req2 = 'SELECT * FROM evenement WHERE nom LIKE "%'.$mot.'%" ' COLLATE utf8_unicode_ci;
    [quote]

    en un rapide coup d'oeil, décale l'apostrophe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req2 = 'SELECT * FROM evenement WHERE nom LIKE "%'.$mot.'%"  COLLATE utf8_unicode_ci';

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Il faut juste choisir le bon type des champs. Je pense le type BLOB fera ton bonheur.

  7. #7
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut
    j'ai modifié et çela fonctionne ..presque :

    quand je n'indique rien, il me met TOUS les enregistrements....
    comment faire s'il ne saisit rien ? où est mon erreur ?
    merci beaucoup.

    recherche_interne.php :
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
    <title>MON SITE</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
     
    <body>
     
    <?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
     
    <div id="mainContent">
     
     
    <?php
    // connexion à la base
    require("configuration.php");
    $sql = connect_sql();
    //On determine l'expression a rechercher
    if(isset($_POST['recherche'])) $saisie = $_POST['recherche'];
    else
    {
    	$saisie = " ";
    	echo '<b>'.'Vous n\'avez rien saisi !'.'</b>';
    	echo '<p>'.$saisie.'</p>';
    	echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
    }
    	echo '<p>'.'Voici les r&eacute;sultats pour :'.'<h2>'.'<strong>'.$saisie.'</strong>'.'</h2>'.'</p>';
    	$rec = htmlentities($_POST['recherche']);
    	//ayant tout des mots dans leurs informations
        $mots = explode(' ',$rec);//sépare l'expression en mots cles
        foreach($mots as $mot)
        {
    	$req2 = 'SELECT * FROM evenement WHERE nom COLLATE latin1_general_cs LIKE CONVERT(_utf8 "%'.$mot.'%" USING utf8) COLLATE utf8_general_ci ';
    	}
    	$requete = mysql_query($req2) or die ('Erreur : '.mysql_error() );
    	$total = mysql_num_rows($requete);
    	//On vérifie que la table contient quelque chose
    	if
    	(mysql_num_rows($requete) == 0)
    	{
    	echo '<p>'.'<b>'.'Aucun &eacute;v&egrave;nement ! '.'</b>'.'</p>'.'<br>'.'</br>';
    	echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
    	}
    	//Si il y a des entrées	  
    	else
    	{
    	//On fait une boucle pour sortir toutes les entrées
    	while($affiche = mysql_fetch_array($requete))
    	{
    	//On remet la date au format français
    	setlocale (LC_TIME, 'fr_FR.UTF8');
    	$date_affiche = $affiche["date_ev"];
    	$date_vue = strftime("%A %d %B",strtotime("$date_affiche"));
    	//On affiche les entrées
    	echo '<br />';
    	echo '<b>'.$affiche["type_evenement"]."   ".'</b>';
    	echo '<br />';
    	echo "     ".$affiche["type_etab"]."   ";
    	echo '<b>'."     ".$date_vue."   ".'</b>';
    	echo "     ".$affiche["secteur"]."   ";
    	echo "Début à : ".$affiche["heure"]."   ";
    	echo "  Tarif : ".$affiche["tarif"]."   ";
    	echo " ".$affiche["montant"]."   ";
    	echo " où ? ".$affiche["lieu"]."   ";echo '<br />';
    	echo '<br />';
    	echo '<div class="autre">';
    	echo '<span style="color:#8E236B;">';
    	echo '<strong>';
    	echo $affiche["nom"];
    	echo '</strong>';
    	echo '</span>';
    	echo '<br />';
    	echo '<div class="cache">';
    	echo '<strong>';
    	echo $affiche["description"];
    	echo " mis en ligne par  ".$affiche["pseudo_ev"]."   ";
    	echo '</strong>';
    	echo '</div>';
    	echo '</div>';
    	echo '<br />';
    	}	// fin du while
     
    	echo '<br />';
    	echo '<a href="javascript:window.history.go(-1)">'.'Retour'.'</a>'; // retour en page précédente
     
    	}	//on ferme le else
     
    // Fermeture de la connexion à la base de données
    mysql_close();		
     
    ?>
     
    <?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
    </body>
    </html>
    moteur_de_recherche.php :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
    <title>MON SITE</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
     
    <body>
     
    <?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
     
    <div id="mainContent">
     
    <br />	
    <p>
    <form action="recherche_interne.php" method="POST">Entrer le nom de l'artiste ici : 
    <input type="text" tabindex ="1" name="recherche" value="" 
    onfocus="this.className='textarea_focus';" onblur="this.className='';valide(this, 'err_mdp');" class="ev" />
     
    <br />
    <p><b>ne pas indiquer les pronoms comme "Le" "Les" "The" ..merci.</b></p>
    </p>
    <br />
     
    <input type="submit" tabindex ="2" value="Rechercher" />
     
    </form>
     
    </div>
     
    <?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
     
    </body>
     
    </html>

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

Discussions similaires

  1. Recherche livre MySQL 5
    Par hphil dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 06/07/2006, 21h14
  2. [SGBD] Recherche PHP+MySQL
    Par gaucher dans le forum Requêtes
    Réponses: 4
    Dernier message: 17/05/2006, 14h43
  3. Moteur de recherche interne avec zope/python
    Par tunix dans le forum Zope
    Réponses: 3
    Dernier message: 01/05/2006, 15h45
  4. Recherche BDD MySQL
    Par Gauth dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/04/2005, 20h26
  5. Un moteur de recherche interne
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/02/2005, 18h47

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