|
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 14
|
||||||
Выборка из таблицы со вставками фото при изменении данных ячейки15.02.2020, 22:30. Показов 1599. Ответов 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,814
|
|||||||||||
| 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,814
|
|
| 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,814
|
||||||||||||||||
| 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,814
|
||||||
| 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,814
|
|||||||
| 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,814
|
||||||
| 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 при изменении ячейки В
Выборка данных из таблицы при задании определяющих значений в фильтре
Как подсветить ячейки заголовка при вводе данных в ячейку таблицы? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|