Прехвърляне на масиви от файлове към база данни

C++ JAVA
User avatar
Ticketa
Турист
Турист
Posts: 571
Joined: Mon Feb 27, 2012 1:54 pm
Answers: 24
Location: in /root
Contact:

Re: Прехвърляне на масиви от файлове към база данни

Post by Ticketa » Fri Aug 21, 2020 6:29 pm

anonimen wrote:
Fri Aug 21, 2020 6:19 pm
Искаш изцяло да се откажеш от системата с файловете, заменяйки я с база от данни, или искаш да поддържаш и двете паралелно?
Изцяло да заменя файловете. Първия вариант.

User avatar
Ticketa
Турист
Турист
Posts: 571
Joined: Mon Feb 27, 2012 1:54 pm
Answers: 24
Location: in /root
Contact:

Re: Прехвърляне на масиви от файлове към база данни

Post by Ticketa » Sun Aug 23, 2020 9:42 am

Просто решение.

Code: Select all

<?php
class Lang {
	public $current;
	public $default = 'us';
	public $map = [
		'us' => 'us', //United States - English
		'gb' => 'gb', //United Kingdom - English
		'de' => 'de', //Deutsch
		'es' => 'es', //Español
		'it' => 'it', //Italiano
		'fr' => 'fr', //Français
	];
	public $data = [];
	
	private $dir;
	
	public function __construct() {
		$this->dir = ENGINE_DIR . '/data/lang/';
		$this->current = $this->default;
		
		if ( isset($_REQUEST['lang']) && in_array($_REQUEST['lang'], $this->map) ) {
			$this->set($_REQUEST['lang']);
		}
		// Determine the current language
		if ( isset($_COOKIE['lng']) && is_string($_COOKIE['lng']) && array_key_exists($_COOKIE['lng'], $this->map) ) {
			if ( file_exists($this->dir . $this->map[$_COOKIE['lng']] . '.php') ) {
				$this->current = $this->map[$_COOKIE['lng']];
			}
		} elseif ( isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ) {
			$lang = substr(strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']), 0, 2);
			if ( $lang && array_key_exists($lang, $this->map) ) {
				$this->current = $this->map[$lang];
			}
		}
	}
	public function get() {
		global $db;
        if ( file_exists($this->dir . $this->current . '.php') ) {
			$SArray = $db->query( "SELECT `pld_id`, `pld_key`, `pld_data` FROM `promo_lang_data` WHERE `lang_id` = '" . (string)$this->current . "';" );
			if(mysqli_num_rows($SArray) > 0) {
			    while ($obj = $SArray->fetch_object()) {
			        $rows[$obj->pld_key] = $obj->pld_data;
			    }
    			$this->data = $rows;
        		$this->merge();
        		return $this->data;
			} else {
                die('Language file not found, contact by administrator.');
            }
        } else {
            die('Language file not found, contact by administrator.');
        }
	}
	
	public function set($lang) {
		$expire = 365 * 86400 + time(); // 1 год
		$domain = str_replace(['http://', 'https://'], '', mb_strtolower($_SERVER['HTTP_HOST'], 'utf-8'));
		if ( substr( $domain, 0, 4 ) == 'www.' ) $domain = substr( $domain, 4 );
	
		setcookie( 'lng', $lang, $expire, '/', $domain, NULL, TRUE );
		$_COOKIE['lng'] = $lang;
	}
	
	private function merge() {
		global $db;
		if ( $this->current != $this->default ) {
		    if ( file_exists($this->dir . $this->default . '.php') ) {
    			$SArray = $db->query( "SELECT `pld_id`, `pld_key`, `pld_data` FROM `promo_lang_data` WHERE `lang_id` = '" . (string)$this->default . "';" );
    			if(mysqli_num_rows($SArray) > 0) {
    			    while ($obj = $SArray->fetch_object()) {
    			        $rows[$obj->pld_key] = $obj->pld_data;
    			    }
				    $this->data = array_merge($rows, $this->data);
    			} else {
                    die('Language file not found, contact by administrator.');
                }
			} else {
                die('Language file not found, contact by administrator.');
			}
			
		}
	}
}
Ако, някой може да препоръча някакви подобрение - отворен съм.

uphero
Потребител
Потребител
Posts: 773
Joined: Mon Feb 20, 2012 12:26 pm
Answers: 32
Location: Казанлък
Contact:

Re: Прехвърляне на масиви от файлове към база данни

Post by uphero » Sun Aug 23, 2020 9:47 am

Четеш папката с файловете, вземаш списъм с тях, отваряш ги един по един, четеш съдържанието и записваш в базата.
Не виждам какво ти е виновен форума ако не се справяш с такива лесни задачи

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 899
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 63

Re: Прехвърляне на масиви от файлове към база данни

Post by Revelation » Sun Aug 23, 2020 10:36 am

Аз не разбрах къде се запъна със задачката, за това и не съм отговарял. До колкото четох и сам се оправи.

Иначе не смятам, че е добра идея преводите да са ти в базата данни. За всяко нещо ще имаш разходка до базата данни специално да вземеш превод. Ако не замисляш да имплементираш някакъв вид кеширане в паметта, това решение е меко казано лошо.

User avatar
Ticketa
Турист
Турист
Posts: 571
Joined: Mon Feb 27, 2012 1:54 pm
Answers: 24
Location: in /root
Contact:

Re: Прехвърляне на масиви от файлове към база данни

Post by Ticketa » Sun Aug 23, 2020 5:47 pm

Реших , че може да стане "дискусия". Иначе, да. Кеширах нещата, добавил и други изгъзици и глезотии.

Post Reply