|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 14
|
||||||
Выборка из таблицы со вставками фото при изменении данных ячейки15.02.2020, 22:30. Показов 1604. Ответов 12
Метки выборка уникальных значений (Все метки)
Добрый вечер.
Такая затея: 1. Есть таблица в MySQL. ID MALE AGE 0 --- START--- 0 лет 1 --- BOY --- 10 лет 2 --- BOY --- 15 лет 3 --- GIRL --- 10 лет 4 --- GIRL --- 5 лет 5 --- Animal --- 100 лет 6 --- Animal --- 50 лет 2. Есть фотографии: BOY.png GIRL.png Animal.png Хочется: Одной выборкой, сделать так, чтобы выводились данные таблицы, но: при каждой смене значения ячейки "MALE" - выводилось одно фото этой группы и далее продолжадась выборка. вот так: ФОТО МАЛЬЧИКА (src=/'.$male.'>) (по факту: BOY.png) 1 BOY 10 лет 2 BOY 15 лет ФОТО ДЕВОЧКИ (src=/'.$male.'>) (по факту: GIRL.png) 3 --- GIRL --- 10 лет 4 --- GIRL --- 5 лет ФОТО ЖИВОТНОЕ (src=/'.$male.'>) (по факту: Animal.png) 5 --- Animal --- 100 лет 6 --- Animal --- 50 лет Поятно, что можно просто прописывать вручную все выборки и вручную вставлять картинки. Но, есть подозрение что можно сделать все автоматически и более элегантно. Вот выборка обычная.
0
|
||||||
| 15.02.2020, 22:30 | |
|
Ответы с готовыми решениями:
12
Google Таблицы. Как при изменении ячейки в определенном диапазоне выполнить действие?
|
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
|||||||||||
| 15.02.2020, 22:57 | |||||||||||
|
Povaliha,
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 14
|
||
| 15.02.2020, 23:11 [ТС] | ||
|
Спасибо.
Но, я могу эти src прописать в самой таблице. Добавить новый столбец, например "SRC" и в нем прописать в каждой строчке, пусть к картинке. ID MALE AGE SRC 0 --- START--- 0 лет --- 0.png 1 --- BOY --- 10 лет --- BOY.png 2 --- BOY --- 15 лет --- BOY.png 3 --- GIRL --- 10 лет --- GIRL.png 4 --- GIRL --- 5 лет --- GIRL.png 5 --- Animal --- 100 лет --- Animal.png 6 --- Animal --- 50 лет --- Animal.png Это не упростит код? Или это ничего не дает нам в плане простоты выборки и все равно нужно будет применять public function getPhotoSrc()???
0
|
||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
|
| 15.02.2020, 23:23 | |
|
Povaliha, Я так понимаю что BOY GIRL Alimal - это некие устойчивые значения. Поэтому я на автомате сделал константы, потому что теоретически их можно хранить в базе данных типе integer, а в коде использовать константы. + при помощи констант вы видите все возможные варианты этих значений.
Что касается картинки, по факту у вас есть жесткая зависимость картинки от типа, набор картинок уже есть и он известен. Если в какой-то момент нужно будет поменять картинку, или логику выбора картинки. То это проще будет сделать изменив метод, не делая изменений в БД.
1
|
|
|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 14
|
|
| 15.02.2020, 23:46 [ТС] | |
|
sad67man, спасибо.
1. Картинки лежат на сервере, не хотелось бы их записывать в базу. Есть простая железная связь: ИМЯ КАРТНИКИ.png - это ЗНАЧЕНИЕ в столбце MALE. Ну т.е. BOY = boy.png Girl = girl.png KvaziDiffuzor = kvaziDiffuzor.png Или можно добавить столбец в базу SRC, в котором прописать эти имена. (как я писал выше). 2. Понятно что универсальность лучше, чем привязка. Но, я бы вас попросил, все таки подсказать код выборки применительно к моей таблице, без использования функций. Я так понимаю, что все можно сделать при помощи $result=mysql_query, foreach и оператора if. но никак не могу это все увязать. Проблемка в чем: если делать обычную выборку, то картинки будут отображаться напротив каждой строчки в таблице. А мне надо: чтобы при каждой новой группировке по столбцу MALE, картинка прописывалась разово перед выборкой.
0
|
|
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
||||||||||||||||
| 16.02.2020, 00:01 | ||||||||||||||||
|
Povaliha, На самом деле я не совсем внимательно прочитал ваше задание. Можно вынести метод из сущности в некий хэлпер
Тут самое главное не захламлять излишней логикой ваш шаблон. А логика в любом случае есть. Так что без функции не обойтись. Как вы реализуете метод getGroupImageSrc() уже ваше дело. И представление ничего об этом не должно знать.
0
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 14
|
|
| 16.02.2020, 00:14 [ТС] | |
|
Спасибо.
Я воспользуюсь данным кодом - но для другой моей задумки. А для конкретно данной ситуации - есть недостаток в вашем методе. И он существенен: Различных параметров в столбце MALE - может быть много. BOY, GIRL, Animal, Books, Snacks, Pens и т.д. При использовании вашего метода - нужно будет вручную все данные из столбца прописывать в функции. А хочется чего-то более менее универсального. Я сильно подозреваю, что это делается как-то просто. И без логики. Простой выборкой и сортировкой по группам, с выводом сообщения на экран при каждой новой группе. Foreach, While и может еще что-то. П.С. Мы можем упростить задачу, черт с этими картинками. Пусть код просто выводит название группы перед кажой сортировкой. Т.е. результат на экране такой нужен: Группа: BOY 1 BOY 10 лет 2 BOY 15 лет Группа: GIRL 3 GIRL 10 лет 4 GIRL 5 лет Группа Animal 5 Animal 100 лет 6 Animal 50 лет
0
|
|
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
||||||
| 16.02.2020, 01:23 | ||||||
Сообщение было отмечено Povaliha как решение
Решение
Povaliha, Я уже выше написал, вы можете реализовать метод getGroupImageSrc() как вы хотите, это и есть плюс абстракции. Когда мы находимся в шаблоне нам не важно каким образом мы получаем картинку.
Так же этот метод можно повторно использовать на других страницах. Если бы вы жестко прописали без метода, то была бы проблема с изменением в разных местах. Добавлено через 10 минут Даже обычное склеивание для формирование пути к картинке - это ведь тоже логика. Добавлено через 47 минут Povaliha, Если у вас значений много, то можно создать отдельную таблицу male id, titile, image
1
|
||||||
|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 14
|
|
| 19.02.2020, 11:46 [ТС] | |
|
sad67man, я все не уймусь, подскажите, а как может выглядеть код для реализации такой логики:
1. Организуем вывод построчно всех элементы базы. Циклом. (это сделано). 2. Присваиваем значение ячейки MALE в переменную $male. $male=$row['MALE']; 3. Проверяем условие: если $male изменился (наверное нужно делать проверку $male который был и который стал, не знаю как это сделать). Если $male изменился (все равно на что, главное НЕ равен предыдущему) - то выводим картинку src= '.$male.'.png Вроде бы простая как топор логика и достаточно элегантная. При каждом изменении $male - мы будем выводить картинку $male.png
0
|
|
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
|||||||
| 19.02.2020, 18:47 | |||||||
|
Povaliha,
Я вам выше уже писал. Povaliha, Так как у вас возможных значений male много, то лучше добавить отдельную таблицу для mail. Почитайте что-нибудь про нормализацию баз данных. base id male_id age 1 --- 1 --- 10 2 --- 1 --- 15 3 --- 2 --- 10 лет 4 --- 2 --- 5 лет 5 --- 3 --- 100 лет 6 --- 3 --- 50 лет males id title image 1 --- BOY --- boy.png 2 --- GIRL --- girl.png 3 --- Animal --- animal.png Тогда запрос будет выглядеть так
0
|
|||||||
|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 14
|
||||||
| 19.02.2020, 21:15 [ТС] | ||||||
|
sad67man, Я хочу добится простоты кода.
У вас достаточно сложный для понимания обывателя. А древовидная структура вывода (или же вывод значений с оглавлениями ) - это крайне востребованная информация. Но, нигде не нашел ничего простого. Вот что у меня получилось:
сначала (ПОЧЕМУ-то!?!?!) выводятся все картинки, а потом уже все внутренности таблицы!! Как так? Т.е. сейчас это выглядит так: А надо так:
0
|
||||||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
||||||
| 19.02.2020, 23:04 | ||||||
|
Povaliha, По вашему коду, трудно проследить верстку (html код), не вижу, чтоб вы картинку помещали бы внутрь какой-либо ячейки таблицы. Если верстка будет усложняться и будет подвергаться частым изменениям, есть риск повредить логику получения данных.
Вообще получение данных из бд и сложную логику нужно четко отделять от вывода - формирования html представления. Это как 2 разных контекста, где php играет 2 совершенно разные роли. В одном случае как серверный язык программирования, в другом как простой шаблонизатор. Добавлено через 1 минуту Не пойму чем вас мой вариант не устраивает. Не нравятся объекты - напишите на массивах.
У вас может быть проблема не с логикой, а с самой версткой. Для начала сверстайте чистый html код. А потом уже подставляйте туда реальные значения из бд.
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 14
|
||||||
| 19.02.2020, 23:28 [ТС] | ||||||
|
sad67man, ваш код устраивает.
Просто он сложен для восприятия. И скорее всего будет крайне полезен для больших объемов данных. Вывод данных структурировано - нужен повсеместно. Начиная от любого сайта торговой направленности (вывод товара) или расписанием занятий в университете и кончая выводом любого каталога или таблицы по запросу. НО. Я не нашел ничего и похожего в интернете. А если и были примеры - то крайне сложные для понимания. Поэтому, я озадачился написанием простого кода, для вывода данных с оглавлением из mySql. И, все получилось, последний мой код - работает. Вы были правы - нужно было немного изменить верстку. Тег <table> добавил в тело ECHO! Рабочий код:
0
|
||||||
| 19.02.2020, 23:28 | |
|
Помогаю со студенческими работами здесь
13
Макрос, который увеличивает значение ячейки А на 1 при изменении ячейки В
Выборка данных из таблицы при задании определяющих значений в фильтре
Как подсветить ячейки заголовка при вводе данных в ячейку таблицы? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|