За последние 24 часа нас посетил 17601 программист и 1720 роботов. Сейчас ищут 1863 программиста ...

Все как всегда

Тема в разделе "PHP для новичков", создана пользователем ZlobnyKolob, 25 окт 2016.

Метки:
  1. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Яж написал в начале кусок говнокода это ))) А правильное решение вам выше дали
     
  2. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Лучше подскажите мне правильный вывод из вложенных массиов(по Вашему мнению)
    Итог у меня таков:
    Массив
    Завод1 (массив сотрудников)
    Завод2 (массив сотрудников)
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вложенный форыч
    т.е. форыч в форыче. Форыч, а внутри него ещё форыч.
     
  4. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    понял, попробую вечером)) надеюсь будет работать))
     
  5. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Помоги решить задачу, если мне надо характеристики распихать по виду и вывести на экран

    Примерно:
    Экран
    1. Тип экрана
    2. Матрица
    Память и процессор:
    1. Количество ядер процессора

    И т.д.

    Поля, которые я получаю type(вид), characteristic (характеристики), value(значение)
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    А ту первую задачу ты решил?
    Тут надо начинать с модели базы данных, а не с кода.
     
  7. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Ну вот я и говорю, таблица "характеристики" и в ней поля
    "Вид характеристики"
    "Характеристика"
    "Значения"
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    @ZlobnyKolob Попробуй представить себе как это всё будет работать и написать об этом сообщение. Без кода, без программирования. Просто алгоритм.

    Вот, например, первая твоя задача.

    Создаем две таблицы. "Заводы" и "Сотрудники"

    1. | id_завода (PK) | название_завода |
    2. | id_сотрудника (PK) | ФИО_сотрудника | id_завода (FK) |

    Теперь мы можем запросить всех сотрудников нужного завода.

    Попробуй что-то подобное представить для второй задачи.
     
  9. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Есть таблица "Характеристики телефонов"
    Поля данной таблицы:
    Идентификатор телефона - число
    Вид характеристики - Экран, Память и процессор, Общие характеристики
    Характеристика - Диагональ, Количество процессоров
    Значение - 4.7", 2

    Сама задача: я запросом из базы достаю все характеристики определенного идентификатора продукта, создаю его массив (mysql_fetch_array) и мне нужно его сделать такого типа:
    Экран: - вид характеристик
    все характеристики этого вида
    Память и процессор - вид характеристик
    все характеристики этого вида

    и т.д., думаю так будет понятно описание задачи, мне хотяб примерчик реализации и я соображу как это дальше все происходит ,а так чет туплю . сорян
     
  10. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    @ZlobnyKolob это реальный проект или учебный полигон?
    Если реальный проект, ту ИМХО тут стоит подумать о более сложной БД.
    Вот например:

    Сегодня ты торгуешь телефонами и только ими. Ты создаешь под них базу данных и всё вроде как работает. Завтра ты вдруг решил торговать еще и мониторами. А у них другие характеристики и нужно создавать новую таблицу под них. Понимаешь о чем я?

    Речь о универсальности. Если ты сам разработчик, то ты, в теории, можешь работать с таким подходом.
    А если сайтом будет пользоваться обычный Алексей Васильевич, как чаще всего и бывает?
    БД должна быть устроенна так, чтобы можно было торговать чем угодно. По крайней мере к этому нужно стремиться.
     
  11. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Это реальный проект, просто тут ситуация такая, что я его пишу исключительно под телефоны на все времена, насчет универсальности я согласен, но я так скажу, ресурс заточен исключительно под продукцию apple, так что))

    цикл {
    $arr[$row['ВидХарактеристики']][$row['id']]=$row;
    }

    Вот допустим такой обработчик, я понимаю, что он разбивает один массив на несколько по свойству "ВидХарактеристики"
     
    #36 ZlobnyKolob, 7 фев 2017
    Последнее редактирование: 7 фев 2017
  12. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    т е ты абсолютно на 100% уверен, что будешь торговать айфонами и айпадами и до макбуков дело никогда не дойдет :)
     
  13. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    дойдет, но есть отдельная таблица "продукция", где у каждого мака будет свой ИД

    Мне самое главное понять, как сделать многомерный массив из полученной информации и правильно его вывести(самое главное вывести))
     
  14. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Может быть это у меня в голове всё так сложно, а гениальное то всё просто. Т е чем гениальнее тем проще и чем проще тем гениальнее.
    Хочешь одну таблицу - вот тебе одна таблица.

    | id_продукта | наименование | тип экрана | разрешение экрана | процессор | и | так | херачишь | все | характеристики |
     
  15. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Ну нет же, у меня таблиц несколько и одна из них характеристики с полями
    ИД
    Вид характеристики
    Характеристика
    Значение

    Записи будут выглядеть примерно так
    1 | Экран | Диагональ | 4"7
    1 | Процессор и память | Количество процессоров | 2
    2 | Экран | Диагональ | 9"3

    и т.д.

    А вывести мне надо вот так:
    Экран:
    Все характеристики
    Процессор и память:
    Все характеристики

    Теперь понятна моя гениальность ?)
     
  16. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    т. е. ты с начала создаешь бд, а только потом думаешь как теперь с ней работать?
    Ты должен до создания БД продумать её и на момент создания уже знать как с ней работать.
    Я хз как с твоей БД работать)) т е можно конечно подумать, но лучше сейчас всё переделать пока ты туда не нахерачил 100500 товаров.
     
  17. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    у тебя нет примеры вывода двумерного массива ?
     
  18. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @ZlobnyKolob нужно выбрать все характеристики с сортировкой по виду
    Код (Text):
    1. SELECT * FROM `attributes` ORDER BY `type`
    type - вид
    attr - характеристика
    value - значение
    когда все строки находятся в переменной $rows:
    PHP:
    1.     $currentType = $rows[0]['type'];
    2.     echo "<h1>$currentType</h1>\r\n<ul>\r\n";
    3.     foreach ($rows as $row) {
    4.       if ($currentType != $row['type']) {
    5.         $currentType = $row['type'];
    6.         echo "</ul>\r\n<h1>$currentType</h1>\r\n<ul>\r\n";
    7.       }
    8.       echo "<li>", $row['attr'], ": ", $row['value'], "</li>\r\n";
    9.     }
    10.     echo "</ul>\r\n";
     
    TeslaFeo нравится это.
  19. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    опять полон форум велосипедов.

    Сие называется "Entity–attribute–value model", гуглить по ключевому слову "EAV".

    Минусы:
    1. Мы шлем лесом все плюшки которые нам дает БД
    2. Поиск по такой свалке тоже не будет радовать, если товаров много

    Плюсы:
    1. Универсально, расширяемо под любой тип товара и характеристики
    2. Не надо думать, не надо гадать, не надо бояццо.

    Альтернатива - nosql, либо скрещенный уж с ежом, типа sqldb + какой-нибудь elasticsearch для поиска, выборок и прочего. При правильном приготовлении, ака синхронизация, заранее продуманные соглашения и структура хранилища - мастхэв и минимум геморроя. При корявом же вас ждет скорое посыпание головы пеплом с последующим ударом ей же об стену )
     
    #44 romach, 7 фев 2017
    Последнее редактирование: 7 фев 2017
  20. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    PHP:
    1. array(3) { ["Общий блок"]=> array(1) { [4]=> array(10) { [0]=> string(1) "4" ["id"]=> string(1) "4" [1]=> string(1) "1" ["id_product"]=> string(1) "1" [2]=> string(45) "Тестовая характеристика" ["characteristic"]=> string(45) "Тестовая характеристика" [3]=> string(33) "Значение тестовое" ["value"]=> string(33) "Значение тестовое" [4]=> string(19) "Общий блок" ["type"]=> string(19) "Общий блок" } } ["Память и процессор"]=> array(1) { [2]=> array(10) { [0]=> string(1) "2" ["id"]=> string(1) "2" [1]=> string(1) "1" ["id_product"]=> string(1) "1" [2]=> string(43) "Количество процессоров" ["characteristic"]=> string(43) "Количество процессоров" [3]=> string(1) "2" ["value"]=> string(1) "2" [4]=> string(34) "Память и процессор" ["type"]=> string(34) "Память и процессор" } } ["Экран"]=> array(2) { [1]=> array(10) { [0]=> string(1) "1" ["id"]=> string(1) "1" [1]=> string(1) "1" ["id_product"]=> string(1) "1" [2]=> string(18) "Диагональ" ["characteristic"]=> string(18) "Диагональ" [3]=> string(4) "4.7"" ["value"]=> string(4) "4.7"" [4]=> string(10) "Экран" ["type"]=> string(10) "Экран" } [3]=> array(10) { [0]=> string(1) "3" ["id"]=> string(1) "3" [1]=> string(1) "1" ["id_product"]=> string(1) "1" [2]=> string(20) "Разрешение" ["characteristic"]=> string(20) "Разрешение" [3]=> string(10) "1280х1024" ["value"]=> string(10) "1280х1024" [4]=> string(10) "Экран" ["type"]=> string(10) "Экран" } } }
    Слиял я информацию, как теперь мне её вывести в виде
    Общий блок:
    Характеристики
    Память и процессор:
    Характеристики
    Экран
    Характеристики

    За раннее спасибо !
     
  21. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @ZlobnyKolob мое сообщение написано невидимыми чернилами?
     
  22. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Спасибо большое, я тут немного изменил Ваш код и вот, что получилось
    PHP:
    1.            
    2.     $currentType = $array_charac['type'];
    3.    
    4.     do {
    5.             if ($CurrentType != $array_charac['type'])
    6.             {
    7.                 $CurrentType = $array_charac['type'];
    8.                 echo "<h1>" . $CurrentType . "</h1>";
    9.             }
    10.             echo "<li>" . $array_charac['characteristic'] ." : " . $array_charac['value'] . "</li>";
    11.            
    12.     } while ($array_charac = mysql_fetch_array($query_charac));
    А результат мне был необходим вот такой:
    [​IMG]

    Всем большое спасибо !
     
    [vs] и TeslaFeo нравится это.
  23. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Добрый вечер !

    Чтоб не плодить темы, напишу в этой, может кто поможет

    Есть кнопочки radio

    <input type='radio' name='Зеленый' value='Зеленый'/>Зеленый цвет

    По исполнению кода - это выглядит так:
    [​IMG]

    как вместо точки сделать допустим квадрат с выбранным бэкграундом или рисунком, как это делает вообще, гугли и нагуглил только изменение списка,

    Спасибо)
     
  24. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Почитай вот это.
    Смысл в том, чтобы спрятать сам радио переключатель и задать стили для его label.
    Можешь сам это сделать.

    Сами радио переключатели и чекбоксы не стилизуются.

    Ждем css4 :cool:
     
    mahmuzar нравится это.
  25. ZlobnyKolob

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

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Понял, ожидаем чуда, как css 4 спасет css3 =)