ФорумПрограммированиеPHP для идиотов → Помогите с implode() и explode()

Помогите с implode() и explode()

  • mff

    Сообщения: 36 Репутация: N Группа: Кто попало

    Spritz 27 января 2011 г. 17:53

    Подскажите как сделать на php следующее:
    Когда пользователь выбрал себе тв каналы для избранного, нужно чтобы скрипт прописал в табличку так: 1,2,3,4,5
    Если там уже было например: 1,3 то что бы дописал: ,2,4,5 и получилось бы: 1,3,2,4,5
    Когда пользователь удалил ненужные ему тв каналы, например: 1,5 то в базе осталось бы: 2,3,4

    Я наговнокодил немного, но есть проблемы с лишними запятыми, а иногда при удалении одного канала - удаляются все каналы :(

    	if($_GET['mode'] == "add_ch" ){
    $ch_string='';
    $result_ch_n = mysql_query("SELECT * FROM `users` WHERE `username`='".$_COOKIE["username"]."' AND `password`='".$_COOKIE["password"]."'");
    if(mysql_num_rows($result_ch_n)){
    $num_ch_n = mysql_fetch_assoc($result_ch_n);
    if($num_ch_n["channels"]!=""){
    $ch_string0 = ",";
    }
    }

    $ch_string .= implode(",", $_POST["ch_id"]);
    $ch_string2=$num_ch_n["ch_string"];
    $out_str = $ch_string2.$ch_string;
    $out_array = explode(",",$out_str);
    $out_array = array_unique($out_array);
    $ch_string2 = implode(",",$out_array);
    if($ch_string2!=""){
    if(mysql_query("UPDATE `users` SET `channels`=concat(channels, '".$ch_string0.$ch_string2."') WHERE `username`='".$_COOKIE["username"]."' AND `password`='".$_COOKIE["password"]."'")){
    $report = 'Выбранные вами трансляции добавлены в избранное.';
    }
    }
    else{
    $report = 'Выбранные вами трансляции уже имеются в избранном.';
    }
    }


    if($_GET['mode'] == "del_ch" ){
    $result_ch_n = mysql_query("SELECT * FROM `users` WHERE `username`='".$_COOKIE["username"]."' AND `password`='".$_COOKIE["password"]."'");
    if(mysql_num_rows($result_ch_n)){
    $num_ch_n = mysql_fetch_assoc($result_ch_n);
    if($num_ch_n["channels"]!=""){
    $str = $num_ch_n["channels"];
    $arr = $_POST["ch_id"];
    $str = implode(',',array_diff(explode(',',$str),$arr));
    if(mysql_query("UPDATE `users` SET `channels`='".$str."' WHERE `username`='".$_COOKIE["username"]."' AND `password`='".$_COOKIE["password"]."'")){
    $report = 'Выбранные вами трансляции удалены из избранного.';
    }
    else{
    $report = 'Выбранные вами трансляции не удалены из избранного.';
    }
    }
    }

    В общем говоря подглючивает иногда говнокодец мой. За помощь готов заплатить немного wmz! Заранее спасибо!
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 27 января 2011 г. 18:16, спустя 23 минуты 13 секунд

    говнокодец

    не то слово…
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 27 января 2011 г. 19:09, спустя 52 минуты 44 секунды

    преобразовуй новые данные и те которые текущие (которые в базе) в массивы.
    потом делай array_diff()
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 27 января 2011 г. 19:14, спустя 5 минут 43 секунды


    говнокодец

    не то слово…


    это даже не читабельно
  • mff

    Сообщения: 36 Репутация: N Группа: Кто попало

    Spritz 27 января 2011 г. 20:02, спустя 47 минут 39 секунд

    не то слово…
    Согласен :(
    это даже не читабельно
    есть такое дело :(
    в массивы
    не селен в массивах :(
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 27 января 2011 г. 20:03, спустя 51 секунду


    в массивы
    не селен в массивах :(
    это печально
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 27 января 2011 г. 20:47, спустя 43 минуты 37 секунд

    %username%!
    just use this functions:

    explode
    trim
    array_unique
    sort
    implode

    you're welcome!
    не всё полезно, что в swap полезло
  • mff

    Сообщения: 36 Репутация: N Группа: Кто попало

    Spritz 27 января 2011 г. 21:19, спустя 32 минуты 28 секунд

    это печально
    согласен :(
    sort
    А sort для чего использовать в моём случае?
    you're welcome!
    :)
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 27 января 2011 г. 21:25, спустя 6 минут 5 секунд

    А sort для чего использовать в моём случае?

    чтобы отсортировать каналы если надо
    не всё полезно, что в swap полезло
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 28 января 2011 г. 0:42, спустя 3 часа 16 минут 39 секунд

    а серилизовать данные - никак?
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 28 января 2011 г. 1:03, спустя 21 минуту 16 секунд

    Faster, стерилизовать ты хотел сказать?
    не всё полезно, что в swap полезло
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 28 января 2011 г. 10:05, спустя 9 часов 2 минуты 1 секунду

    А разве когда пользователю предлагают в очередной раз выбрать каналы у него не отмечены те что он уже выбрал? Что-то типа checkbox. ИМХО так проще и правильнее. И потом все данные собираешь и просто перезаписываешь в базе. Куда проще что-то там соединять и разъединять.
    from TRIAL with LOVE
  • mff

    Сообщения: 36 Репутация: N Группа: Кто попало

    Spritz 28 января 2011 г. 13:20, спустя 3 часа 14 минут 47 секунд

    TRIAL, да, но. Напротив каждого канала есть галочка.
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 28 января 2011 г. 13:38, спустя 18 минут 37 секунд

    Ну естественно есть, ранее выбранные уже отмечены и ты выбираешь новые или отменяешь старые. в итоге конечный массив данных записываешь в базу.
    from TRIAL with LOVE
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 28 января 2011 г. 14:06, спустя 28 минут 4 секунды

    ТС почитай про serialize / unserialize

Пожалуйста, авторизуйтесь, чтобы написать комментарий!