За последние 24 часа нас посетили 18547 программистов и 1633 робота. Сейчас ищут 2173 программиста ...

Как вставить массив в ячейку базы

Тема в разделе "MySQL", создана пользователем Sinsir, 11 апр 2010.

  1. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    Помогите глупому новичку как вставить массив данных в одну ячейку с возможностью добавления новых данных в последствиии. Вот приблизительно то что мне необходимо:
    есть список имен Андрей, Сергей, Владимир
    они должны хранитса в одной ячейке базы (например имена)
    но с возможностью потом добавлять или удалять какие-то имена.
    Это впринцыпе возможно или нет?
     
  2. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Вынести в отдельную таблицу и связать.
     
  3. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    не совсем удобно. если у меня соберетса 10 000 групп то в таком случае создастса 10 000 дополнительных таблиц . Я потом даже основные в этой куче ненайду, а доп базу создавать нельзя , нужно все в одной укладывать.
     
  4. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Таблица будет всего лишь одна.

    группа, имя
     
  5. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    чтото до меня никак недоходит.
    вот такая таблица ?
    -------------------------------------------
    -----------! имя
    группа --! Сергей, Андрей
    группа2--! Иван, федор
    -------------------------------------------
    но как же ее сделать?
     
  6. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    пока решил использовать функции serialize() unserialize()
     
  7. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    нет

    Код (Text):
    1. группа - Сергей
    2. группа - Андрей
    3. группа2 - Федор
    4. группа2 - Иван
     
  8. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    К сожлению так невыйдет, поскольку неизвестно количество групп и количество имен, точнее они всевремя изменяютса.
    Вобщем пока serialize наиболее подходит , только незнаю в каком формате получаютса данные, точнее в каком формате их нужно хранить в базе, толи в текстовом(text) толи в бинарном(binary)
     
  9. Sinsir

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

    С нами с:
    27 май 2009
    Сообщения:
    60
    Симпатии:
    0
    Вот по-моему тоже уперся в стену. Поясните плз мне глупому , если не сложно, почему это неработает:

    //выводим все значения массива на экран
    foreach ($unsw as $k => $val){
    $res1 = mysql_query ("SELECT id FROM users WHERE nikname='$val'",$db);
    $id1 = mysql_fetch_array ($res1);
    $idw = $id1['id'];
    echo "<br>id from base ".$idw;
    echo "<br><a href='user.php?id=$idw'>".$val."</a><br>";
    }

    где $unsw массив из 4 имен. Имена почему-то выводятса все а вот запрос проходит только для первого имени а на все остальные возвращаютса пустышки.
    может гдето надо закрывать соединение с базой а потом опять открывать?
     
  10. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    БД для того и сделаны, чтобы все время менялись данные.

    А выйдет или не выйдет - это вопрос рук мастера, который занимается этим вопросом.
     
  11. LokiFC

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

    С нами с:
    27 июн 2008
    Сообщения:
    72
    Симпатии:
    0
    Адрес:
    Default City
    Одно время я экспериментировал, а , наверное точнее сказать, извращался на эту тему :)
    У меня был сайтик, на котором был блог. Блог грохал целую таблицу в БД, соответственно под комментарии к сообщению блога уходила только одна ячейка :) Ну ниче так, почти без глюков все это работало... Меня конечно спасало то, что комментировали чрезвычайно мало и редко.
    Я придумал так, чтобы массив превращался с строку, которую потом снова можно было собрать в массив (с помощью explode). В общем, сделал две функции, которые на свой страх и риск выкладываю сюда:
    PHP:
    1. <?php
    2. //-------------Превращает массив в строку для БД
    3. function arr2db_encode($arr)
    4. {
    5. $i = 0;
    6. $db_viev = "";
    7. while ($i < count($arr))
    8.     {
    9.     $db_viev .= $arr[$i][0]."|".$arr[$i][1]."|".base64_encode($arr[$i][2])."#";
    10.     $i++;
    11.     }
    12. return $db_viev;
    13. }
    14. //-------------Превращает строку из БД обратно в массив
    15. function arr2db_decode($db_viev)
    16. {
    17. $arr = explode("#", $db_viev);
    18. $i=0;
    19. while ($i < (count($arr)-1))
    20.     {
    21.     $arr[$i] = explode("|", $arr[$i]);
    22.     $arr[$i][2] = base64_decode($arr[$i][2]);
    23.     $i++;
    24.     }
    25. array_pop($arr);
    26. return $arr;
    27. }
    28. ?>
    При этом входной массив примерно такой у меня был:
    PHP:
    1. <?php
    2. $comments = array(
    3. 0 => array("время по time();","id написавшего","Текст сообщения"),
    4. 1 => array("время по time();","id написавшего","Текст сообщения"),
    5. 2 => array("время по time();","id написавшего","Текст сообщения"),
    6. ..итд итп
    7. ?>
    Забавно, не правда ли? :)
    Мне например смешно это читать. А главное смешно понимать, что это все достаточно-таки неплохо работает :)