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. 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
    1. Bonjour,

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

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

        je m'en vais de ce pas demander la correction de cette horreur
        0
    2. Merci Xavier, je n'ai plus l'erreur mais çà ne fonctionne toujours pas. A l'aide!!!
      1
      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
        0
        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
          0
          1. Salut

            la fonction standard pour convertir une chaine en majuscules est UPPER(...)
            le joker standard à utiliser avec l'opérateur LIKE est %
            0
            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
              0
              1. 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
                0
                1. NIKEL, c'est bon çà marche, cependant çà tient compte de la cassure, comment faire pour ne plus en tenir compte??
                  0