[RESOLU] Select / AND / OR et ses amis...

Eléphant du PHP | 96 Messages

21 févr. 2017, 18:53

Salutations,

J'ai un micro-moteur de recherche qui tape dans une BDD MySQL assez garnie, et depuis quelques temps, seul les requêtes positives passent (LIKE), aucun traitement visiblement des autres (NOT LIKE).

J'ai cru comprendre aussi que les requetes MySQL vont évoluer en PDO, mais la, j'ai déjà eu du mal à créer ces requêtes y'a de nombreuses années... :)

Voici un bout du code en question :

Code : Tout sélectionner

$swtch = "select *, TO_DAYS( NOW( ) ) - TO_DAYS( `Modif` ) < 15 AS new FROM Ordinateurs WHERE (Sortie != 'Oui') AND (Verif != 'Ecart') AND (Inventaire LIKE '%$Recherche%') OR (Introduction LIKE '%$Recherche%') OR (Marque LIKE '%$Recherche%') OR (Modele LIKE '%$Recherche%') OR (CPU LIKE '%$Recherche%') OR (Type LIKE '%$Recherche%') OR (Etat LIKE '%$Recherche%') OR (Packaging LIKE '%$Recherche%') OR (Serie LIKE '%$Recherche%') OR (Ref LIKE '%$Recherche%') OR (Commentaire LIKE '%$Recherche%') OR (Donateur LIKE '%$Recherche%') ORDER BY Introduction,Marque,Modele";
Alors, oui, je sais, c'est long, mais ça marchait... ;-)

Mes questions :

1/ Comment l'alléger ? (en prévision de la migration PDO machin...)
2/ Comment faire ne sorte que les NOT LIKE fonctionnent (j'ai essayé de les remplacer dans le code ci-dessus par des "!=", et même de les placer au début de la requête comme vous pouvez le constater, mais rien n'y fait... :(

Merci de votre aide...

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7125 Messages

21 févr. 2017, 22:41

Bonjour,

Regarde du côté des fonctionnalités de recherche Full-text : http://omiossec.developpez.com/mysql/fulltext/etudes/
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 96 Messages

23 févr. 2017, 00:25

Bien, bah en fait je pense m'en être sorti avec le code suivant :

Code : Tout sélectionner

$swtch = "SELECT *, TO_DAYS( NOW( ) ) - TO_DAYS( `Modif` ) < 15 AS new FROM Ordinateurs WHERE (Inventaire LIKE '%$Recherche%' OR Introduction LIKE '%$Recherche%' OR Marque LIKE '%$Recherche%' OR Modele LIKE '%$Recherche%' OR CPU LIKE '%$Recherche%' OR Type LIKE '%$Recherche%' OR Etat LIKE '%$Recherche%' OR Packaging LIKE '%$Recherche%' OR Serie LIKE '%$Recherche%' OR Ref LIKE '%$Recherche%' OR Commentaire LIKE '%$Recherche%' OR Donateur LIKE '%$Recherche%') AND NOT (Sortie = 'Oui' OR Verif = 'Ecart') ORDER BY Introduction,Marque,Modele";
Merci de votre aide...