Αποθηκευση των προηγουμενων αρθρων σε μια database

Από που να ξεκινήσω; Που θα βρω; κ.α. γενικές ερωτήσεις για την δημιουργία μιας ιστοσελίδας.

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

Απάντηση
Άβαταρ μέλους
cristusflo
Δημοσιεύσεις: 307
Εγγραφή: 07 Οκτ 2007 00:36
Τοποθεσία: Salonica city
Επικοινωνία:

Αποθηκευση των προηγουμενων αρθρων σε μια database

Δημοσίευση από cristusflo » 05 Οκτ 2008 02:41

Αρχικα να δηλωσω πως δεν ηξερα αν επρεπε να το τοποθετησω στο forum για php ή mysql..( o αρμοδιος mod ας αποφασισει ως σοφα οφειλει :) )

Λοιπόν εστω εχουμε ενα site με τον ιδιο "κορμο" και καθε μερα οι μονες αλλαγες που κανουμε ειναι να αλλαζουμε μια εικονα και ενα κειμενακι...τπτ περισοτερο ( μην τα μπλεξουμε απο την αρχη :D )

Αυτα θα πρεπει να τα κρατα σε μια βαση δεδομενων ( προφανως ), αλλά και να τα εμφανιζει ως μια λιστα για να μπορει καποιος αν θελει να επιλεξει καποιο απο αυτα...
Συνεπως η αποθηκευση γινεται με την mysql και η εμφανιση στο site με php...

Ελα ομως που δεν μπορω να κτλβω πως θα αποθηκευτει ολοκληρο κειμενο μαζι με εικονα σε μια βαση...δλδ τι μορφης θα ειναι?μπορει να "σπασει" και να το σωσουμε ξεχωριστα ως 2 διαφορετικους τυπους δεδομενων?

Η PHP περαν του ρολου της για να εμφανιζει τα αποτελεσματα τι αλλο θα πρεπει να κανει ?

Επειδη εχω την εντυπωση πως αυτο το θεμα καπου θα εχει ξανααναφερθει ή στην καλυτερη καποια ορολογια θα εχει ωστε να ψαξω στο google οποιος δε μπορει να κατσει να απαντησει αναλυτικα στα παραπανω ( που υποθετω θα χρειαζονται μακροσκελεις απαντησεις ) ας βοηθησει στο πως και που να ψαξω.

Ευχαριστώ :)

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Αποθηκευση των προηγουμενων αρθρων σε μια database

Δημοσίευση από mrpc » 05 Οκτ 2008 04:41

Βασικά αν ρίξεις μια ματά στα tutorials του FS θα βρεις τον τρόπο να κάνεις αυτό που θες. Πρακτικά θέλεις ένα πολύ απλό news script.
Στη βάση κάνεις έναν πίνακα που κρατάει articleid (για λόγους κανονικοποίησης, και τα id βγαίνουν αυτόματα), τίτλο (varchar), κείμενο (text), ημερομηνία (date ή int, ανάλογα με τον χειρισμό από την php) και imagepath (varchar).
Την εικόνα δεν θα την αποθηκεύεις στη βάση, αλλά σαν αρχείο στον server σου. Απλά στη βάση θα γραφεις το url της.
Η php κάνει τη σύνδεση με τη βάση, τραβάει τα άρθρα ή υποβάλει τα νέα άρθρα και μέσω μιας upload form γράφει και τις εικόνες στο δίσκο.
Ξεκίνα από τα βασικά, ακολούθα 2-3 tutorials και μετά θα σου φανεί πολύ εύκολο.

Άβαταρ μέλους
cristusflo
Δημοσιεύσεις: 307
Εγγραφή: 07 Οκτ 2007 00:36
Τοποθεσία: Salonica city
Επικοινωνία:

Αποθηκευση των προηγουμενων αρθρων σε μια database

Δημοσίευση από cristusflo » 07 Οκτ 2008 17:34

mrpc έγραψε:Βασικά αν ρίξεις μια ματά στα tutorials του FS θα βρεις τον τρόπο να κάνεις αυτό που θες. Πρακτικά θέλεις ένα πολύ απλό news script.
Στη βάση κάνεις έναν πίνακα που κρατάει articleid (για λόγους κανονικοποίησης, και τα id βγαίνουν αυτόματα), τίτλο (varchar), κείμενο (text), ημερομηνία (date ή int, ανάλογα με τον χειρισμό από την php) και imagepath (varchar).
Την εικόνα δεν θα την αποθηκεύεις στη βάση, αλλά σαν αρχείο στον server σου. Απλά στη βάση θα γραφεις το url της.
Η php κάνει τη σύνδεση με τη βάση, τραβάει τα άρθρα ή υποβάλει τα νέα άρθρα και μέσω μιας upload form γράφει και τις εικόνες στο δίσκο.
Ξεκίνα από τα βασικά, ακολούθα 2-3 tutorials και μετά θα σου φανεί πολύ εύκολο.

Oπως το εχω ψαξει για την ωρα αυτο που χρειαζεται να εχω ειναι ενα CMS ετσι και εκανα εγκατασταση του joomla.

Για tutorials σε ποιο τομεα να ψαξω εννοεις? σε mysql ή PHP ?

ευχαριστώ

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Αποθηκευση των προηγουμενων αρθρων σε μια database

Δημοσίευση από Banavas » 07 Οκτ 2008 18:59

Tα tutorials PHP & MYSQL τα χρειάζεσαι για να γράψεις εσύ κάποιο script που να κάνει την καταχώρηση και την ανάγνωση των δεδομένων από την βάση.
Χρησιμοποιόντας το joomla μπορείς να μην ασχοληθείς ποτέ με αυτά τα πράγματα.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
cristusflo
Δημοσιεύσεις: 307
Εγγραφή: 07 Οκτ 2007 00:36
Τοποθεσία: Salonica city
Επικοινωνία:

Αποθηκευση των προηγουμενων αρθρων σε μια database

Δημοσίευση από cristusflo » 07 Οκτ 2008 19:05

Banavas έγραψε:Tα tutorials PHP & MYSQL τα χρειάζεσαι για να γράψεις εσύ κάποιο script που να κάνει την καταχώρηση και την ανάγνωση των δεδομένων από την βάση.
Χρησιμοποιόντας το joomla μπορείς να μην ασχοληθείς ποτέ με αυτά τα πράγματα.
got it ;)

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

Αποθηκευση των προηγουμενων αρθρων σε μια database

Δημοσίευση από korgr » 08 Οκτ 2008 13:13

Κατ' αρχάς καλώς σας βρήκα!
Βλέπω και κάποια γνωστά πρόσωπα ήδη εδώ μέσα (είμαι ο Νότης από το Κορινθόραμα).
mrpc έγραψε: Την εικόνα δεν θα την αποθηκεύεις στη βάση, αλλά σαν αρχείο στον server σου. Απλά στη βάση θα γραφεις το url της.
Νομίζω πως υπάρχει καλύτερη προσέγγιση όσον αφορά τις εικόνες σε mysql (αν μας ενδιαφέρει να πλαισιώνουμε την εγραφή μας με εικόνα ή εικόνες τύπου jpg)
Από τη στιγμή που στο table μας υπάρχει το πεδίο id (primary key) δεν είναι κομψό να χρησιμοποιούμε πεδίο για το url της εικόνας.
Αντ' αυτού, κατά το upload της εικόνας και πριν την αποθήκευσή της στον server, την μετονομάζουμε σε κάτι της μορφής:

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

$path.$id.".jpg"
ή αν θέλουμε να αντιστοιχίσουμε περισσότερες εικόνες ανά άρθρο, σε κάτι της μορφής

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

$path.$id."_".$index.".jpg"
για παράδειγμα η εικόνα με filename "34_2.jpg" αντιστοιχεί στην δεύτερη εικόνα (index=2) της εγγραφής με id=34

Την $id φυσικά την έχουμε από την mysql_insert_id() σε μια νέα εισαγωγή εγγραφής μετά την INSERT.

Αν σκοπεύουμε να χρησιμοποιούμε διάφορους τύπους εικόνας (jpg, gif, png) τότε η προσέγγιση του mrpc είναι μονόδρομος!

Άβαταρ μέλους
cristusflo
Δημοσιεύσεις: 307
Εγγραφή: 07 Οκτ 2007 00:36
Τοποθεσία: Salonica city
Επικοινωνία:

Αποθηκευση των προηγουμενων αρθρων σε μια database

Δημοσίευση από cristusflo » 08 Οκτ 2008 17:02

korgr έγραψε:Κατ' αρχάς καλώς σας βρήκα!
Βλέπω και κάποια γνωστά πρόσωπα ήδη εδώ μέσα (είμαι ο Νότης από το Κορινθόραμα).


Αντ' αυτού, κατά το upload της εικόνας και πριν την αποθήκευσή της στον server, την μετονομάζουμε σε κάτι της μορφής:

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

$path.$id.".jpg"

επειδη τα μπερδεψα λιγο με τον κωδικα μπορεις να το δωσεις με παραδειγμα αν πχ η φωτο ειναι test.jpg ?

καλως σε βρηκαμε και ευχαριστώ για την απαντηση :)

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

Αποθηκευση των προηγουμενων αρθρων σε μια database

Δημοσίευση από korgr » 08 Οκτ 2008 18:36

αν από την φόρμα το πεδίο εικόνας έχει όνομα "photo", βάζεις τον κώδικα που ακολουθεί μετά το INSERT στη βάση...
Προσοχή, όταν λέω όνομα δεν εννοώ το όνομα της εικόνας σου αλλά το όνομα του πεδίου της φόρμας, δηλαδή την POST μεταβλητή με όνομα "photo"
Τέλος ο φάκελος που θα αποθηκεύεις τις εικόνες σου πρέπει να έχει save permissions

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

	$id=mysql_insert_id(); // το id που μόλις αποθηκεύτηκε στην βάση...
	$path = "images/db/"; // το path που θα αποθηκεύονται οι εικόνες (άλλαξέ το σε δικό σου path)
	$imageFilename=$path.$id.".jpg"; // όλο το path συν το filename της εικόνας με id
 	$theImage=$_FILES['photo']['name'];
	$theImage=($theImage=="none")? "" : $theImage; // αν ήρθε εικόνα με POST
	if($theImage){ // τότε αποθήκευσέ την...
	move_uploaded_file ($_FILES['photo']['tmp_name'], $imageFilename);
	}

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Αποθηκευση των προηγουμενων αρθρων σε μια database

Δημοσίευση από mrpc » 08 Οκτ 2008 19:16

Χμμμ... καλό σαν σκέψη αλλά χάνει σε functionality. Δηλαδή:
α) δεν έχεις δυνατότητα να ανεβάζεις διαφορετικούς τύπους εικόνας (εκτός αν μετατρέπεις όταν ανέβουν)
β) θα πρέπει να κάνεις έλεγχο σε κάθε εμφάνιση για το αν η εικόνα υπάρχει, γιατί μπορεί ο διαχειριστής να ανεβάσει άρθρο χωρίς εικόνα
γ) δεν μπορείς αν χρειαστεί να δίνεις εξωτερικό url για την εικόνα ή να επαναχρησιμοποιήσεις κάποια που υπάρχει ήδη για να γλυτώσεις χώρο
δ) ενδεχομένως χάνεις και το user - friendly και google - friendly filename που θα μπορούσε να έχει μια εικόνα (π.χ. άλλο cosmote_logo.jpg και άλλο 123.jpg).

Νομίζω ότι ένα field παραπάνω δεν κοστίζει κάτι ;)

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

Αποθηκευση των προηγουμενων αρθρων σε μια database

Δημοσίευση από korgr » 08 Οκτ 2008 22:15

mrpc έγραψε:Χμμμ... καλό σαν σκέψη αλλά χάνει σε functionality. Δηλαδή:
α) δεν έχεις δυνατότητα να ανεβάζεις διαφορετικούς τύπους εικόνας (εκτός αν μετατρέπεις όταν ανέβουν)
β) θα πρέπει να κάνεις έλεγχο σε κάθε εμφάνιση για το αν η εικόνα υπάρχει, γιατί μπορεί ο διαχειριστής να ανεβάσει άρθρο χωρίς εικόνα
γ) δεν μπορείς αν χρειαστεί να δίνεις εξωτερικό url για την εικόνα ή να επαναχρησιμοποιήσεις κάποια που υπάρχει ήδη για να γλυτώσεις χώρο
δ) ενδεχομένως χάνεις και το user - friendly και google - friendly filename που θα μπορούσε να έχει μια εικόνα (π.χ. άλλο cosmote_logo.jpg και άλλο 123.jpg).

Νομίζω ότι ένα field παραπάνω δεν κοστίζει κάτι ;)
α) Το ανέφερα και εγώ αυτό. Πάντως 99% των περιπτώσεων που δουλεύω χρειάζονται jpg
β) Μα και εσύ κάνεις έλεγχο αν το πεδίο της βάσης έχει περιεχόμενα. Η εντολή αλλάζει μόνο :wink:
γ) Μιλάμε για δυναμικά sites! Γιατί να χρειάζεται η εικόνα που συσχετίζεται με μια εγγραφή να δοθεί ως εξωτερικό url? (απλά απορία μου, γιατί σαν σκέψη σου είναι σωστή). Τώρα για την επαναχρησιμοποίηση είναι πολύ σπάνια περίπτωση (πχ κάθε προϊόν έχει την δική του φώτο). Επίσης να τονίσω πως μιλάω για sites που θα διαχειρίζονται άσχετοι ιδιοκτήτες - πελάτες μας οπότε γλυτώνω "κουφά" filenames κλπ
δ) Αυτό να θεωρήσω πως το εντάσεις στο "εύρεση φωτογραφιών στο google" ε; Σωστή παρατήρηση!

Σε ευχαριστώ για το feedback
:D

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Αποθηκευση των προηγουμενων αρθρων σε μια database

Δημοσίευση από mrpc » 08 Οκτ 2008 22:28

Για το γ βασικά εμένα μου χρειάζεται συχνά. Π.χ. στο site μου δημοσιεύω δελτία τύπου από εταιρείες κινητής τηλεφωνίας που στις περισσότερες περιπτώσεις είναι κάποια προσφορά στις χρεώσεις. Δεν υπάρχει φωτογραφία προϊόντος, υπάρχει το logo της εταιρείας. Οπότε σε αυτή την περίπτωση με βολεύει η δυνατότητα επαναχρησιμοποίησης. Τώρα από εκεί και πέρα... ότι τον βολεύει τον καθένα.

Απάντηση

Επιστροφή στο “Γενικές ερωτήσεις κατασκευής ιστοσελίδων”

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

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