διασυνδεση ενος πινακα με 2 αλλους με php user management

Γενικές συζητήσεις για SQL και SQL Servers (RDBMS)

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

Απάντηση
stavroula_apo
Δημοσιεύσεις: 121
Εγγραφή: 18 Σεπ 2010 03:12

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από stavroula_apo » 22 Μαρ 2011 17:27

εχω ενα πινακα user με πεδια usid, staffid, studid, usename, password και access, ενα πινακα student με πεδια studid, studfirst, studlast, studemail, studaddress, studbirth και εναν ακομη πινακα staff με αντιστοιχα πεδια του student δλδ staffid, stafflast κοκ... κ θελω με χρηση php user management na διασυνδεσω τον πινακα users με τους αλλους δυο.πως μπορω να το κανω αυτο?γινεται?κ αν γινεται ας μ πει καποιος τον τροπο γτ εγω δεν μπορω να βγαλω καμια ακρη.

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από Apostolis_38 » 23 Μαρ 2011 08:43

Κατά πρώτον τι ακριβώς θέλεις να κάνεις;
Το να "διασυνδεσω τον πινακα users με τους αλλους δυο" είναι πολύ γενικό.

Επειτα, τι εννοείς λέγοντας "php user management";
Κάποιο πρόγραμμα, σε στύλ phpmyadmin;
Η γράφοντας κώδικα;

Οι πίνακες μπορούν να αλλάξουν;
Μπορείς να προσθέσεις πεδία ή πρέπει να μείνουν ως έχουν;

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από korgr » 23 Μαρ 2011 09:24

Αποστόλη όταν μιλάει για διασύνδεση μιλάει για foreign keys
Έχει δύο πίνακες όπου αποθηκεύει αντίστοιχα τα λεπτομερή στοιχεία καθηγητών και μαθητών
Έχει και ένα πίνακα users που θα χρησιμοποιεί για user authentication (login)
Στον user χρειάζεται ένα τρόπο ώστε να διασυνδέεται η κάθε εγγραφή του με την αντίστοιχη που μπορεί να είναι ή μια εγγραφή στον πίνακα καθηγητών ή μια εγγραφή στον πίνακα των φοιτητών.
Αν είχαμε έναν πίνακα Users και έναν πχ user_details θα ήταν απλό με ένα ξένο κλειδί να κάνει διασύνδεση. Τώρα όμως πρέπει να έχει ένα πεδίο στον users που θα τον διασυνδέει με κάποιον από τους άλλους δύο. Καμία ιδέα?

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από Apostolis_38 » 23 Μαρ 2011 09:50

korgr έγραψε:όταν μιλάει για διασύνδεση μιλάει για foreign keys
Ααααα! Μάλιστα :D


Αν μπορεί να βάλει ένα έξτρα πεδίο (π.χ. user_group) σε κάθε πίνακα θα ήταν απλό.

Αλλιώς φαντάζομαι τα
user.staffid -> staff.staffid
και
user.studid -> student.studid
θα κάνουν δουλειά.

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από korgr » 23 Μαρ 2011 10:13

Apostolis_38 έγραψε:
Αλλιώς φαντάζομαι τα
user.staffid -> staff.staffid
και
user.studid -> student.studid
θα κάνουν δουλειά.
Αυτό δεν γίνεται γιατί η κάθε εγγραφή στον πίνακα users απαιτεί οι τιμές στα πεδία που ανέφερες να υπάρχουν ταυτόχρονα στους άλλους δύο πίνακες.
Για παράδειγμα αν καταχωρείς ένα φοιτητή στον πίνακα users, το users.staffid τι τιμή θα έχει;

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από Apostolis_38 » 23 Μαρ 2011 11:00

Είναι λίγο μπέρδεμα :D αλλά γίνεται.

Θα πρέπει να υπάρχει μια κατηγοριοποίηση στο studid και το staffid.
π.χ. 100+int για φοιτητές
και 200+int για καθηγητές
έτσι καταχορώντας έναν φοιτητή παίρνεις το studid (έστω 10023), το καταχωρείς στο user.studid και το user.staffid και όπου αλλού χρειάζεται.

Κάνεις αναζήτηση σύμφωνα με τα user.studid = student.studid or user.staffid = staff.staffid
και όπου βρεί εγγραφές στις φέρνει καθώς δεν μπορεί να υπάρχει ίδιο student.studid και staff.staffid στους δύο αυτούς πίνακες (student και staff).


Βέβαια έτσι αχρηστεύεις το auto_increment στα studid και staffid αλλά με ένα select μπορείς να βρείς το τελευταίο νούμερο και να δώσεις το επόμενο.
Επίσης γεμίζεις με "σκουπίδια" πολλά fields σε κάθε πίνακα αλλά χωρίς έξτρα πεδίο δεν μπορώ να σκεφτώ κάτι άλλο.



Λεω μλκίες; :roll:

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από korgr » 23 Μαρ 2011 11:30

Ο καθηγητής της τα θέλει με συγκεκριμένο τρόπο. Θέλει να ορίζει τα foreign keys για τις σχέσεις. Οπότε το θέμα δεν είναι να μην συμπίπτουν τα id στους δύο πίνακες, αλλά το ποιο πεδίο του users θα οριστεί ως ξένο κλειδί προς (εδώ είναι το μπέρδεμα) τον έναν κάποια φορά, και προς τον άλλον πίνακα κάποια άλλη φορά, ανάλογα αν στον users καταχωρεί εγγραφή καθηγητή ή φοιτητή.

Για μένα το σωστό είναι μόνο ένας πίνακας users που έχει και μαθητές και καθηγητές με όλα τους τα στοιχεία (+username & passwords για το authentication) και να ξεχωρίζουν με ένα flag πεδίο που θα είναι ταυτόχρονα και access level (πχ 1 για φοιτητή και 2 για καθηγητή).
Δεν το δέχεται όμως ο καθηγητής της έτσι.

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από Apostolis_38 » 23 Μαρ 2011 11:42

Το πεδίο access στον πίνακα users τι ρόλο βαράει;

Μήπως εκεί μπορεί να καταχωρήσει κάποια μοναδική τιμή που να μπορεί να κάνει τη σύνδεση;
π.χ. το studid ή το staffid;

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από korgr » 23 Μαρ 2011 13:09

To access είναι flag που καθορίζει την πρόσβαση κατά το login (καθηγητης | φοιτητης) αλλά όταν κάνει την διασύνδεση πρέπει να την κάνει ρητά με ένα primary key άλλου table. Δεν μπορεί να γίνει ταυτόχρονα σε δύο tables...

Πρόσεχε, όταν λέμε διασύνδεση εννοούμε κανονικό foreign key με το reference του, και όχι "τυπικά" να θεωρούμε πως το τάδε πεδίο "διασυνδέεται" με τα τάδε άλλα πεδία, κατάλαβες?

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από Apostolis_38 » 23 Μαρ 2011 13:45

Μωρέ αυτό το έχω καταλάβει.
Τον τρόπο δεν μπορώ να βρω :evil:

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από korgr » 23 Μαρ 2011 13:50

Dva_dev που εισαι να μας σωσεις
:p

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από Apostolis_38 » 23 Μαρ 2011 19:04

Λοιπόν, Σταυρούλα θα σε παρακαλέσω αν δεν έχει βρεθεί η λύση να μας ποστάρεις την λύση του καθηγητή σου.
Μου έχει σπάσει τα νεύρα αυτό το θέμα :evil:

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6235
Εγγραφή: 30 Νοέμ 2004 03:09

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από fafos » 23 Μαρ 2011 19:42

einai aplo.. o pinakas user exei 2 pedia staffid, studid pou pairnoun times 0 h 1 otan yarxei h oxi..

p.x.:

usid, staffid, studid, usename, password, access

1, null, 123, fafos, fafos123, 1 << to staffid = null ara einai student

2, 321, null, korgr, korgr123, 1 << to studid = null ara einai teacher
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από Apostolis_38 » 23 Μαρ 2011 20:02

Το είχα σκεφτεί κι εγώ αυτό.
Ομως κάτι δεν μου κολλάει.
Αν γράψεις null ή 0 στο user.staffid τι θα γράψεις στον άλλο πίνακα;
Υποτίθεται οτι το staff.staffid είναι το id της εγγραφής και δεν μπορεί να πάρει 0.

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

διασυνδεση ενος πινακα με 2 αλλους με php user management

Δημοσίευση από korgr » 23 Μαρ 2011 20:10

fafos έγραψε:einai aplo.. o pinakas user exei 2 pedia staffid, studid pou pairnoun times 0 h 1 otan yarxei h oxi..

p.x.:

usid, staffid, studid, usename, password, access

1, null, 123, fafos, fafos123, 1 << to staffid = null ara einai student

2, 321, null, korgr, korgr123, 1 << to studid = null ara einai teacher
Το θέμα δάσκαλε είναι πως πρέπει να διασυνδέεται η κάθε εγγραφή του πίνακα users με foreign key προς το εκαστοτε primary key των άλλων δύο πινάκων!
Έτσι όπως το λες πρέπει να οριστούν και τα δύο σου πεδία σαν ξένα κλειδιά. Έλα μου όμως που η mysql (και σωστά) πετάει ένα φαρδύ πλατύ error επειδή θέλει στα δύο αυτά πεδία να βρει τιμές που ΥΠΑΡΧΟΥΝ ως primary keys στους άλλους δυο πίνακες;

Απάντηση

Επιστροφή στο “Βάσεις Δεδομένων και SQL - γενικά”

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

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