За последние 24 часа нас посетили 54192 программиста и 1724 робота. Сейчас ищут 837 программистов ...

Вывоз одного значения из множеств из 1 ячейки mysql

Тема в разделе "MySQL", создана пользователем ky3mu4u, 12 июл 2011.

  1. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    В базе в таблице есть ячейка с названием parms, в ней через enter занесены множества значений пример (данные регистрации):
    qst11=1
    qst12=1
    qst2=1
    qst2name=rtew
    qst2city=rew
    qst3=1
    qst3year=
    qst5=0
    forg=gjgjgj
    shorg=trewtr
    inn=5555555555
    kpp=666666666
    не могу вывести на сайт в списки определенную переменную, команда <?php echo $row->params; ?> выводит все переменные из заданной ячейки, команда типа <?php echo $row->params['qst11']; ?> ну к примеру чтобы вывести параметр qst11 выводит только первую букву первого значения!
    нуждаюсь в вашей помощи))
     
  2. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    есть у кого какие мысли как это сделать?
     
  3. Doglexx

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

    С нами с:
    20 май 2008
    Сообщения:
    25
    Симпатии:
    0
    Есть замечательное правило, которое гласит, что всякий раз, как хочется занести в поле массив - создавай отдельную таблицу для множества, а в поле вписывай id.
    Попытки пользовать поле как массив приводят к секасу с обработкой и выборкой данных. Вообще советую почитать про нормальные формы бд
    http://ru.wikipedia.org/wiki/Нормальная_форма

    p.s. Я предполагаю, что Вы не являетесь разработчиком БД, может есть смысл переписать немного структуру, если есть такая возможность.
    Либо пробовать парсить данные уже через PHP.
     
  4. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    нету смысла, мне на работе поручили разобраться, а до этого этими скриптами и базой занималась какаято фирма, тоесть они этот бред понаделали, и хрен там чего исправишь, там уже пол базы забито клиентами((((
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    покажите в каком конкретно виде лежат данные.
    не то, что вы привели.
     
  6. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    в ячейке mysql забито вместо одного параметра к примеру qst11=1 забито около 20 параметров через enter, естественно если делать стандартный запрос к базе на вывод информации из этой ячейки он выведет все что там написано вот пример:
    qst11=1
    qst12=1
    qst2=1
    qst2name=yyyy
    qst2city=yyyyy
    qst3=1
    qst3year=
    qst5=0
    forg=eeeee
    shorg=443434
    inn=1111111111
    kpp=666666666
    inv=yyy
    bank=yyy
    inv2=yyy
    bik=yyyy
    phoneoffice1=495
    phoneoffice2=6666666
    phone=84555435454
    city2=selo r
    egion2=04000000000
    dopinfoinf=jhj
    qst4serveqp=
    head_firstname=jhj
    head_lastname=jhfg
    head_patronymic=fhg
    contact_firstname=hjfgjh
    contact_lastname=ghj
    contact_patronymic=fghjgfhj
    вот из этого содержимого ячейки мне нужно вывести 3 параметра
    qst11=1
    qst12=1
    qst2city=yyyyy
    как сделать запрос так чтобы он выводил именно эти параметры
    там где вся эта бредовая информация заполняется в одну ячейку имеется такой код касающийся этого:

    $defvalue = $this->row['allparams']; это в самом начале формы!
    вот так заполняеться форма:
    <input type="checkbox" value="1" name="allparams[qst1]" id="allparamsqst1"<?php if($defvalue['qst1']):?> checked="checked"<?php endif; ?> /><br>
    <input type="checkbox" value="1" name="allparams[qst11]" id="allparamsqst11"<?php if($defvalue['qst11']):?> checked="checked"<?php endif; ?> /><strong>Газ</strong><br>
    <input type="checkbox" value="1" name="allparams[qst12]" id="allparamsqst12"<?php if($defvalue['qst12']):?> checked="checked"<?php endif; ?> /><strong>Дизель</strong></td>
    выводиться в просмотре таким же образом!
    а мне эти данные надо вывести в таблице на другой странице, я пробовал сделать также с помощью $defvalue но нечего не выводит, если в таблице напрямую обратиться к этой ячейки то он выводит весь список параметров!
     
  7. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    Можно пойти от другой стороны!
    из ячейки информация у нас выводиться списком
    qst11=1
    qst12=1
    qst2=1
    qst2name=yyyy
    qst2city=yyyyy
    qst3=1 и т.д.
    как с помощью php сделать так чтобы от отобразил из все этого к примеру значение 1 из параметра gst11= или отобразил yyyyy из параметра qst2city=
    ????
     
  8. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    ky3mu4u

    Если между строками есть символ перевода строки - по нему можно разбить строку и загнать в массив.
    Используется функция explode() http://www.php.net/manual/ru/function.explode.php
    В качестве разделителя укажешь свой разделитель.

    А вообще тому, кто так данные загоняет, я бы руки поотрывал. Можно же было например сериализованный массив хранить, ну или вообще как Doglexx сказал - в отдельной таблице
     
  9. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    да руки ябы им по отрывал)) но нечего не поделаешь это работа))
    Я разобрался сам с этим жестоким выводом!
    Вот код:
    <?php
    $user_params = new JParameter($row->params); - это он сюда загружает всю информацию из ячейки params
    ?>

    <?php echo $row->params = trim($user_params->get('qst2name', '')); ?> - выводит информацию с переменной qst2name

    Все оказалось просто, только не сталкивался некогда с таким выводом!
    Спасибо тем кто проявил участие!
     
  10. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    ky3mu4u

    Ну что говорить, чуваки не ищут легких путей))))

    Удачи в разработке.