За последние 24 часа нас посетили 63864 программиста и 1743 робота. Сейчас ищут 1608 программистов ...

Обновление полей в таблице

Тема в разделе "PHP для новичков", создана пользователем viphost, 3 июн 2012.

  1. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    Мужики помогите, голова что то совсем не варит, не могу написать простенький код по обновлению таблицы =(
    Нужно у каждой записи в таблице взять из поля адрес файла, затем создать его хешь и обновить у этой записи поле hash, скрипт на один раз, чтобы заполнить пустые поля.
    table
    id|img|hash
    Получил 50 записей и хешь файлов
    Код (Text):
    1. $sql = "SELECT * FROM  `table` ORDER BY id DESC limit 50";
    2.     $result = mysql_query($sql) or die(mysql_error() ."<br />". $sql);
    3.         while ($row = mysql_fetch_assoc($result)) {
    4.             $id = $row['id'];
    5.             $img = md5_file("http://site.ru/img/".$row['img']);
    6.         }
    И тут я завис
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    если сайт переедет - капец будет? =)
     
  3. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    та там ничего серьезного
    мне хешь нужен для информации
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    может просто ограничиться значением поля img?

    Добавлено спустя 2 минуты 51 секунду:
    а в чем затык? кстати не понял

    Добавлено спустя 33 секунды:
    апдейты не кучкуются вроде. фигачь по одному.

    Добавлено спустя 19 секунд:
    мультикуери попробуй.
     
  5. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    та вот я и сам не понял, как такую простую задачу выполнить не могу )))
    затык в том что я чет не могу пробежаться по полям и обновить у них поля
    По одному сложно, записей более 100
    Нужно массивом как то прогнать и обновить все поля
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в цикл засунь UPDATE `table` SET `hash` = '$img' WHERE `id` = $id
     
  7. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    в этом то и был затык, не получалось циклом пробежаться по записям )))
    вобще все сделал
    Спасибо igordata
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Если id - уникальный ключ, то можно проапдейтить сразу все записи одним REPLACE-запросом. Только там нужно значения для всех полей указывать, а то неуказанные он установит в дефолтное, прописанное при создании таблицы.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    покажи плс пример, а то я о таком даже не слышал
     
  10. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (Text):
    1. REPLACE INTO `table` (`id`, `img`, `hash`) VALUES (1, 'asdasd', 'sdfsdf'), (2, 'qweqwe', 'werwer'), (3, 'zxczxc', 'xcvxcv'), ...;
     
  11. viphost

    viphost Активный пользователь

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    опять двадцать пять, что то у меня сегодня с циклами беда какая то
    вобщем нужно сделать тоже самое, только для другого поля, для поля color, определить цвет картинки и записать его в поле
    table
    id|img|color
    Пишу
    Код (Text):
    1. $sql = "SELECT * FROM  `table`";
    2.     $res = mysql_query($sql) or die(mysql_error() ."<br />". $sql);
    3.    
    4.     if (mysql_num_rows($res) > 0) {
    5.              while($row = mysql_fetch_array($res)) {
    6.                 $result[$row['id']] = $row;  
    7.             }
    8.           }
    9.     $img = new GeneratorImageColorPalette();
    10.     foreach ($result as $keys => $val) {
    11.             $id = $val['id']; // айди
    12.             $imgc = "http://site.ru/img/".$val['img']; // картинка
    13.    
    14.  
    15.            
    16.             $files = $img->getImageColor($imgc, 10, 5 ); //получаем цвет
    17.             $max = 1;
    18.            
    19.            
    20.             foreach($files as $key => $value){
    21.                  $color .= $key.",";
    22.              }
    23.             $colors = explode(",", $color);
    24.             // 6 цветов
    25.             echo $colors = $colors['0'] . "," . $colors['1'] . "," . $colors['2'] . "," . $colors['3'] . "," . $colors['4'] . "," . $colors['5']. "<br />";
    26.            
    27.     }
    Вижу следующее
    т.е. перезаписывается цикл, должно быть 4 разных значения(строчки)