Есть задача в таблице options взять поле name сделать транслитерацию и записать в поле url в этой же таблице
Создал файл, подтянул данные с таблицы options
в переменной данные есть.
require_once('api/buyers.php');
$buyers = new Buyers();
$buyers->db->query("SELECT id, value FROM options");
foreach($buyers->db->results() as $o){
print_r($o);
$buyers->features->update_option($o->id,array('url' => $buyers->features->translit($f->value)));
}
print_r('<br /><br />Свойства транслитерированы');
дальше через функцию для этой таблицы update_option обновляю, в верхнем коде обращаюсь к ней.
public function update_option($option)
{
if(!empty($option->value))
{
//проверяем есть ли такое значение в базе
$query = $this->db->placehold("SELECT id FROM options WHERE value=? AND product_id=? AND feature_id=?", trim($option->value), intval($option->product_id), intval($option->feature_id));
$this->db->query($query);
//если нет то добавляем
if(!$this->db->result('id'))
{
$query = $this->db->placehold("INSERT INTO options SET ?%", $option);
}
}
//else
//$query = $this->db->placehold("DELETE FROM options WHERE feature_id=? AND product_id=?", intval($option->feature_id), intval($option->product_id));
return $this->db->query($query);
}
ну и функцию транслита
public function translit($text){
$ru = explode('-', "А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я");
$en = explode('-', "A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch---Y-y---E-e-YU-yu-YA-ya");
$res = str_replace($ru, $en, $text);
$res = preg_replace("/[\s-_]+/ui", '', $res);
$res = preg_replace('/[^\p{L}\p{Nd}\d-]/ui', '', $res);
$res = strtolower($res);
return $res;
}
Но в итоге поле url в таблице options не заполняется.