philos Δημοσ. 5 Νοεμβρίου 2020 Δημοσ. 5 Νοεμβρίου 2020 Χρησιμοποιώ PHP και MySQL για να χωρίσω τις εγγραφές που προβάλλονται σε σελίδες. Για να εξάγω τα στοιχεία κάθε σελίδας χρησιμοποιώ αυτή τη LIMIT στο MySQL query: LIMIT $startat, $perpage ... Το perpage είναι ό,τι η λέει η λέξη. Το startat είναι: $startat = ($page - 1) * $perpage; Έστω λοιπόν ότι ο database table έχει σε auto increment τη στήλη id. Έστω ότι θέλω να εντοπίσω σε ποια σελίδα ($page) βρίσκεται το id = 999. Πως μπορώ να το υπολογίσω; Ουσιαστικά έχοντας το id θέλω να βρω με αποδοτικό τρόπο (κι όχι να πάρω όλες τις εγγραφές και να τις επεξεργαστώ σε php loop), σε ποια σελίδα θα πρέπει να εμφανίζεται το τάδε id (πχ 999). Αν μπορώ να το κάνω με ελάχιστα extra queries και απλό php κώδικα θα είναι πολύ βολικό!
ltodd Δημοσ. 5 Νοεμβρίου 2020 Δημοσ. 5 Νοεμβρίου 2020 Kάτι τέτοιο εννοείς? currentPage=ceil(currentItem/itemsPerPage)
philos Δημοσ. 5 Νοεμβρίου 2020 Μέλος Δημοσ. 5 Νοεμβρίου 2020 (επεξεργασμένο) Όχι δεν εννοώ αυτό. Ας πούμε ότι το σύστημα σπάει τις σελίδες μέσω του LIMIT $startat, $perpage και δείχνει τα εξής στοιχεία Α1 εως Α9, με $perpage = 3: ΣΕΛΙΔΑ 1 Α1,Α2,Α3 -- αλλάζω σελίδα --> ΣΕΛΙΔΑ 2 Α4,Α5,Α6 -- αλλάζω σελίδα --> ΣΕΛΙΔΑ 3 Α7,Α8,Α9 Κάθε σελίδα έχει τραβήξει τα στοιχεία μέσω του MySQL query με το παραπάνω LIMIT. Πως μπορώ αν υπολογίσω, για παράδειγμα, εκ των προτέρων σε ποια σελίδα βρίσκεται το στοιχείο Α5; Θέτω ως παράδειγμα ότι το A5 έχει ως id = 999. Στη προκειμένη θέλω να βρω τον αριθμό 2. Το startat πάντως υπολογίζεται έτσι: $startat = ($page - 1) * $perpage; Επεξ/σία 5 Νοεμβρίου 2020 από philos
Επισκέπτης Δημοσ. 5 Νοεμβρίου 2020 Δημοσ. 5 Νοεμβρίου 2020 (επεξεργασμένο) Για δοκίμασε: SELECT t.id, t.some_column, t.some_other_column, (SELECT COUNT(*)+1 FROM table_name WHERE id < t.id) as row_number FROM table_name t WHERE t.id = 999 Παίρνεις το row_number και παίζεις μετά. Δεν ξέρω πόσο αποδοτικό είναι αυτό. Το δοκίμασα σε table με 90Κ+ rows, γρήγορο μου φάνηκε εμένα (απάντηση στα 58ms στον υπολογιστή μου, χρόνος βέβαια 2πλάσιος από το ίδιο query χωρίς την κολπατζίδικη γραμμή) Επεξ/σία 5 Νοεμβρίου 2020 από SeaLion
philos Δημοσ. 5 Νοεμβρίου 2020 Μέλος Δημοσ. 5 Νοεμβρίου 2020 Φαίνεται δουλεύει, ευχαριστώ πολύ! Θα το δοκιμάσω και στο production site με τις πολλές εγγραφές κι αν προκύψει κάτι θα σας πω. Ευχαριστώ!!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα