Elxis CMS Forum

Ελληνικό Forum => Πρόσθετα => Topic started by: ArXoS on March 17, 2009, 02:17:37

Title: content.searchbot.php
Post 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 πάντως
Title: Re: content.searchbot.php
Post by: datahell on March 17, 2009, 08:50:52
Αυτό είναι λάθος:
. "\n AND sectionid = '5,7,8'"
Θα πρέπει να το γράψεις έτσι:
. "\n AND sectionid  ΙΝ (5,7,8)"

Το παραπάνω περιορίζει την αναζήτηση ΜΟΝΟ στις ενότητες 5, 7 και 8.

Το παρακάτω (σωστό) περιορίζει την αναζήτηση σε όλες τις ενότητες ΕΚΤΟΣ της 3:
. "\n AND sectionid <> '3'"
Title: Re: content.searchbot.php
Post by: ArXoS on March 17, 2009, 15:55:58
. "\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'"

κτλ ..
Υπάρχει τρόπος αυτό να το γράψω σε μία γραμμή ?
Title: Re: content.searchbot.php
Post by: datahell on March 17, 2009, 20:07:59
Αυτός εδώ, επαναλαμβάνω, είναι ο σωστός και πιο γρήγορος τρόπος:

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'));

Title: Re: content.searchbot.php
Post by: ArXoS on March 17, 2009, 22:44:04
Ε λοιπον δεν θα το πιστέψεις ..
με προβλημάτισες που επέμεινες, και ξαναέβαλα τις εντολές που είπες και η . "\n AND sectionid  ΙΝ (5,7,8)" έπιασε

Τι να πω .. μάλλον θα είχα κάνει λάθος κάπου στο copy-paste

Σε ευχαριστώ λοιπόν. Άλλο ένα πρόβλημα λύθηκε  :D