За последние 24 часа нас посетили 62018 программистов и 1677 роботов. Сейчас ищут 954 программиста ...

Как правильно вывести значения

Тема в разделе "PHP для новичков", создана пользователем Lexxbry, 19 авг 2018.

  1. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    Добрый вечер.
    Есть таблица items
    В ней поля id и name
    Есть таблица fields
    В ней поля id, items_id и value
    Items_id соответствует полю id из первой таблицы
    В поле value необходимые значения
    Схематично:
    Items_id: 114
    Value: test
    Items_id: 114
    Value: test1
    Тоесть в таблице несколько параметров для каждого items_id но у каждого свой id

    В файле php имеем переменную
    $id = id из первой таблицы

    Как вывести данные из полей value второй таблицы на основе id первой?
    Заранее спасибо
     
  2. AlexandrS

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

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
  3. ArtemPetesburg

    ArtemPetesburg Новичок

    С нами с:
    11 май 2018
    Сообщения:
    48
    Симпатии:
    2
    Адрес:
    Санкт-Петербург
    сравнить по номерам что совпадает и если совпадает и во второй таблице то вывести из нее
     
  4. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    в общем таблицы слил в переменную

    $val=mysqli_query("SELECT * FROM 'pkco4_djcf_items', 'pkco4_djcf_fields_values' WHERE 'pkco4_djcf_items.id' = 'pkco4_djcf_fields_values.item_id'");

    а как теперь вывести значения которые содержаться в поле pkco4_djcf_fields_values.value
    повторюсь
    для pkco4_djcf_items.id (допустим 114)
    есть несколько pkco4_djcf_fields_values.item_id(опять же 114) и для каждого свой pkco4_djcf_fields_values.value

    надо вывести все эти pkco4_djcf_fields_values.value в одну строку
     
  5. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    руки за такое оторвать и пришить туда сам знаешь куда :(
    если кроме id которое заранее известно никакие данные из первой таблицы выводить не надо, то никакие соединения (джоины) не нужны
    Код (Text):
    1. "SELECT * FROM `pkco4_djcf_fields_values` WHERE `item_id` = 114"
    названия таблиц вырви глаз...
    --- Добавлено ---
    если нужны данные из первой таблицы, то
    Код (Text):
    1. "SELECT i.*, v.* FROM
    2.                    `pkco4_djcf_items` i
    3.                           RIGHT JOIN `pkco4_djcf_fields_values` v
    4.                     ON i.id = v.item_id
    5.                WHERE v.item_id = 114"
     
    #5 Valick, 19 авг 2018
    Последнее редактирование: 19 авг 2018
  6. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    если бы так просто
    items_id меняется(если бы было постоянно 114, то и проблем бы не было)
    я выше писал что items_id из второй таблицы соответствует id из первой(для каждого объекта этот id свой)
    и у каждого объекта несколько value для одного и того же item_id

    таблица items
    id name
    114 name1
    115 name2
    116 name3

    таблица items_values

    id items_id value
    1 114 7
    2 114 2
    3 114 3
    4 115 45
    5 115 21
    и тд

    запросом выше имеем таблицу

    id name id items_id value
    114 name 1 114 7
    114 name 2 114 2
    114 name 3 114 3

    вот мне надо в echo вытащить
    содержимое value на основе id( в данном примере 114) который совпадает с items_id
    как видим в столбце value несколько значений для одного items_id
    вот их и надо вывести в строку
     
  7. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    что мешает их вывести в строку?
    --- Добавлено ---
    и что значит "если бы постоянно было 114"? 114 надо вывести или нет? если с каждым запросом id меняется, то используй в запросе переменную, если нужны несколько значений, то используй конструкцию IN , если нужны все значения, просто убери условие WHERE v.item_id = 114
     
  8. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    не могу понять как вообще вывести значения из value(второй таблицы) на основе id из первой таблицы(учитывая что этот id плавающий, т.е для каждого объекта он свой)
    в файле переменные
    $Itemid = JRequest::getVar('Itemid', 0,'', 'int');
    $item = $this->item;

    это все из первой таблице
    id выводится
    echo '<div class="title_top info"><h2>'.$item->id.'</h2>';

    вот вместо $item->id
    надо вывести значение из value второй таблицы
     
  9. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    совсем запутался
    определил переменные
    $item = $this->item;
    $valid = $item->id; (эта переменная цепляет id из первой таблицы в соответствии с документом)
    <? php
    $test = mysqli_query("SELECT * FROM 'pkco4_djcf_fields_values' WHERE 'item_id'= '$valid' ");
    $val1 = mysqli_fetch_array($test);
    echo '<div class="title_top info"><h2>'.$val1['value'].'</h2>';
    тут еще куча кода ?>
    увы ничего не выводится
     
  10. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    в итоге с подсказами и помощью код приведен к такому виду
    PHP:
    1. $mysqli = new mysqli('localhost', 'user', 'pass', 'base');
    2. if ($mysqli->connect_error) {
    3.     die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
    4. }
    5. $sql = "SELECT * FROM `pkco4_djcf_fields_values` WHERE `item_id`= '". $mysqli->real_escape_string($valid) ."' ";
    6. $result = $mysqli->query($sql);
    7. $val1 = mysqli_fetch_assoc($result);
    8. echo '<div class="title_top info"><h2>'.$val1['value'].'</h2>';
    так как в таблице `pkco4_djcf_fields_values` у поля `item_id` несколько значений value
    то выводит знаки вопроса
    если значение одно то выводит его как надо

    подскажите как вывести несколько значений в строку