Problème en sql

Bonjour, je dois faire la partie "recherche de commerce"du site de la ville, pour cela j'ai déjà créer un formulaire ainsi qu'un base de données. Je voudrais savoir s'il existe une fonction qui rend insensible à la casse et une autre qui ne prend qu'une partie de ce qui est entré. Je m'explique, dans ma base de données j'ai, par exemple, un commerce qui s'appel "Chez Toto" et je dois afficher les informations de ce commerce même si l'utilisateur du site entre "TOTO" ou "chez" "C" ou "c" et je ne sais pas comment faire.

Pourriez-vous me données les fonctions qui feraient cela ainsi que de m'expliquer leur fonctionnement??

merci d'avance

10 réponses

  1. NIKEL, c'est bon çà marche, cependant çà tient compte de la cassure, comment faire pour ne plus en tenir compte??
    1. Merci Xavier, je n'ai plus l'erreur mais çà ne fonctionne toujours pas. A l'aide!!!
      1. Bonjour,

        Il ne faut pas mettre de = après LIKE.

        Xavier
        1. Bien vu!
          ... les joies du copier-coller :-(

          je m'en vais de ce pas demander la correction de cette horreur
      2. Merci fiu
        voici mon code:

        if(isset($_POST['rec']) && $ActiviteCommerce == "" && $NomRue == "")
        {
        $NomCommerce = $_POST['nom'];

        $RequeteAffichage = "SELECT id, nom_com, adresse, activite, tel, mail, site, horaire
        FROM t1
        WHERE nom_com
        LIKE = '%$NomCommerce%'
        ";

        $RechercherCommerce = mysql_query($RequeteAffichage) or die(mysql_error());

        if ($NombreTrouve = mysql_num_rows($RechercherCommerce) >= 1)
        {
        while ($Donnees = mysql_fetch_array($RechercherCommerce))
        {
        if (mysql_num_rows($RechercherCommerce) == 1) {

        if ($NombreTrouve == 1)
        echo "<br><center><span class='id '><span class='red b'>$NombreTrouve </span> résultat trouvé pour le commerce cherché.</center><br>";

        else if ($NombreTrouve > 1)
        echo "<br><center><span class='id '><span class='red b'>$NombreTrouve </span> résultats trouvés pour les commerces cherchés.</center><br>";

        echo ("

        <b> Le commerce demandé : </b> <br><br>

        <div class=' pps '>
        <img id=fl src=img/commerces/".$Donnees['id'].".jpg border=0 >
        <span id= fr class=gris>ID<sup> ".$Donnees['id']."</sup></span>
        <b>Nom du commerce : </b>".$Donnees['nom_com']."<br>
        <b>Adresse : </b>".$Donnees['adresse']."<br>
        <b>Activité : </b>".$Donnees['activite']."<br>
        <b>Téléphone : </b>".$Donnees['tel']."<br>
        <b>Email : </b>".$Donnees['mail']."<br>
        <b>Site internet : </b><a href=".$Donnees['site']."target=_blank>".$Donnees['site']."</a><br><br>
        <center><a href = zoom_cv.php> Localisation dans la ville </a></center><br><br>
        <b>Horaires d'ouverture : </b>".$Donnees['horaire']."<br><br></div>
        ");
        }
        else if (mysql_num_rows($RechercherCommerce) > 1) {
        echo ("

        <b> Les commerces demandés : </b> <br><br>

        <div class=' pps '>
        <img id=fl src=img/commerces/".$Donnees['id'].".jpg border=0 >

        <span id= fr class=gris>ID<sup> ".$Donnees['id']."</sup></span>
        <b>Nom du commerce : </b>".$Donnees['nom_com']."<br>
        <b>Adresse : </b>".$Donnees['adresse']."<br>
        <b>Activité : </b>".$Donnees['activite']."<br>
        <b>Téléphone : </b>".$Donnees['tel']."<br>
        <b>Email : </b>".$Donnees['mail']."<br>
        <b>Site internet : </b><a href=".$Donnees['site']."target=_blank>".$Donnees['site']."</a><br><br>
        <center><a href = zoom_cv.php> Localisation dans la ville </a></center><br><br>
        <b>Horaires d'ouverture : </b>".$Donnees['horaire']."<br><br></div>
        ");
        }
        }
        }
        }
        else if ($NomCommerce == "" && $ActiviteCommerce == "" && $NomRue == "")
        echo ("");
        else
        echo("<br><center>Le commerce <b>".$NomCommerce."</b> ne fait pas parti de la base de données</center><br>");

        et j'ai comme erreur:

        You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '%Le %'' at line 4

        (Vous avez une erreur dans votre syntaxe de SQL; vérifiez le manuel qui correspond à votre version de serveur MySQL pour la syntaxe juste pour utiliser près au % %Le "à la ligne 4)

        Est-ce que quelqu'un peut m'aider svp

        merci
        1. Ce serait plutôt

          SELECT id, nom_com, adresse, activite, tel, mail, site, horaire
          FROM t1
          WHERE nom_com LIKE '%$NomCommerce%'

          like est un opérateur

          [Modération : signe = retiré à la demande du posteur]
          1. Je n'y arrive pas, voici la requête que j'ai écrit, pourriez-vous me donner une solution

            $RequeteAffichage = "SELECT id, nom_com, adresse, activite, tel, mail, site, horaire
            FROM t1
            WHERE nom_com = '$NomCommerce'
            LIKE nom_com = '%$NomCommerce%'
            ";

            merci d'avance
            1. Salut

              la fonction standard pour convertir une chaine en majuscules est UPPER(...)
              le joker standard à utiliser avec l'opérateur LIKE est %
              1. merci mais je ne sais pas où je dois utiliser les métacaractère, dans les requêtes,..., si qlq 1 sait, je suis preneur

                voici mon code, merci de m'indiquer où le mettre:

                if(isset($_POST['rec']) && $ActiviteCommerce == "" && $NomRue == "")
                {
                $NomCommerce = $_POST['nom'];

                $RequeteAffichage = "SELECT id, nom_com, adresse, activite, tel, mail, site, horaire
                FROM t1
                WHERE nom_com = '$NomCommerce'
                ";

                $RechercherCommerce = mysql_query($RequeteAffichage) or die(mysql_error());

                if (mysql_num_rows($RechercherCommerce) >= 1)
                {
                while ($Donnees = mysql_fetch_array($RechercherCommerce))
                {
                echo ("
                <div class = 'pps'
                <img id=fl src=img/commerces/".$Donnees['id'].".jpg border=0 >

                <span id= fr class=gris>ID<sup> ".$Donnees['id']."</sup></span>

                <b>Nom du commerce : </b>".$Donnees['nom_com']."<br>
                <b>Adresse : </b>".$Donnees['adresse']."<br>
                <b>Activité : </b>".$Donnees['activite']."<br>
                <b>Téléphone : </b>".$Donnees['tel']."<br>
                <b>Email : </b>".$Donnees['mail']."<br>
                <b>Site internet : </b><a href=".$Donnees['site']."target=_blank>".$Donnees['site']."</a><br><br>
                <a href = zoom_cv.php> Localisation dans la ville </a><br><br>
                <b>Horaires d'ouverture : </b>".$Donnees['horaire']."<br></div><br>
                ");
                }
                }
                else if ($NomCommerce == "" && $ActiviteCommerce == "" && $NomRue == "")
                echo ("");
                else
                echo("<br><center>Le commerce <b>".$NomCommerce."</b> ne fait pas parti de la base de données</center><br>");
                }

                merci d'avance
                1. Bonjour Mickael86480,

                  Le type de requête que vous souhaitez créer recourt couramment aux métacaractères. Tels que : ! ? *.
                  Voir les adresses ci-dessous pour vous éclairer ....

                  https://docs.microsoft.com/fr-fr/previous-versions/sql/sql-server-2005/ms180055(v=sql.90)?redirectedfrom=MSDN UPPER
                  https://docs.microsoft.com/fr-fr/sql/t-sql/functions/lower-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15 LOWER
                  https://fr.wikipedia.org/wiki/M%C3%A9tacaract%C3%A8re METACARACTERE

                  Cordialement