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 approximative dans ma table Mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut Recherche approximative dans ma table Mysql
    Bonjour,

    je voudrai faire une recherche approximative dans ma table MySQL, d'un nom dans ma table, pour cela j'ai un champs text avec un bouton submit pour effectuer la recherche

    Par exemple , si des personnes porte le nom vandamme et que je tape van dans le champs text de recherche, qu'il me liste tout ce qu'il trouve qui commence par van.

    Quand je vais sur ma page et rentre un nom et effectue une recherche, il n'y a rien qui s'affiche ??

    J'ai du faire une erreur mais ou ??

    Merce d'avance.

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Modiffier une ligne de la table par l'id</title>
    <style type="text/css">
    <!--
    .Style1 {color: #FF0000}
    -->
    </style>
    </head>
     
    <body>
     
    <?php  
    // Connexion a la BDD avec login.php
    require ('login.php');
    $link = mysql_connect("$hote", "$login", "$pass"); //or die("Erreur de connexion...") ;
    $req = mysql_select_db($bdd, $link) or die("Erreur de connexion...") ;
     
     
    /* ------------------ A PARTIR D'ICI COMMANDE DU BOUTON : RECHERCHE APPROXIMATIVE ------------------ */
     
    		if(isset($_POST['envoyer-recherche-approximative']))
     
      {
       				$requete= "SELECT * FROM telephonique WHERE Nom LIKE .$nom.%'";
     
    $resultat= mysql_query($requete); 
    mysql_close();
    while($ligne=mysql_fetch_array($resultat)){
     
    	echo $ligne['Nom']."br>" ;
    	}
    	} // ferme la boucle
     
    ?>
     
    </p>
        <p align="center">Recherche d'un nom dans l'annuaire téléphonique, Veuillez indiquer ci-dessous le nom dans le champs pour effectuer une recherche. (<span class="Style1">*</span>) Champs obligatoire.
    <form action="recherche-de-donnees-mysql2.php" method='post'>  </p>
    <table align="center" border="0">
        <tr>Recherche approximative </td>
          <td><input type="text" name="nom" size="20" maxlength="20" /></td>
          <td><input type="submit" name="envoyer-recherche-approximative" value="Rechercher"></td>
        </tr>
    </table>
     
    </body>
    </html>

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonsoir, essaies ca peut etre

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requete= 'SELECT * FROM telephonique WHERE Nom LIKE \'%.$nom.%\'';

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut
    Bonsoir,

    Il me repond :

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in L:\Program files 2\wamp\www\maison\N7\Mon-annuaire-telephonique\recherche-de-donnees-mysql2.php on line 30

    Ligne 30 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ligne = mysql_fetch_assoc($resultat);
    Merci.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    La requête est incorrecte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete= 'SELECT * FROM telephonique WHERE Nom LIKE \'%' . $nom . '%\'';
    Ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete= "SELECT * FROM telephonique WHERE Nom LIKE '%$nom%'";
    Parmi d'autres possibilités.

    Sans oublier avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom = mysql_real_escape_string($_POST['nom']);
    Sinon afficher les messages d'erreur pour votre requête ($resultat = mysql_query($requete) or die(mysql_error());).

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut
    Bonsoir,

    Si je comprend bien les requetes SQL sont incorecte.

    Jai donc remplacé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat= mysql_query($requete);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($resultat = mysql_query($requete) or die(mysql_error());)
    Depuis il me repond :
    Parse error: syntax error, unexpected ';' in L:\Program files 2\wamp\www\maison\N7\Mon-annuaire-telephonique\recherche-de-donnees-mysql2.php on line 31
    La ligne 31 est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($resultat = mysql_query($requete) or die(mysql_error());)
    Merci.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il faut enlever les parenthèses superflues causant cette erreur de syntaxe : il ne faut pas mettre celles en début et fin de ligne. C'était ma propre parenthèse pour expliciter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = mysql_query($requete) or die(mysql_error());

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut
    Bonsoir,

    C'est pareil même message a la meme ligne.
    Il m'affiche en plus br>br>br>br>br> en dessous du message d'erreur.

    Merci.

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    hein ? PHP ne peut pas produire une parse error et continuer l'exécution du script. Code (PHP uniquement) et erreur complets ?

    Au passage, vous êtes certain d'avoir respecter la casse du nom de votre champ ? (sur un environnement bien configuré ça devrait vite se voir par des erreurs E_NOTICE)

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut
    Bonsoir

    Il m'afficher br>br>br>br>br> a cause

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $ligne['Nom']."br>" ;
    j'ai donc suprimer ."br>"

    Il m'affiche toujour l'erreur :
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in L:\Program files 2\wamp\www\maison\N7\Mon-annuaire-telephonique\recherche-de-donnees-mysql2.php on line 30
    Ligne 30 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ligne = mysql_fetch_assoc($resultat);
    Quand je mes la ligne 30 en commentaire "//" il n'y a aucun message d'erreur a l'affichage de la page, parcontre des que je tape un nom a rechercher et valide, rien ne s'affiche...

    Voici mon code :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Modiffier une ligne de la table par l'id</title>
    <style type="text/css">
    <!--
    .Style1 {color: #FF0000}
    -->
    </style>
    </head>
     
    <body>
     
    <?php  
    // Connexion a la BDD avec login.php
    require ('login.php');
    $link = mysql_connect("$hote", "$login", "$pass"); //or die("Erreur de connexion...") ;
    $req = mysql_select_db($bdd, $link) or die("Erreur de connexion...") ;
     
     
    /* ------------------ A PARTIR D'ICI COMMANDE DU BOUTON : RECHERCHE APPROXIMATIVE ------------------ */
     
    		$nom = mysql_real_escape_string($_POST['envoyer-recherche-approximative']);
     
      {
       		//$requete= "select * from telephonique WHERE Nom LIKE ".$nom."%";
    		$requete= 'SELECT * FROM telephonique WHERE Nom LIKE \'%' . $nom . '%\'';
    		//$requete= "select * from telephonique WHERE Nom LIKE '.Dom.'"; 
    		$ligne = mysql_fetch_assoc($resultat);
    $resultat = mysql_query($requete) or die(mysql_error());
     
    while($ligne=mysql_fetch_array($resultat)){
     
    	echo $ligne['nom'] ;
    	}
    	} // ferme la boucle
     
    mysql_close();	
    ?>
     
     
    </p>
        <p align="center">Recherche d'un nom dans l'annuaire téléphonique, Veuillez indiquer ci-dessous le nom dans le champs pour effectuer une recherche. (<span class="Style1">*</span>) Champs obligatoire.
    <form action="modifier-une-ligne-mysql-2.php" method='post'>
            </p>
        <table align="center" border="0">
        <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
         </tr>
        <tr>
          <td>Recherche (<span class="Style1">*</span> )</td>
          <td><input type="text" name="societe" size="20" maxlength="20" /></td>
          <td><input type="submit" name="envoyer-recherche-approximative" value="Rechercher"></td>
        </tr>
    </table>
     
    <p align="center">
    <td><FORM>
    <INPUT TYPE="button" 
    	VALUE="Retour"
    	onClick="history.back()">
    </FORM>
     
    <p>&nbsp;</p>
    </body>
    </html>

  10. #10
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    - premièrement dans ton code tu ne donne aucune valeur à ta variable $nom
    - une erreur dans ta balise <br>ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $ligne['Nom']."br>"
    - enfin s'assurer de la casse du nom du champs comme a dis julp

    Par exemple , si des personnes porte le nom vandamme et que je tape van dans le champs text de recherche, qu'il me liste tout ce qu'il trouve qui commence par van
    donc la requête proposé n'est pas correcte, celle qui suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete= "SELECT * FROM telephonique WHERE Nom LIKE '%$nom%'";
    quel est le résultat avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(isset($_POST['envoyer-recherche-approximative']))
    {
            $nom=$_POST['nomDUchampsTEXT'];
       	$requete= "SELECT * FROM telephonique WHERE Nom LIKE '$nom%'";//commence par
     
    $resultat= mysql_query($requete) or die(mysql_error()); 
     
        while($ligne=mysql_fetch_array($resultat)){
    	echo $ligne['Nom']."<br />" ;
        }// ferme la boucle
    } //ferme la condition
    mysql_close();

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut
    Rebonsoir,

    Voila j'ai rectifié le code , donc

    Quand je vais sur ma page aucune erreur est indiqué rien, parcontre des que je tape un nom a rechercher et valide, la il m'affiche l'erreur :

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in L:\Program files 2\wamp\www\maison\N7\Mon-annuaire-telephonique\recherche-de-donnees-mysql2.php on line 35
    Ligne 35 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ligne = mysql_fetch_assoc($resultat);
    Voici le code :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Modiffier une ligne de la table par l'id</title>
    <style type="text/css">
    <!--
    .Style1 {color: #FF0000}
    -->
    </style>
    </head>
     
    <body>
     
    <?php  
    // Connexion a la BDD avec login.php
    require ('login.php');
    $link = mysql_connect("$hote", "$login", "$pass"); //or die("Erreur de connexion...") ;
    $req = mysql_select_db($bdd, $link) or die("Erreur de connexion...") ;
     
     
    /* ------------------ A PARTIR D'ICI COMMANDE DU BOUTON : RECHERCHE APPROXIMATIVE ------------------ */
     
    		if(isset($_POST['envoyer-recherche-approximative']))
      {
    				$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
     
     
       				$requete= "SELECT * FROM telephonique WHERE Nom LIKE '$nom%'";
     
    $ligne = mysql_fetch_assoc($resultat);
    $resultat = mysql_query($requete) or die(mysql_error());
     
    		while($ligne=mysql_fetch_array($resultat)){
     
    echo $ligne['nom'] ;
    } // ferme la boucle
    } 
     
    mysql_close();	
    ?>
     
     
    </p>
        <p align="center">Recherche d'un nom dans l'annuaire téléphonique, Veuillez indiquer ci-dessous le nom dans le champs pour effectuer une recherche. (<span class="Style1">*</span>) Champs obligatoire.
    <form action="" method='post'>
            </p>
        <table align="center" border="0">
        <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
         </tr>
        <tr>
          <td>Recherche (<span class="Style1">*</span> )</td>
          <td><input type="text" name="nom" size="20" maxlength="20" /></td>
          <td><input type="submit" name="envoyer-recherche-approximative" value="Rechercher"></td>
        </tr>
    </table>
     
    <p align="center">
    <td><FORM>
    <INPUT TYPE="button" 
    	VALUE="Retour"
    	onClick="history.back()">
    </FORM>
     
    <p>&nbsp;</p>
    </body>
    </html>
    <?php echo ("Test pour voir si la variable nom s'affiche lorsque, un nom est tapé dans le champ est valider");
    echo $nom ;
     ?>
    Merci.

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il faut la virer votre ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ligne = mysql_fetch_assoc($resultat);
    Vous cherchez à récupérer un résultat d'une requête qui n'a pas encore été exécutée, donc => erreur.

    Le résultat de votre requête étant déjà parcouru via l'itération while, inutile d'en rajouter

    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
    <?php  
    require ('login.php');
    $link = mysql_connect($hote, $login, $pass); //or die("Erreur de connexion...") ;
    $req = mysql_select_db($bdd, $link) or die("Erreur de connexion...") ;
     
    if (isset($_POST['envoyer-recherche-approximative'])) {
        $nom = mysql_real_escape_string($_POST['nom']);
        $requete = "SELECT * FROM telephonique WHERE Nom LIKE '$nom%'";
        $resultat = mysql_query($requete) or die(mysql_error());
        while ($ligne = mysql_fetch_array($resultat)) {
            echo $ligne['nom']; // Respecter le nom exact du champ sous MySQL (casse notamment)
        } // endwhile
    } // endif
    mysql_close();
    ?>

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut
    Merci.

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

Discussions similaires

  1. [MySQL] Recherche dans 2 tables MySql dans la même requete
    Par poitierjohan dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2011, 19h59
  2. [RegEx] Recherche dans une table mysql et comparaison
    Par hat_et_m dans le forum Langage
    Réponses: 24
    Dernier message: 23/02/2011, 23h11
  3. Rechercher dans une table MySql
    Par tremeur53 dans le forum Requêtes
    Réponses: 9
    Dernier message: 27/05/2007, 17h20
  4. Comment importer un document CSV dans une table MySql ?
    Par magic8392 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/02/2005, 11h03
  5. Rechercher minuscule dans une table
    Par pmonn dans le forum Access
    Réponses: 3
    Dernier message: 25/10/2004, 14h53

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