Βοήθεια με select.

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

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

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

Βοήθεια με select.

Δημοσίευση από Apostolis_38 » 14 Οκτ 2010 01:22

Βοηθάτε χριστιανοί γιατί θα φρικάρω :evil:

Εστω οτι δημιουργούμε έναν πίνακα με primary key δύο πεδία:

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

CREATE table IF NOT EXISTS pinakas
    (pedio1 int(10) unsigned NOT NULL,
    pedio2 varchar(200) NOT NULL,
    pedio3 char(10) NOT NULL,
    pedio4 varchar(100) NOT NULL,
    PRIMARY KEY (pedio1, pedio2) ) 
    DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci
Πουθενά δεν υπάρχει id ή κάτι αντίστοιχο.

Εστω οτι περνάμε δύο εγγραφές.

1)Test1,Test2,Test3,Test4
2)Test1,Test2,Test4,Test5

Και θέλουμε το Test1 από την 1η εγγραφή. Μόνο αυτό, όχι και τη δεύτερη εγγραφή.
Χωρίς να κάτσουμε να ψάξουμε τα κελιά ένα-ένα και να τα συγκρίνουμε μεταξύ τους.
Δηλαδή κάτι σαν

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

SELECT * FROM pinakas WHERE pedio1 = "Test1";
Γίνετε αυτό το πράγμα χωρίς να έχουμε κάποιο πεδίο που να παίζει το ρόλο του id; :evil:

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Βοήθεια με select.

Δημοσίευση από dva_dev » 14 Οκτ 2010 02:59

To id στους πίνακες είναι ένα πεδίο όπως είναι και όλα τα άλλα. Δεν έχει απολύτως τίποτα το διαφορετικό.
Αυτό που κάνει τη διαφορά είναι το ποιό πεδίο (ή πεδία) ορίζεις ως primary key.
Το πεδίο (ή τα πεδία) που ορίζεις ως primary key είναι αυτά που δείχνουν με μοναδικό τρόπο την κάθε εγγραφη.
Αν έχεις ένα πεδίο ως primary key, τότε δεν μπορείς να βάλεις την ίδια τιμή στο πεδίο αυτό σε παραπάνω από 1 εγγραφές.
Αν έχεις Χ πεδία ως primary key, τότε δεν μπορείς να βάλεις τον ίδιο συνδιασμό τιμών στα πεδία αυτά σε παραπάνω από 1 εγγραφές.

Στον πίνακα σου όπως τον έχεις ορίσει, λες ότι θέλεις να κάνεις το εξής:
Εστω οτι περνάμε δύο εγγραφές.

1)Test1,Test2,Test3,Test4
2)Test1,Test2,Test4,Test5
Α) Αν μπορείς να κάνεις insert αυτές τις δύο εγγραφές, ξανακοίτα τη δημιουργία του πίνακα σου γιατί είτε ξέχασες να ορίσεις το primary key, είτε το έχεις ορίσει διαφορετικά από αυτό που αναφέρεις.

Β) Αν το έχεις ορίσει έτσι όπως αναφέρεις θα γίνει το 1ο insert αλλά το 2ο θα αποτύχει γιατί το (Test1,Test2) υπάρχει ήδη από το 1ο insert.

Γ) Μια απλή δοκιμή θα σου είχε λύσει την απορία σε πολύ πιο σύντομο χρονικό διάστημα.

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

Βοήθεια με select.

Δημοσίευση από Apostolis_38 » 14 Οκτ 2010 09:36

Γνωρίζω και συμφωνώ με αυτά που λες για το id. Η όπως αλλιώς μπορεί να το ονομάσεις.
Το ίδιο και για το primary key.

Το παράδειγμα που έδωσα είναι λάθος κι έχεις δίκιο να απορείς.

Οι εγγραφές με τον συνδυασμό αυτών των πεδίων (όπως πολύ σωστά αναφέρεις) δεν περνάνε.

Ποιό είναι το θέμα...
Εστω λοιπόν οτι έχουμε:
row1 = "Αποστόλης","Ελλάδα","Ευρώπη","Γη"
row2 = "Αποστώλης","Ευρώπη","Γη","Αλφα Κενταύρου"

Και ξαφνικά ανακαλύπτω οτι το Αποστώλης στο δεύτερο row έχει ορθογραφικό λάθος και θέλω να το διορθώσω.

Πως;
Με τι select και update;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Βοήθεια με select.

Δημοσίευση από dva_dev » 14 Οκτ 2010 09:46

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

update pinakas set pedio1="Αποστόλης" where pedio1 = "Αποστώλης" and pedio2 = "Ευρώπη";
με (pedio1, pedio2) = primary key.

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

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

Βοήθεια με select.

Δημοσίευση από Apostolis_38 » 14 Οκτ 2010 10:45

Ακριβώς.
Αυτή λοιπόν ακριβώς είναι μια διαφωνία που έχω.

Δεν γίνεται να "ενοποιήσεις" το primary key ώστε να λειτουργεί σαν ένα πεδίο.
Πρέπει να τσεκάρεις όλα τα fields που συνθέτουν το primary key.
Κι αμα είναι 4-5 πεδία από κάθε πίνακα, φέξε μου και γλίστρησα.
Κι άντε να βάλεις άλλα 5-6 AND pedio = τάδε.
Να λοιπόν η χρησιμότητα του όποιου "id"...

Είπα μήπως παίζει κάποιος τρόπος που δεν τον γνωρίζω και κάθομαι και λέω βλακείες.

Θένκ γιου μαν.

By the way. Ο τρόπος αυτός είναι ακόμα πιο δύστροπος όταν έχεις admin panel με τον τρόπο λειτουργίας του phpMyadmin όπου κλικάρεις το field ή το row που θέλεις να κάνεις select και update.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Βοήθεια με select.

Δημοσίευση από dva_dev » 14 Οκτ 2010 11:16

Όταν κάθεσαι να φτιάξεις μια βάση οι πιο σημαντικές αποφάσεις που πρέπει να πάρεις είναι:
Ποιοι θα είναι οι πίνακες που θα φτιάξεις.
Ποια θα είναι τα primary keys σε κάθε πίνακα.
Ποια θα είναι τα relations μεταξύ τους.

Αν αυτά τα αποφασίζεις με προχειρότητα, αφήνεις τα πράγματα στην τύχη τους και σύντομα θα βρεθείς να χρειάζεται refactoring η βάση και το dblayer της εφαρμογής σου (αν έχεις τέτοιο, αν δεν έχεις, αλλαγές σε πολλά σημεία του κώδικα).

Το να έχεις ένα πεδίο για primary key (αριθμητικό αν σε παίρνει ο όγκος δεδομένων) είναι σίγουρα μεγάλη ευκολία. Και αν μπορείς να αφήσεις τη βάση δεδομένων να του δίνει μόνη της τιμές ακόμα καλύτερα. Αλλά σίγουρα δεν είναι μονόδρομος κάτι τέτοιο.
Δεν γίνεται να "ενοποιήσεις" το primary key ώστε να λειτουργεί σαν ένα πεδίο.
Πρέπει να τσεκάρεις όλα τα fields που συνθέτουν το primary key.
Μπορείς να δώσεις ένα παράδειγμα του πως σκέφτεσαι να δίνεις τιμές για το ενοποιημένο primary key ώστε να βρεις την εγγραφή που θέλεις να πειράξεις; Ή πως φαντάζεσαι/θα ήθελες να λειτουργήσει κάτι τέτοιο;

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

Βοήθεια με select.

Δημοσίευση από Apostolis_38 » 14 Οκτ 2010 11:34

dva_dev έγραψε:Όταν κάθεσαι να φτιάξεις μια βάση οι πιο σημαντικές αποφάσεις που πρέπει να πάρεις είναι:
Ποιοι θα είναι οι πίνακες που θα φτιάξεις.
Ποια θα είναι τα primary keys σε κάθε πίνακα.
Ποια θα είναι τα relations μεταξύ τους.

Αν αυτά τα αποφασίζεις με προχειρότητα, αφήνεις τα πράγματα στην τύχη τους και σύντομα θα βρεθείς να χρειάζεται refactoring η βάση και το dblayer της εφαρμογής σου (αν έχεις τέτοιο, αν δεν έχεις, αλλαγές σε πολλά σημεία του κώδικα).
Και που να δείς οταν ο άλλος δεν σε ακούει και στο θέτει σε στυλ "θα το κάνεις όπως σου λέω εγώ"
dva_dev έγραψε:Το να έχεις ένα πεδίο για primary key (αριθμητικό αν σε παίρνει ο όγκος δεδομένων) είναι σίγουρα μεγάλη ευκολία. Και αν μπορείς να αφήσεις τη βάση δεδομένων να του δίνει μόνη της τιμές ακόμα καλύτερα. Αλλά σίγουρα δεν είναι μονόδρομος κάτι τέτοιο.

Μπορείς να δώσεις ένα παράδειγμα του πως σκέφτεσαι να δίνεις τιμές για το ενοποιημένο primary key ώστε να βρεις την εγγραφή που θέλεις να πειράξεις; Ή πως φαντάζεσαι/θα ήθελες να λειτουργήσει κάτι τέτοιο;
Kάτι σε στύλ:
SELECT pedio1 WHERE (pedio1,pedio2) = "Αποστώλης,Ευρώπη";
Απλό δηλαδή, όπως με το id.


Το θέμα είναι οτι έχω φτιάξει ένα admin panel στα πρότυπα του phpMyadmin όπου τραβώντας το (οποιοδήποτε) id με μία μόνο σελίδα μπορείς να κάνεις select,update, delete οποιοδήποτε row από οποιοδήποτε table.
Οσα tables κι αν προσθέσεις αφαιρέσεις η δουλειά που πρέπει να κάνεις με αυτό τον τρόπο δεν είναι παραπάνω από δύο λεπτά (απλή ενημέρωση ενός αρχείου)
Οπως είπα το μόνο που χρειάζεται είναι ένα πεδίο που θα παίζει το ρόλο του id.

Καταργώντας αυτό το πεδίο θα πρέπει να ξαναγραφτεί όλο το admin με αντίστοιχες σελίδες για κάθε ένα πίνακα, μιας και ο συνδυασμός των primary keys θα διαφέρει από πίνακα σε πίνακα.
Φυσικά το να προσθέσεις πίνακα σημαίνει άντε πάλι τα ίδια γι αυτόν τον πίνακα.


Προσπαθώ όσο γίνεται να είμαι διαλακτικός αλλά όταν η απάντηση που παίρνεις είναι "δεν θέλω το id επειδή δεν θέλω ο admin να ασχολείται με αυτό" ε τότε τι να πω.
Και από πάνω ακούς και εξυπνάδες του στύλ "μπορείς να ενοποιήσεις πολλά πεδία σαν ένα primary key ". Το θέμα της απορίας μου δηλαδή.
Είπαμε ο πελάτης έχει δίκιο αλλά μην το παραχ...

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Βοήθεια με select.

Δημοσίευση από nbc » 14 Οκτ 2010 12:53

Προσωπικά, δεν ασπάζομαι (ουδεπόποτε) τη ρήση "ο πελάτης έχει πάντα δίκιο", ούτε τη χρησιμοποιώ ως δικαιολογία κακού σχεδιασμού. Φυσικά, ούτε και τη δέχομαι από άλλους. Αν ο πελάτης ξέρει καλύτερα τη δουλειά μου από μένα, τότε ας τη φτιάξει μόνος του. Δεν είμαστε χαμάληδες, αλλά επιστήμονες. Δεν πουλάμε εργατικά χέρια, αλλά γνώση και εμπειρία.

Να με συμπαθάς Απόστολε, αλλά αυτό που λες δεν βγάζει νόημα. Αν ο πίνακας χρειάζεται id, τότε πρέπει να το έχει - τελεία και παύλα. Τι θα πει δεν θέλει να το βλέπει ο πελάτης; Κανείς δεν απολαμβάνει τα υπόθετα αλλά αν ο γιατρός σου πει να τα πάρεις, θα πεις κι ένα τραγούδι. Ο πελάτης παραγγέλνει αποτέλεσμα δεν παραδίδει μαθήματα προγραμματισμού.

Εκτός και αν είναι καλύτερος προγραμματιστής από σένα. Αν αυτό δεν το δέχεσαι και ξέρεις πως λανθάνει, τότε δεν πρέπει και να το κάνεις.


Επί του προκειμένου (και sorry για το ranting :D, με πιάνει κάπου-κάπου):
Kάτι σε στύλ:
SELECT pedio1 WHERE (pedio1,pedio2) = "Αποστώλης,Ευρώπη";
γίνεται με την CONCAT
...μιας και ο συνδυασμός των primary keys θα διαφέρει από πίνακα σε πίνακα.
...μπορείς να τον βρεις με κατάλληλο parsing της SHOW INDEX. Δεν χρειάζεται να ξαναγράψεις τίποτα.
εξυπνάδες του στύλ "μπορείς να ενοποιήσεις πολλά πεδία σαν ένα primary key "
Δεν είναι εξυπνάδα. Λέγεται composite key και διδάσκεται στο ίδιο κεφάλαιο με τα surrogate και natural keys.

Υπάρχουν 2 βασικά είδη πινάκων: Αυτοί που ορίζουν (=define, πχ Πελάτες) και αυτοί που συσχετίζουν (=relate, πχ Παραγγελίες).

Οι περισσότεροι ποργραμματιστές δεν έχουν χρησιμοποιήσει ποτέ τους composite primary keys. Κι όμως, υπάρχει ολόκληρη σχολή - φυσικά και παραδείγματα - που τα υποδυκνεύει ως την καταλληλότερη λύση σε πίνακες relate. Εννοείται, κάθε περίπτωση είναι ιδιότυπη και διακριτή. Η βιβλιογραφία δεν είναι ευαγγέλιο, αλλά οδηγός. Όλοι (οφείλουμε να) γνωρίζουμε τα Normal Forms (1NF, 2NF, ...), αλλά συχνά τα καταστρατηγούμε. Το δέχομαι, αρκεί να είναι εν γνώση μας και να έχουμε μια καλή δικαιολογία γι αυτό.


Συμπέρασμα και συμβουλή: Μην τρελαίνεσαι με (πιθανές) λάθος σχεδιαστικές αποφάσεις. Προγραμματίζω από τα 15 μου και είμαι 48. Ε, σε πληροφορώ, πως ακόμη και σήμερα γίνεται του refactoring το κάγκελο!

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

Βοήθεια με select.

Δημοσίευση από Apostolis_38 » 14 Οκτ 2010 13:10

nbc έγραψε:...μπορείς να τον βρεις με κατάλληλο parsing της SHOW INDEX. Δεν χρειάζεται να ξαναγράψεις τίποτα.
Show index. Θα το ψάξω.
Πάντως με την mysql_field_type που χρησιμοποιώ δεν μπορώ να κάνω κάτι.


nbc έγραψε:Δεν είναι εξυπνάδα. Λέγεται composite key και διδάσκεται στο ίδιο κεφάλαιο με τα surrogate και natural keys.

Υπάρχουν 2 βασικά είδη πινάκων: Αυτοί που ορίζουν (=define, πχ Πελάτες) και αυτοί που συσχετίζουν (=relate, πχ Παραγγελίες).
Στην ουσία δηλαδή μου λες να δημιουργήσω πίνακα που να κρατάει τους συσχετισμούς των tables.

Και οι δύο προτάσεις σου έχουν πολύ δουλειά για ένα θέμα που θα μπορούσε να λυθεί εύκολα.
Και μάλιστα μιλάμε για admin panel. Δηλαδή για διαχείριση από κάποιον που ξέρει 5 πράγματα κι όχι από κάποιον απλό χρήστη.
nbc έγραψε:Συμπέρασμα και συμβουλή: Μην τρελαίνεσαι με (πιθανές) λάθος σχεδιαστικές αποφάσεις. Προγραμματίζω από τα 15 μου και είμαι 48. Ε, σε πληροφορώ, πως ακόμη και σήμερα γίνεται του refactoring το κάγκελο!
Εντάξει, ίσως να φταίει και ο τρόπος που μου πασάρεται το "κάνε αυτό".
Πάντα παίζει ρόλο.
Οπως προείπα αυτό που με τσαντίζει είναι η δικαιολογία την οποία θεωρώ μπούρδα.

Οπως και νά 'χει σε ευχαριστώ για την "οπτική γωνία" που μου δείχνεις.

edit υπάρχει και άλλος προγραμματιστής στο όλο concept. Και από εκεί ξεκινάει το όλο μπέρδεμα.
Μου φαίνεται έμπλεξα εκεί που δεν έπρεπε...

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Βοήθεια με select.

Δημοσίευση από nbc » 14 Οκτ 2010 13:19

Apostolis_38 έγραψε:Στην ουσία δηλαδή μου λες να δημιουργήσω πίνακα που να κρατάει τους συσχετισμούς των tables.
Όχι βέβαια...

Στο ανέφερα ως context του composite primary key, και που αυτό χρησιμοποιείται.

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

Βοήθεια με select.

Δημοσίευση από Apostolis_38 » 14 Οκτ 2010 13:27

Δώσε link να διαβάσω γιατί δεν σε λαμβάνω.
Μου τα λες πολύ επιστημονικά :D

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

Βοήθεια με select.

Δημοσίευση από Apostolis_38 » 14 Οκτ 2010 13:34

Αστο.
Κάτι βρήκα.

Θένκ γιου.

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

Βοήθεια με select.

Δημοσίευση από korgr » 14 Οκτ 2010 13:45

Αποστόλη, επειδή το θέμα είναι πολύ σχετικό με το refactoring του δικού μου framework που δουλεύω τώρα, θα ήθελα να μου εξηγήσεις τι ακριβώς προσφέρεις με την one page λύση για διαχείρηση όλων των πινάκων.
Πώς αντιμετωπίζεις τα relations?
Για παράδειγμα, αν έχεις ένα πίνακα cities (id, cityName, countyID) με πόλεις και έναν πίνακα counties (id, countyName) με νομούς, και θές να κάνεις edit μια πόλη, στη θέση του countyID τι πεδίο εμφανίζεις στο admin panel? Textfield με τιν τιμή που υπάρχει στον mysql πίνακα cities? Δηλαδή κάτι σαν "34" ?

edit:
countyID = το id του πίνακα counties αν δεν το κατάλαβες

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

Βοήθεια με select.

Δημοσίευση από Apostolis_38 » 14 Οκτ 2010 14:47

Φαντάζομαι μιλάς για add record κατάσταση, γιατί στο alter record δεν έχει και τόσο νόημα να πάρεις την τιμή από τον άλλο πίνακα. Μην ξεχνάμε οτι μιλάμε για admin panel που σημαίνει οτι κάποιο "ψάξιμο" από τον χρήστη χρειάζεται καμμιά φορά.
Αν και, πάλι γίνεται.

Οπως το θέλεις. Μπορείς να εμφανίσεις και το 34 και το Αττική (π.χ.)

Η λογική που χρησιμοποιώ είναι η εξής:
- Με ένα a href στελνεις τον πίνακα, το πεδίο που έχεις ορίσει σαν id, το ίδιο το "id" και το πεδίο που θέλεις να εμφανίσεις.
Εστω $t o πίνακας, $sid to πρώτο field του πίνακα $id το id και $f το field

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

<a href="?mode=alter&sid=<?php echo trim&#40;$field_name&#91;0&#93;&#41;;?>&id=<?php echo trim&#40;$row&#91;0&#93;&#41;;?>&t=<?php echo trim&#40;$t&#41;;?>&f=<?php echo trim &#40;$field_name&#91;&#93;=mysql_field_name&#40;$result,$i&#41;&#41;;?>" class="text"><?php echo trim &#40;$row&#91;$i&#93;&#41;;?></a>
Ο μόνος περιορισμός είναι οτι το field που έχεις ορίσει σαν id πρέπει να είναι το πρώτο/δεύτερο/εκατοστό αντίστοιχα σε όλους τους πίνακες.


- Αν θέλεις κάνεις ένα αρχικό select για τον πίνακα.

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

$query = "SELECT * FROM ".$t." ";
$result = mysql_query&#40;$query&#41;;
$field = mysql_num_fields&#40;$result&#41;;
for &#40;$i = 0; $i < $field; $i++ &#41; &#123; &#125;


- Με τα στοιχεία που έχεις στείλει με το a href, παίρνοντας όποιο κριτήριο θέλεις κάνεις την ανάλογη "κίνηση"
π.χ.

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

if&#40;$t == "cities" && $f == "cityName"&#41; &#123;
μπούρου μπούρου&#125;
Φυσικά μπορείς να βάλεις μόνο ένα ή περισσότερα κριτήρια.
Και στο μπούρου μπούρου να κάνεις άλλο query,<select> κ.λ.π.

Αν έχεις κάνει το αρχικό select στη θέση του f μπορείς να βάλεις οτιδήποτε

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

if&#40;mysql_field_name&#40;$result, $i&#41; == "id"&#41;;

if &#40;mysql_field_type&#40;$result, $i&#41; != "blob"&#41;;

$check = mysql_field_flags&#40;$result, $i&#41;;
if &#40;strstr &#40;$check,"auto_increment"&#41; &#41;
και πάει λέγοντας.


- Αν κάνεις alter record συνεχίζεις με το select μέσα στο for loop.

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

$query = "SELECT ".$f." FROM ".$t." WHERE ".$sid." = ".$id." ";
και πράτεις αναλόγως.
Πιθανότατα με ένα INSERT.







Δύο είναι τα αρνητικά.
Πρέπει να παίρνεις τα fields με το όνομα που έχουν στο table.
Επειδή λοιπόν δεν είναι πάντα δυνατόν να εμφανίζεις στον χρήστη το cityName
φτιάχνεις ένα php file το οποίο κάνεις require.

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

if&#40;$field_name&#91;&#93;=mysql_field_name&#40;$result,$i&#41; == "id"&#41; &#123;
        echo "Α/Α Εγγραφής";
    &#125;
    elseif&#40;$field_name&#91;&#93;=mysql_field_name&#40;$result,$i&#41; == "cityName"&#41; &#123;
        echo "Πόλη ";
    &#125;
...
Αν υπάρξει ανάγκη για πολλούς ελέγχους πεδίων προφανώς θα πρέπει να φτιάξεις ένα σκασμό if - elseif.
Πιθανώς αυτό να μη συμφέρει.
Αν θυμάσαι πρίν από λίγο καιρό είχα θέσει ένα θέμα για το πως μπορώ να κάνω redirect με header location μέσα σε class.
http://www.freestuff.gr/forums/viewtopic.php?t=51965
Είχα πέσει σε αυτό το πρόβλημα και κοίταγα μήπως το σώσω.






Είμαι σίγουρος οτι σου φαίνεται πολύ μπέρδεμα, όπως με όλα μου τα script :D , αλλά εμένα με έχει βολέψει αρκετά.
Για projects που δεν έχουν περίεργες σχέσεις μεταξύ των tables είναι ότι πρέπει.

Αν πιστεύεις οτι μπορεί να σου χρησιμέψει σε κάτι να σου στείλω όλο το αρχείο να το δείς.
Προφανώς εδω μέσα δεν χωράει όλο το script.

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

Βοήθεια με select.

Δημοσίευση από korgr » 14 Οκτ 2010 15:24

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

Πάντως για την ιστορία, όλα αυτά που προσπαθείς να κάνεις γίνονται και με μεγάλη ευελιξία και χωρίς να χρειαστεί ούτε μια γραμμή php κώδικα για πρόσθετα if και elseif.
Για να καταλάβεις, εγώ αυτό που δουλεύω τώρα δεν κάνει απλά αυτό που προσπαθείς, αλλά στην ουσία δημιουργεί τα admin panels που τα κάνουν :)

Αξίζει πάντως να δώσεις ιδιαίτερη βαρύτητα σε αυτό που είπε ο dva_dev:
Όταν κάθεσαι να φτιάξεις μια βάση οι πιο σημαντικές αποφάσεις που πρέπει να πάρεις είναι:
Ποιοι θα είναι οι πίνακες που θα φτιάξεις.
Ποια θα είναι τα primary keys σε κάθε πίνακα.
Ποια θα είναι τα relations μεταξύ τους.

Αν αυτά τα αποφασίζεις με προχειρότητα, αφήνεις τα πράγματα στην τύχη τους και σύντομα θα βρεθείς να χρειάζεται refactoring η βάση και το dblayer της εφαρμογής σου (αν έχεις τέτοιο, αν δεν έχεις, αλλαγές σε πολλά σημεία του κώδικα)
Σε αυτό μόνο εντοπίζω τις αδυναμίες σου και γιαυτό καταφεύγεις πάντα σε πατέντες όταν συναντάς "τοίχους". Σε όλα τα υπόλοιπα είσαι ένα καταπληκτικό μυαλό με φοβερή δημιουργικότητα :D

Απάντηση

Επιστροφή στο “MySQL”

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

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