Elxis CMS Forum
Ελληνικό Forum => Πρόσθετα => Topic started by: ArXoS on March 17, 2009, 02:17:37
-
Προσπαθώ να αποκλείσω από την αναζήτηση, κάποιες ενότητες που περιέχουν άρθρα-σελίδες της διαχείρισης, και δε χρειάζεται να βγαίνουν στα αποτελέσματα αναζήτησης.
Κάνοντας λοιπόν πειράματα, είδα οτι μπορώ να αποκλείσω ενότητες, εαν πειράξω το content.searchbot.php
Συγκεκριμένα, μου δούλεψε με 2 εντολές (περίπου στην 113 γραμμή του παραπάνω bot):
1) . "\n AND sectionid = '5,7,8'"
κατευθύνω την αναζήτηση στις 3 παραπάνω ενότητες
2) . "\n AND sectionid <> '3'"
αποτρέπω την αναζήτηση στην παραπάνω ενότητα (δοκίμασα και με 2-3 σειρές, για να αποκλείσω παραπάνω ενότητες και δούλεψε)
Ποιο από τα 2 είναι το πιο σωστό ? Μου δούλεψαν και τα 2 πάντως
-
Αυτό είναι λάθος:
. "\n AND sectionid = '5,7,8'"
Θα πρέπει να το γράψεις έτσι:
. "\n AND sectionid ΙΝ (5,7,8)"
Το παραπάνω περιορίζει την αναζήτηση ΜΟΝΟ στις ενότητες 5, 7 και 8.
Το παρακάτω (σωστό) περιορίζει την αναζήτηση σε όλες τις ενότητες ΕΚΤΟΣ της 3:
. "\n AND sectionid <> '3'"
-
. "\n AND sectionid ΙΝ (5,7,8)"
δε νομίζω οτι μου δουλεύει .. δε μου επιστρέφει καθόλου αποτελέσματα
Όντως, είχες δίκιο για την . "\n AND sectionid = '5,7,8'"
Αυτή η εντολή επέστρεφε αποτελέσματα μόνο από την ενότητα 5 !! και δεν είχα πάρει είδηση
Χρησιμοποιώ λοιπόν την . "\n AND sectionid <> '3'", μόνο που τη χρησιμοποιώ σε 3-4 σειρές για να αποκλείσω τις ενότητες που δε θέλω
. "\n AND sectionid <> '1'"
. "\n AND sectionid <> '2'"
. "\n AND sectionid <> '3'"
. "\n AND sectionid <> '4'"
κτλ ..
Υπάρχει τρόπος αυτό να το γράψω σε μία γραμμή ?
-
Αυτός εδώ, επαναλαμβάνω, είναι ο σωστός και πιο γρήγορος τρόπος:
SELECT * FROM elx_content WHERE sectionid IN (5,7,8);
Αν θες να το κάνεις αποκλείοντας ενότητες:
SELECT * FROM elx_content WHERE sectionid ΝΟΤ IN (1,2,3,4);
Αν θες να το γράψεις όπως το έγραψες μπορείς να το κάνεις με OR (δεν συστίνεται):
SELECT * FROM elx_content WHERE ((sectionid = '5') OR (sectionid = '7') OR (sectionid = '8'));
Ή, όπως το έγραψες, με αποκλεισμό (επίσης δεν συστίνεται):
SELECT * FROM elx_content WHERE ((sectionid <> '1') AND (sectionid <> '2') AND (sectionid <> '3') AND (sectionid <> '4'));
-
Ε λοιπον δεν θα το πιστέψεις ..
με προβλημάτισες που επέμεινες, και ξαναέβαλα τις εντολές που είπες και η . "\n AND sectionid ΙΝ (5,7,8)" έπιασε
Τι να πω .. μάλλον θα είχα κάνει λάθος κάπου στο copy-paste
Σε ευχαριστώ λοιπόν. Άλλο ένα πρόβλημα λύθηκε :D