Как выбрать из одного поля бд(mysql) записи,обработать их и записать в другое поле?

Тема в разделе "Как сделать...", создана пользователем гипноЖаба, 29 фев 2012.

  1. гипноЖаба

    гипноЖаба Постоялец

    Регистр.:
    22 апр 2009
    Сообщения:
    70
    Симпатии:
    19
    Подскажите,есть таблица categories, нужно выбрать из поля names запись транслитерировать её и записать ее в поле ink_rewrite этой же таблицы.
    вот код,который у меня не получается,просто не добавляются записи:
    PHP:
    $host='localhost';
    $database='truba';
    $user='delo_truba';
    $pswd='123456789';
     
    function 
    ru2Lat($string)
    {
    $rus = array('ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я');
    $lat = array('yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA');
    $string str_replace($rus,$lat,$string);
    $string strtr($string,
        
    "АБВГДЕЗИЙКЛМНОПРСТУФХЪЫЬЭабвгдезийклмнопрстуфхъыьэ",
        
    "ABVGDEZIJKLMNOPRSTUFH_I_Eabvgdezijklmnoprstufh_i_e");
     
    return(
    $string);
    }
     
    $res mysql_query('SELECT * FROM categories');
    while(
    $row mysql_fetch_array($res)) {
        
    $name ru2Lat($row[' names ']);
        
    mysql_query('UPDATE  categories  SET link_rewrite = \''.$name.'\' WHERE id = '.$row['`id_category`']);
    }
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    как минимум, запрос должен производиться с соблюдением синтаксиса:
    PHP:
    $name ru2Lat($row['names']); //пробелов внутри квадратных скобок не должно быть! Иначе они учитываются как символ в названии поля!
      
    mysql_query('UPDATE ps_category_lang SET `link_rewrite` = '".$name."' WHERE `id` = '".$row['id_category']."');
    кроме того инфу вы берете в одной таблице: categories , а изменить пытаетесь в другой: ps_category_lang
     
  3. гипноЖаба

    гипноЖаба Постоялец

    Регистр.:
    22 апр 2009
    Сообщения:
    70
    Симпатии:
    19
    исправил название,но никак не могу понять ошибку,понимаю,что ошибка скорее всего в экранировании символов,логика сама правильная
     
  4. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Если сервер хоть как то ругается на ваш скрипт, то выложите текст ошибки...
     
  5. гипноЖаба

    гипноЖаба Постоялец

    Регистр.:
    22 апр 2009
    Сообщения:
    70
    Симпатии:
    19
    parse error и на строке
    PHP:
      mysql_query('UPDATE  categories SET `link_rewrite` = '".$name."' WHERE `id` = '".$row['id_category']."');
     
  6. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    попробуйте так:
    PHP:
     mysql_query("UPDATE  categories SET `link_rewrite` = '".$name."' WHERE `id` = '".$row['id_category']."'");
     
  7. гипноЖаба

    гипноЖаба Постоялец

    Регистр.:
    22 апр 2009
    Сообщения:
    70
    Симпатии:
    19
    ошибка была в условии
    PHP:
    WHERE `id` = '".$row['id_category']
    надо было изменить id на id_category

    пыс.пыс.
    теперь когда конвертирует из русского на латиницу - записи в неправильной кодировке и отображаются в как знаки вопросов,как победить кодировку?
     
  8. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    UPDATE categories
    SET `link_rewrite` = REPLACE( REPLACE( REPLACE( `names` , 'ж' "zh") , ''я'', "ya") , ''ё'', "yo");
    ну и так далее в таком духе
     
  9. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    724
    Симпатии:
    314
    iconv()
     
  10. гипноЖаба

    гипноЖаба Постоялец

    Регистр.:
    22 апр 2009
    Сообщения:
    70
    Симпатии:
    19
    и зачем это?