Πολύπλοκο ερώτημα

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
zPuls3
Δημοσιεύσεις: 3
Εγγραφή: 10 Δεκ 2012 17:15

Πολύπλοκο ερώτημα

Δημοσίευση από zPuls3 » 28 Ιαν 2013 17:13

Έχω κάποια άρθρα (σε db) και προσπαθώ να προσθέσω εναν πίνακα με σχετικά άρθρα.

Προσθήκη :
Εμφανίζει μια φόρμα με κάποια πεδία (Τίτλο, Κείμενο κλπ) και μια λίστα με τα υπόλοιπα άρθρα που υπάρχουν ήδη στην βάση (Τίτλο και checkbox)
Max 5 επιλογές (απο js) και στο submit το περνάει στην add.php (αυτό είναι έτοιμο).

Επεξεργασία : (αυτό προσπαθώ)
Πρέπει να εμφανίζει την ίδια φόρμα με τα στοιχεία που υπάρχουν στην βάση στο value.
Και όλη την λίστα με τα άρθρα (Τίτλο και checkbox) όμως πρέπει να είναι checked αυτά που υπάρχουν ήδη στην βάση.

Το πρόβλημα μου είναι το εξής,
έχω δυο πίνακες.

Table -> article
με
ArticleID
ArticleTitle
κλπ κλπ

και

Table -> relative_article
με
RelativeArticleID
ArticleID

έχω φτιάξει το ερώτημα για να μου βγάζει σε ένα while τα στοιχεία και απο τους δύο πίνακες.

SELECT relative_article.RelativeArticleID, article.ArticleTitle
FROM relative_article
LEFT JOIN article
ON relative_article.RelativeArticleID=article.ArticleID
WHERE relative_article.ArticleID = '$article_id'

Έτσι μου εμφανίζει τα σχετικά άρθρα.
Αλλά δεν μπορώ να εμφανίσω όλα τα άρθρα και τα συγκεκριμένα να είναι checked.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Πολύπλοκο ερώτημα

Δημοσίευση από jpk » 28 Ιαν 2013 21:24

Τα συνδεδεμένα άρθρα ενός άρθρου τα επεξεργάζεσαι (προσθέτεις – αφαιρείς – αλλάζεις προτεραιότητα εμφάνισης της λίστας τους) στην «καρτέλα» επεξεργασίας του;

zPuls3
Δημοσιεύσεις: 3
Εγγραφή: 10 Δεκ 2012 17:15

Πολύπλοκο ερώτημα

Δημοσίευση από zPuls3 » 29 Ιαν 2013 10:33

Ναι, εκεί βγάζει μια λίστα με όλα τα άρθρα και επιλέγει ο χρήστης με checkbox.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Πολύπλοκο ερώτημα

Δημοσίευση από jpk » 29 Ιαν 2013 13:52

Πάμε λίγο με την δική σου ροή
Πρώτα πρέπει να επιλέξεις όλα τα άρθρα

Κώδικας: Επιλογή όλων

SELECT a.ArticleID,a.ArticleTitle  FROM article AS a
Μετά έχεις ένα result που είναι τα συνδεδεμένα άρθρα που του κύριου άρθρου που θες

Κώδικας: Επιλογή όλων

SELECT RelativeArticleID,ArticleID FROM relative_article WHERE ArticleID = ?
(Όπου ερωτηματικό το ID του άρθρου που επεξεργάζεσαι)

Άρα μας προκείπτει το Left JOIN:

Κώδικας: Επιλογή όλων

SELECT a.ArticleID,a.ArticleTitle,b.RelativeArticleID FROM article AS a LEFT JOIN (SELECT RelativeArticleID,ArticleID FROM relative_article WHERE ArticleID = ?)AS b ON b.RelativeArticleID = a.ArticleID
Τώρα έχεις όλα τα άρθρα , τα άρθρα που είναι συνδεδεμένο με αυτό που επεξεργάζεσαι έχουν b.RelativeArticleID που δεν είναι null , άρα βάζεις checked="checked" στο ανάλογο checkbox.

Η συγκεκριμένη λογική έχει κάποια όρια. Για παράδειγμα αν έχεις πολλά άρθρα δεν μπορείς να εμφανίζεις μια λίστα με όλα τα άρθρα. Και πάρα πολλά να μην είναι και μόνο 1000 για παράδειγμα πάλι δεν βγαίνει νόημα. Το πρόβλημα το έχω αντιμετωπίσει με δύο τρόπους κατά καιρούς. Το μοντέλο μου βέβαια είναι λίγο διαφορετικό , εκτός από τα ονόματα των πεδίων έχω ένα ακόμα πεδίο στον πίνακα συνδεδεμένων άρθρων , την προτεραιότητα (PRIORITY) έτσι ώστε να μπορεί να ορίσει ο διαχειριστής την σειρά που θα βγαίνει η λίστα των συνδεδεμένων άρθρων κάτω από αυτό που εμφανίζεται. (Έχω και ID στον πίνακα των συνδέσεων ώστε να αποκτα δική του οντότητα αλλά αυτό είναι άλλο θέμα)

1ος Τρόπος
Εμφανίζεις δίπλα από τα άρθρα τον κωδικό συστήματος στην λίστα των άρθρων . Η λίστα αυτή προκύπτει με επιλογή κατηγορίας και ημερολογιακού διαστήματος καταχώρησής του. Η επεξεργασία ενός άρθρου ανοίγει σε νέα σελίδα. Εκεί ο διαχειριστής μπορεί να κρεμάσει ένα άρθρο που μπορεί να βρει από την λίστα ως συνδεδεμένο με βάση τον κωδικό συστήματος, και να ορίσει προτεραιότητα εμφάνισης του συνδεδεμένου άρθρου (ή να ξε-συνδέσει κάποιο)

2ος Τρόπος (που χρησιμοποιώ τώρα)
Έχω που έχω κάνει λειτουργία αναζήτησης άρθρου με βάση μια λέξη στον τίτλο του ή στην σύντομη περιγραφή του για το κανονικό site, την έχω εντάξει και μέσα στην επεξεργασία ενός άρθρου. Έτσι μέσα στην επεξεργασία ο διαχειριστής μπορεί να κάνει αναζήτηση με μια λέξη ή περισσότερες , να βρει τα σχετικά άρθρα που θέλει και να τα κρεμάσει ως συνδεδεμένο άρθρο σε αυτό που επεξεργάζεται με προτεραιότητες εμφάνισης.

Φυσικά θα υπάρχουν και πολλοί άλλοι τρόποι , και ούτε ξέρω του χρόνου ποιον θα χρησιμοποιώ και εγώ.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης