[RESOLU] requête SQL like tous les caractères est-ce possible

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] requête SQL like tous les caractères est-ce possible

Re: requête SQL like tous les caractères est-ce possible

par Figuedi » 26 mai 2020, 05:13

ah oui super nickel !!!!
merci beaucoup

Re: requête SQL like tous les caractères est-ce possible

par Saian » 25 mai 2020, 10:33

Salut Figuedi,

Si j'ai bien suivi, tu peux construire la requête sans écrire autant de requêtes que de combinaisons possibles.

Par exemple :
$query = 'SELECT Fruits FROM table';
$genres = [];

for ($i = 1; $i < 6; $i++)
  if (isset($_POST['cat'.$i]))
    $genres[] = addslashes($_POST['cat'.$i]);

if (count($genres) > 0)
  $query .= ' WHERE Genre IN ("'.implode('", "', $genres).'")';

Re: requetet sql like tous les caractères est-ce possible

par Figuedi » 25 mai 2020, 06:16

Merci @rthur pour ta réponse,

j'ai une variable $cat1 qui arrive ou n'arrive pas avant la requête j'aimerai que ma requête puisse etre :
Select Fruits from Table where Genre = $cat1
si $cat1 jaune il me retourne la colonne Fruits ou genre = jaune
si $cat1 est indéfini il me retourne la colonne Fruits indépendamment des différentes valeurs de genre.

En espérant avoir précisé
ce que j'ai fait et qui fonctionne :
if (!isset $cat1){  select Fruits from table }
else {select Fruits from table where Genre='$cat1',
Comme je peux avoir jusqu'à 5 variables $cat1 à $cat5 il faudrait que je fasse autant de requête que de combinaison possible sachant que cat5 peut etre définie alors que cat4 ou 3 ne le soient pas.

Ais je été un peu plus clair ?
Est ce possible ?
Merci d'avance,

Re: requetet sql like tous les caractères est-ce possible

par @rthur » 25 mai 2020, 00:43

Je ne suis pas sûr de comprendre ta question, du coup je tente ma chance :
SELECT * FROM table WHERE...
- Va te renvoyer tous les champs disponibles de chaque enregistrement correspondant à ta clause WHERE


- Un LIKE ne sert à rien si tu n'utilises pas le caractère "%" qui est un joker pour dire "0 à n" caractères.


- Tu ne peux pas faire un "*" ou un "like" sur le nom des champs, c'est impossible, il faut forcément que tu indique explicitement à SQL dans quel(s) champ(s) chercher.

- Par contre si ce que tu recherches peut être dans plusieurs champs alors il faut que tu utilises OR et non pas AND, sinon cela veut dire que SQL ne va te retourner que les résultats qui ont ton mot dans le 1er champ ET AUSSI dans le 2ème.


- Et enfin, vu que tu es débutant, teste _toujours_ tes requêtes dans phpmyadmin (en remplaçant tes variables bien sûr par des vrais mots) avant de les mettre dans du code PHP.
Tant que ta requête ne fonctionneré pas dans phpmyadmin, elle ne fonctionnera pas dans ton code.

requête SQL like tous les caractères est-ce possible

par Figuedi » 24 mai 2020, 19:49

Bonjour,

je voudrai que la BDD me donne tous les champs si jamais on ne lui fournissait pas un filtre :
if (!isset ($_POST['cat1'])){$cat1="%";}
else $cat1=$_POST['cat1'];
        
        $query = "SELECT tata, titi FROM toto where tutu='$produit' and tyty like '$cat1';";
j'ai essayé les like les =% les * mais je ne réussis pas a lui dire de chercher n'importe quoi si je ne lui dis pas quoi chercher.

Sauriez vous si c'est possible,

Je tiens à préciser que la soluce de faire une requête différente entre le if et le else est fonctionnelle, mais pas élégante. d'ou ma question