[solved] Insert μεταβλητού αριθμού πεδίων

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

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

Απάντηση
Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

[solved] Insert μεταβλητού αριθμού πεδίων

Δημοσίευση από korgr » 14 Δεκ 2009 13:36

Apostolis_38 έγραψε: Η μήπως το καταχωρεί μία φορά και η mysql "γεμίζει" σειριακά τα πεδία με τα δεδομένα που βρίσκονται πρίν το κόμμα;
Αυτο ακριβως που ανεφερες. Ενα query και κανει insert ολες τις τιμες που ειναι χωρισμενες με κομμα και βρισκονται μεσα στο VALUES
Αυτο που καναμε, ειναι σε καθε loop της for να παιρνουμε μια μια τις καταχωρημενες τιμες και να της ενωνουμε με κομματα. Σε αυτη την μορφη τα περιμενει η insert

Οσον αφορα αυτο που σου ειπα για τον βοηθητικο πινακα, χρειαζεται αν στην add/edit form ενος κυριου πινακα, εχεις και καποια πεδια που εχουν ως περιεχομενα τα id καποιου αλλου πινακα.
Πχ φαντασου ενα table "books" και μεταξυ αλλων δυο πεδια με ονοματα "category" και "author". Οι τιμες αυτων των πεδιων πρεπει να περιεχουν τα id απο τα αναλογα tables "authors" και "bookCategories"

Με τον τροπο που το εκανες (αλα phmyadmin) θα πρεπει να καταχωρησεις σε textfield το id του συγγραφεα και το id της κατηγοριας. Που να τα ξερεις απ' εξω?
Δεν ειναι καλυτερο για τα πεδια "author" & "category" να βγαινει ενα select που ως περιεχομενα να εχει τα ονοματα συγγραφεων και κατηγοριων αντιστοιχα?

Σου επισυναπτω απλα ενα screenshot απο τη δομη ενος τετοιου βοηθητικου πινακα, που μου δημιουργει αυτοματα την add/edit form ενος πινακα products

Σου εξηγω τα πεδια:
  • fieldname = το mysql ονομα του πεδιου στον πινακα products

    fielddescription = Η περιγραφη του πεδιου στην add/edit form

    type = 1,2,3,4 που αντιστοιχουν σε textfield, textarea, select list, checkbox

    tableName = το ονομα του πινακα με το οποιο θα γινει fill η select list (αν type==3 δηλαδη)

    recordTable = στο εξηγω τελευταιο...

    active = 1/0 = αν θα ειναι ενεργο πεδιο (αν θα εμφανιζεται στην add/edit form)

    sort = κραταει τιμες για custom ταξινομηση των υπο εμφανιση πεδιων στη φορμα
Σου εξηγω τωρα το recordTable
Για να εχω multi-language υποστηριξη (για οσες γλωσσες θελει ο πελατης), χωριζω τα περιεχομενα του πινακα "products" σε δυο υπο-πινακες.
Ο "items" περιεχει στοιχεια του προϊοντος που ειναι κοινα σε ολες τις γλωσσες (id, τιμες, flags κλπ)
Οταν στο ονομα του πινακα αυτου προσθεσω ενα προθεμα "content_" τοτε εχω και ενα δευτερο υπο-πινακα, ο οποιος συνδεεται με τον "items" βασει του itemID, και στην ουσια περιεχει στοιχεια του προϊοντος που σχετιζονται με την γλωσσα (πχ τιτλοι, περιγραφες κλπ)
Στην περιπτωση μας ειναι ο πινακας "content_items".

Tο πεδιο recordTable λοιπον, μου λεει σε ποιον υπο-πινακα να αποθηκευτει ενα συγκεκριμενο πεδιο της add/edit form μου
:wink:
Συνημμένα
table_structure.GIF

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

[solved] Insert μεταβλητού αριθμού πεδίων

Δημοσίευση από korgr » 14 Δεκ 2009 13:41

Και ενα screenshot απο την add/edit form που δημιουργειται αυτοματα on the fly, διαβαζοντας την δομη απο τον βοηθητικο πινακα που σου ανελυσα. Τον βοηθητικο πινακα τον ονομαζω παντα με το ονομα του πρωτου βοηθητικου πχ "items" προσθετοντας το επιθεμα "_fields".
Στην περιπτωση που σου εδειξα, ειναι δηλαδη ο "items_fields".

Για τον πινακα articles πχ εχω τον βοηθητικο "articles_fields" και παει λεγοντας :)
Συνημμένα
93d2fdab2119b9a81314ecda57c59a7b.jpg

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

[solved] Insert μεταβλητού αριθμού πεδίων

Δημοσίευση από Apostolis_38 » 14 Δεκ 2009 14:07

Μπήκα στο νόημα.
Αψογος.


Ευχαριστώ για όλα.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

[solved] Insert μεταβλητού αριθμού πεδίων

Δημοσίευση από Apostolis_38 » 16 Δεκ 2009 23:28

Παληκάρι, να σε ρωτήσω κάτι.
Εστω οτι έχεις τον πίνακα που δείχνεις στην πρώτη φωτογραφία.

Πως δουλεύεις τη σύνδεση με τους βοηθητικούς πίνακες;

Ας πούμε δηλαδή οτι θέλεις να τροποποιήσεις το catFPA τραβώντας τις τιμές από τον fpa_categories.
Κάνεις το select βάσει του $row ή του mysql_field_name;

Το ρωτάω γιατί στην εφαρμογή που προσπαθώ να στήσω δεν πολυδουλεύω με το $row και τα πράγματα περιπλέκονται λίγο με τον άλλο τρόπο.
Μία λύση είναι να τραβάω ένα select join απο την αρχή, για όλους τους σχετικούς πίνακες, αλλά δεν ξέρω κατά πόσο αυτό είναι σωστό "προγραμματισιτικά" και επιβαρύνω το server με άχρηστα query.
Το "κακό" της υπόθεσης είναι οτι θέλω να φτιάξω μια εφαρμογή που να παίζει σε κάθε βάση, οπότε το mysql_field_name μου προσφέρει μια ευελιξία όσον αφορά τους πίνακες και τα fields, αλλά είναι πιο δύσχρηστο σε ότι αφορά τη σύνδεση ανάμεσα σε δύο ή περισσότερους πίνακες.

Απάντηση

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

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

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