Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα. Θέλω να έχω κάποιες μεταβλητές (αρκετές) που θέλω να τρέχουν σε όλο το site μου (codeigniter). Δηλαδή μπορεί να χρειαστώ κάπου να κάνω echo $my_name. Θέλω κάπου να είναι δηλωμένο και να είναι προσβάσιμο από όλο το site (κατα προτίμηση σε ξεχωριστό αρχείο). Ωστε, αν αλλάζω πχ τιμή στο $my_name να αλλάζει σε ΟΛΟ το site.

Αυτό που έχω κάνει τώρα, είναι οτι έχω φτιάξει ενα πίνακα στην mysql που την λέω settings και μέσα έχω βάλει για παράδειγμα ένα column my_name, το οποίο το τροποποιώ frontend με μία φόρμα. Τα 2 αρνητικά που έχω είναι α) οτι συνεχώς προσθέτω στην βάση νέο column (πχ. $fpa) και μετά πρέπει να ενσωματώνω και ένα πεδίο input στην φόρμα των ρυθμίσεων για να αλλάζω. β) και σημαντικότερο είναι οτι όπου θέλω να χρησιμοποιώ το $my_name για παράδειγμα, θα πρέπει να κάνω ένα foreach για να το τραβήξω από την βάση για την συγκεκριμένη σελίδα.

Με λίγα λόγια θα προτιμούσα να έχω μια σελίδα πχ setings.php που θα τρέχει σε όλο το site και μέσα θα είναι του στυλ

$my_name = "Κώστας";

$fpa = "24%";

$my_phone = "3213231323";

κλπ

και αν χρειάζεται να αλλάξω κάποια από αυτές τις παραμέτρους, απλά θα κάνω edit το settings.php και θα αλλάζω τις τιμές.

Όποτε όπου χρειάζομαι να εμφανίσω για παράδειγμα το όνομα απλά να πατάω echo $my_name

γίνεται αυτό? 

Δημοσ.
14 ώρες πριν, Predatorkill είπε

Δεν εχω ιδεα απο codeigniter, μηπως θες κατι τετοιο: https://www.codeigniter.com/userguide2/libraries/sessions.html

Δεν νομιζω να κανει κατι τετοιο, θα το δω ομως.

13 ώρες πριν, XPHSTOS_ είπε

Env Vars ίσως να είναι αυτό ψάχνεις.
Δες εδώ: http://www.cramerz.com/php/php_env/

Απλά επειδή δεν ξέρω με σιγουριά να σου πω, μη σε πάρω στο λαιμό μου.
Μπορεί να λειτουργεί δηλαδή αλλά να μην είναι best practice.

Ισως αυτο χρειαζομαι. Θα το ψαξω το βραδυ

Δημοσ.
16 ώρες πριν, killer76 είπε

Αυτό που έχω κάνει τώρα, είναι οτι έχω φτιάξει ενα πίνακα στην mysql που την λέω settings και μέσα έχω βάλει για παράδειγμα ένα column my_name, το οποίο το τροποποιώ frontend με μία φόρμα. Τα 2 αρνητικά που έχω είναι α) οτι συνεχώς προσθέτω στην βάση νέο column (πχ. $fpa) και μετά πρέπει να ενσωματώνω και ένα πεδίο input στην φόρμα των ρυθμίσεων για να αλλάζω. β) και σημαντικότερο είναι οτι όπου θέλω να χρησιμοποιώ το $my_name για παράδειγμα, θα πρέπει να κάνω ένα foreach για να το τραβήξω από την βάση για την συγκεκριμένη σελίδα.

Γιατι column; Φταιχνεις ενα table με δυο column, 1 το name και 2 το value. To name το κανεις pk και unique ωστε να γινεται insert on duplicate key update. Φτιαχνεις και ενα model που θα εχει δυο function, get, set, για να εχεις κατι τετοιο

$this->settings->set('fpa','24');

echo $this->settings->get('fpa');

Δημοσ.
1 ώρα πριν, παπι είπε

Γιατι column; Φταιχνεις ενα table με δυο column, 1 το name και 2 το value. To name το κανεις pk και unique ωστε να γινεται insert on duplicate key update. Φτιαχνεις και ενα model που θα εχει δυο function, get, set, για να εχεις κατι τετοιο

$this->settings->set('fpa','24');

echo $this->settings->get('fpa');

Θα το ψαξω αυτο που μου λες, γιατι ειναι το πιο απλο, απλα μια γρηγορη ερωτηση, μπορω δηλαδη να κανω get το value ενος κλειδιου απο το πινακα απευθειας, χωρις foreach κλπ?  Αν δουλευει ετσι, μια χαρα...

Δημοσ. (επεξεργασμένο)

Προσπάθησα να κάνω όσο πιο απλοικό παράδειγμα γίνεται αλλά μάλλον το έθεσα λάθος. Να πω ακριβώς τι θέλω να κάνω.

Θέλω να φτιάξω ένα script (πελατολόγιο) το οποίο θέλω να μπορεί να το κατεβάσει κάποιος και να το χρησιμοποιήσει αν θέλει, ως open source. (πιο πολύ για να μάθω). Θέλω όμως να μπορεί να το κάνει ο καθένας στην γλώσσα του (to default θα ειναι στα αγγλικά). Όταν εννοώ μετάφραση εννοώ του site,template κλπ, όχι των καταχωρήσεων.

Αυτό που κάνω μέχρι τώρα, είναι να φτιάξω ένα πίνακα στην βάση language που μέσα έχω column πχ Name και σαν default εγγραφή το "Name", column "surname" με default  value "Surname"κλπ. Επίσης έχω φτιάξει μία σελίδα με φόρμα και με input για το κάθε πεδίο της βάσης, και value το εκάστοτε value της βάσης. Οπότε άν  κάποιος θέλει να κάνει το site πχ στα Ελληνικά, πάει στην μετάφραση frontend, πατάει στο input που γράφει Surname, το κάνει "Επώνυμο" και πατάει αποθήκευση. Οπότε τώρα όπου στο site καλώ από την βάση το πεδίο surname, εμφανίζει το κείμενο "Επώνυμο".

Αυτό όμως α) μου είναι χρονοβόρο γιατί σε κάθε λέξη που χρειάζεται να προσθέσω. Να προσθέσω column στην βάση, να βάλω default κείμενο πχ "View costumers", να το βάλω σαν input στην φόρμα της μετάφρασης, να φτιάξω στο php να αποθηκεύει την νέα τιμή στην βάση κλπ. και β) πάντα θα υπάρχει μία γλώσσα έτοιμη για χρήση.

=====================================================

Θα ήθελα όμως να το κάνω καλύτερα  (έτσι οπως το σκέφτομαι τώρα)....

Να φτιάξω έναν φάκελο languages, μέσα να έχω ένα default αρχείο  πχ. en_GB.php(?). Μέσα το αρχείο να είναι κάπως

$name = "name";

$surname = "Surname";

$phone = "Phone";

Αν θέλει κάποιος να το κάνει στην γλώσσα του θα κάνει ένα copy το αρχείο, θα το μετονομάσει πχ σε el_GR.php και θα αλλάξει μέσα τις τιμές. Δηλαδή,

$name = "Όνομα";

$surname = "Επώνυμο";

$phone = "Τηλέφωνο";

Οπότε μέσα στο template όπου θέλω να εμφανίζεται το $name, αν είναι στα αγγλικά το site θα εμφανίζεται το name, αν είναι στα Ελληνικά θα εμφανίζεταο το "Όνομα".

Μετά θα έχω ένα πεδίο στα settings της βάσης που θα επιλέγω πιο αρχείο θα τρέχει. Στα αγγλικά δηλαδή θα έχει για value το en_GB.php. Μέσα από τις ρυθμίσεις στο frontend σε ένα dropdown (τα λέω πολύ χοντρικά τώρα) θα σαρώνω  τι περιέχει ο φάκελος languages και θα μου εμφανίζει τις επιλογές. Δηλαδή στο παράδειγμα μου θα έχει δύο επιλογές en_GB και el_GR οπότε ο χρήστης θα επιλέγει σε ποιά γλώσσα θέλει να το χρησιμοποιήσει. Αν δηλαδή επιλέξει το el_GR στην βάση θα αποθηκευεται η τιμή το el_GR.php, που σημαίνει οτι θα τρέχουν οι παράμετροι που έχει το αρχείο el_GR.php

Μια λύση που σκέφτηκα είναι να φτιάξω το el_GR.php με μεταβλητές όπως τα παραπάνω παραδείγματα και να τρεχω με include το αρχείο στο header. Οπότε όλες οι μεταβλητές θα είναι δηλωμένες και όπου κάνω echo $phone θα εμφανίζεται "Τηλέφωνο". Επειδή όμως ΔΕΝ το έχω εχω δει πουθενά αυτό, αντιλαμβάνομαι οτι αν και δουλεύει, πρέπει να είναι λάθος τρόπος.

Πιστεύω οτι η λύση είναι στο αρχείο της γλώσσας, να κάνω κάπως define τις μεταβλητές ή κάπως σε array? Αυτό δεν ξέρω απλά μου είναι οικεία η εικόνα που έχω δει σε κάποια script παλιότερα (δεν θυμάμαι που ακριβώς για να ξαναδώ) που στην κάθε γλώσσα η σύνταξη μέσα ήταν κάπως έτσι

'Name' => 'Name,

'Surname' => 'Surname'

 κλπ.

Προφανώς array.

 

 

 

 

Επεξ/σία από killer76
Δημοσ.
3 ώρες πριν, killer76 είπε

Προσπάθησα να κάνω όσο πιο απλοικό παράδειγμα γίνεται αλλά μάλλον το έθεσα λάθος.

Αρκετα λαθος :P 

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...