Εικόνα σε βάση με xampp

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

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

Απάντηση
Kate10
Δημοσιεύσεις: 5
Εγγραφή: 27 Σεπ 2009 21:06

Εικόνα σε βάση με xampp

Δημοσίευση από Kate10 » 27 Σεπ 2009 21:16

Καλησπέρα παιδιά!

Προσπαθώ να φτιάξω ένα news website με άρθρα και αντίστοιχες εικόνες.
Eφτιαξα μία βάση με πχ ενα πίνακα με : ΙD, Date, Titlte, Article.
Στο site χρησιμοποιώ PHP για να καλώ την ημερομηνία και τους τίτλους με το άρθρο.

Πώς γίνεται να αποθηκεύσω και μία εικόνα για κάθε άρθρο στη βάση και να την καλώ να εμφανίζεται με Php κάτω από κάθε τίτλο άρθρου??? Διάβασα ότι μπορεί να γίνει αποθηκεύοντας κάπως το Path της εικόνας σε πεδίο στον πίνακα κλπ αλλά δεν ξέρω λεπτομέρειες. Μπορείτε να βοηθήσετε??? Αν γίνεται να είστε αναλυτικοί και όσο γίνεται πιο απλοί γιατί τώρα ξεκίνησα να ασχολούμαι με Php Και Sql.

(Επίση μετά θα πρέπει να κάνω μέσω φόρμας και PHP εισαγωγή στην βάση αυτών των δεδομένων, update, delete κλπ αλλά ας λύσουμε αυτό πρώτα!)

Ευχαριστώ!!! :)

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

Εικόνα σε βάση με xampp

Δημοσίευση από Apostolis_38 » 28 Σεπ 2009 10:24

Ο πιο καλός τρόπος είναι να αποθηκεύεις το όνομα του αρχείου στη βάση και μετά να το εμφανίζεις με την php πέρνωντας σαν παραμέτρους το όνομα του αρχείου και το φάκελο που έχει αποθηκευτεί.

Πολύ πολύ περιληπτικά θα πρέπει να κάνεις κάτι σαν κι αυτό:

- Ανέβασμα εικόνας σε ένα directory, π.χ. kate.
- Εισαγωγή του ονόματος στη βάση. Εστω οτι ο πίνακας λέγεται free και το πεδίο stuff:

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

insert into free values ('test.jpg');
-Αναζήτηση

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

select * from free
και εμφάνιση της εικόνας:

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

echo "<img src = ' kate/ ' .$row&#91;"stuff"&#93;. ' ";
Οταν στο πεδίο stuff βρεί την εγγραφή test.jpg θα στην εμφανίσει.

Kate10
Δημοσιεύσεις: 5
Εγγραφή: 27 Σεπ 2009 21:06

Εικόνα σε βάση με xampp

Δημοσίευση από Kate10 » 28 Σεπ 2009 13:44

Σε ευχαριστώ πολύ! Θα το δοκιμάσω και θα επανέλθω! :D

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

Εικόνα σε βάση με xampp

Δημοσίευση από Apostolis_38 » 28 Σεπ 2009 14:30

Δύο παρατηρήσεις.

- Μην δώσεις κανέναν περίεργο ορισμό στο πεδίο που θα κρατάει το όνομα της εικόνας.
Εγώ δίνω varchar (σε περίπτωση που έχει κανένα περίεργο όνομα το αρχείο) και απλώς "φιλτράρω" το όνομα με τις htmlspecialchars και addslashes.

- Κατά τη γνώμη μου είναι καλή τακτική πριν την καταχώρηση στην βάση να κάνεις ένα select μήπως και υπάρχει ήδη εγγραφή με το ίδιο όνομα. Αν συμβεί αυτό δεν θα ξέρεις ποιο αντιστοιχεί που και θα σου δείχνει άλλα αντί άλλων. Ασε που κατά πάσα πιθανότητα η παλιότερη εικόνα θα διαγραφεί από τον server.
Μπορείς να κάνεις το ίδιο βάζοντας το πεδίο σαν unique αλλά για μένα είναι κακή πρακτική γιατί αν τύχει και θέλεις να παρακάμψεις αυτή τη ρύθμιση θα πρέπει να τροποιήσεις τη βάση.
Κι αν μέσα έχει δεδομένα η βάση καλό είναι να το αποφεύγεις αυτό.

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

Εικόνα σε βάση με xampp

Δημοσίευση από korgr » 28 Σεπ 2009 14:49

Apostolis_38 έγραψε:Δύο παρατηρήσεις.

- Μην δώσεις κανέναν περίεργο ορισμό στο πεδίο που θα κρατάει το όνομα της εικόνας.
Εγώ δίνω varchar (σε περίπτωση που έχει κανένα περίεργο όνομα το αρχείο) και απλώς "φιλτράρω" το όνομα με τις htmlspecialchars και addslashes.

- Κατά τη γνώμη μου είναι καλή τακτική πριν την καταχώρηση στην βάση να κάνεις ένα select μήπως και υπάρχει ήδη εγγραφή με το ίδιο όνομα. Αν συμβεί αυτό δεν θα ξέρεις ποιο αντιστοιχεί που και θα σου δείχνει άλλα αντί άλλων. Ασε που κατά πάσα πιθανότητα η παλιότερη εικόνα θα διαγραφεί από τον server.
Μπορείς να κάνεις το ίδιο βάζοντας το πεδίο σαν unique αλλά για μένα είναι κακή πρακτική γιατί αν τύχει και θέλεις να παρακάμψεις αυτή τη ρύθμιση θα πρέπει να τροποιήσεις τη βάση.
Κι αν μέσα έχει δεδομένα η βάση καλό είναι να το αποφεύγεις αυτό.
Αποστολη, υπαρχει πιστευω και καλυτερος τροπος με τον οποιο δεν χρειαζεται να ανησυχεις για τα προβληματα που ανεφερες.

Πως το αντιμετωπιζω εγω:

Δημιουργια νεου πινακα (πχ "files") με δυο πεδια (id, tags)
Φροντιζουμε πρωτα να εισαγουμε στον πινακα αυτο τα images που θα χρειαστουμε, με filename το id της εγγραφης και με καποια keywords στο πεδιο "tags" ωστε να εντοπιζουμε ευκολα στο admin panel, την εικονα που θελουμε να επιλεξουμε και να την αντιστοιχισουμε στις κυριως εγγραφες μας (πχ products).
Ετσι στον πινακα products το μονο που χρειαζεται να αποθηκευσουμε ειναι το id της εγγραφης του πινακα files.
Αν θελουμε να αντιστοιχισουμε περισσοτερες εικονες ανα εγγραφη προϊοντος τοτε θα χρειαστουμε bridge table και θα καταχωρησουμε το id αυτης της εγγραφης. Η δομη του bridge table θα ειναι (id, product_id, file_id)

Αν θελουμε το παμε πιο μακρυα και προσθετουμε στο table "files" και ενα πεδιο "filetype" και ετσι μπορουμε να πλαισιωνουμε καθε εγγραφη προϊοντος -εκτος απο image- και με αλλου τυπου αρχεια (pdf, doc, xls κλπ)

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

Εικόνα σε βάση με xampp

Δημοσίευση από Apostolis_38 » 28 Σεπ 2009 15:13

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

Ομως δεν έχω κάνει ποτέ το κόλπο να δώσω το id σαν όνομα αρχείου. Για την ακρίβεια φανταζόμουν οτι δεν θα δουλεύει γιατί στο echo δεν θα μπορούσες να ορίσεις αν είναι jpg ή gif κ.λπ. κ.λ.π. Βέβαια με το filetype λύνεται το θέμα.

Με την πρώτη ευκαιρία θα δοκιμάσω να σε αντιγράψω . :D

Απάντηση

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

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

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