Цитата:
|
Цитата:
Чтобы не биться головой о твердые предметы так поступать как вы сделали как раз и не стоит. Ваша проблема в именовании массива данных, отсюда и такие портянки кода. |
Цитата:
Имя товара - заголовок, Изображение товара, Описание - абзац, Цена - абзац или заголовок. И какое то количество характеристик которые являются элементами списка и их количество в зависимости от компоновки и наименования товара меняеться. И всё это надо продублировать во всплывающем окне и форме обратной связи скрытыми строками. В данный момент я этого добился, но к сожалению только такой портянкой. В Гугле понятных мне примеров с такой раскладкой не нашёл, или не понял их по причине абсолютной неопытности |
Цитата:
Во-вторых - визуализация табличных данных на странице клиента никак не может определять их структуру. А вот представление их на клиенте, а тем более в форме, может быть любым. РНР может за вас упаковать ее поля в массив такой, какой будет удобен для обработки на сервере, и только это будет определяющим, а не потому что всплывает или еще что либо. Писать о заголовке, описании, цене (цена между прочим не может иметь ни абзаца, ни заголовка, цена это вещественная характеристика сущности, и имеет непосредственно величину и денежный номинал), и других характеристиках, но при этом все это описывать как ТТХ1, ТТХ2, ..., это и есть кошмар для любого языка программирования. Архитектура данных и принципы нормализации, это будет определять структуру табличных данных, а не окна, формы и прочее. И в такой структуре как товары и их характеристики будет всегда первичная таблица описывающая основные характеристики товара, и вторичная таблица (вторичные таблицы) описывающая значения (набор) какой либо характеристики. Эти характеристики имеют, должны иметь, "осязаемые" имена и связываться между собой уникальными идентификаторами - name, price, unit, weight, ... для каждого из товаров с его id. И эти имена на сервере будут ключами ассоциативного массива с первичным ключом id, указывающем какому товару принадлежит каждый из наборов массива. А на клиенте, это будут имена свойств объекта. А вернуть эти данные серверу будет означать - связать эти свойства по id товара как индексу ключей name, price, unit, weight, ... или name, price, unit, weight, ... это будет вложенный массив под первичным ключом, индексом которого будет id. А не ТТХ1, ТТХ2, ..., и подобное, ибо это и есть корень зла в вашем и представлении, и, соответственно, обработке таких данных "костылями". |
Цитата:
2е Как вы предлагаете мне стандартизировать характеристики электро-оборудования например, когда для магнитного пускателя мне надо вывести максимальный ток силовых контактов, напряжение срабатывания, количество дополнительных контактов, для автоматического выключателя, ток срабатывания, кривую срабатывания, количество полюсов, а для микропроцессорного контроллера надо прописать количество модулей с аналоговыми и дискретными входами и выходами, количество контактов в них, рабочее напряжение, все показатели аналоговых входов и выходов? Лично мне кажеться что будет проще вписать в массив характеристику и вывести её как ТХ(техническая характеристика)1, а не прописывать каждое значение поимённо. 3е Я примерно понимаю что что вы имеете ввиду описывая построение структуры, но проблемма в том что я не знаю как это прописать кодом, потому и попросил подсказать как это сделать или ссылку на решение подобной задачи, чтоб было на чём основываться перестраивая её под себя. 4е по поводу цены, чтоб её стилизовать её надо обернуть в какой то тег с каким то классом и прописать для неё CSS, а будет это заголовок <h>Цена</h> или абзац <p>Цена</p> мне в принципе всё равно. Вчера в 2 ночи решение которое меня устраивает уже нашёл, ток думал что тут будет быстрее получить подсказку от гуру, но в любом случае спасибо за советы, будет что почитать и обдумать. |
Кстати решил отказаться от вывода по ключам и foreach в пользу for, и сократил обработчик до такого вида, таким образом сохранился вывод инфы на странице, в блоке всплывающем по клике на кнопку "Заказать" и отправка скрытых данных в почтовой форме.
<?php for ($row = 4; $row < 10; $row++) { echo '<hr/>'; echo '<div class="row"><div class="col-1"></div>'; echo '<div class="col-10">'; echo '<center>'.'<h5>'.$cmodels[$row][1].'</h5>'.'</center>'; echo '</div><div class="col-1"></div>'; echo '<div class="col-12">'; echo '<ul>'.'<img class="RightImg40" src="'.$cmodels[$row][2].'">'; for ($col = 3; $col < count($cmodels[$row]); $col++) { echo "<li>".$cmodels[$row][$col]."</li>";} echo '</ul>'; echo '<a class="BuyButton popup-with-zoom-anim Red" href="#'.$cmodels[$row][0].'">Заказать</a>'; echo '</div></div>'; echo '<hr/>'; echo '<div id="'.$cmodels[$row][0].'" class="popup-window zoom-anim-dialog mfp-hide">' ; echo '<center><h4>'.$cmodels[$row][1].'</h4></center>'; echo '<ul>'.'<img class="RightImg30" src="'.$cmodels[$row][2].'">'; for ($col = 3; $col < count($cmodels[$row]); $col++) { echo "<li>".$cmodels[$row][$col]."</li>";} echo '</ul>'; echo '<div class="SeparateRow"></div>'; echo '<form id="form'.$cmodels[$row][0].'">'; echo '<div class="row">'; echo '<div class="col-sm-12 col-lg-4"><input type="text" class="name" name="name" placeholder="Ваше имя"></div>'; echo '<div class="col-sm-12 col-lg-4"><input type="text" class="phone" name="phone" placeholder="Ваш телефон"></div>'; echo '<div class="col-sm-12 col-lg-4"><input type="text" class="email" name="email" placeholder="Ваш Email">'; echo '<button class="btn-default" name="submit" type="submit" style="float:right">Отправить</button>'; echo '</div></div>'; echo '<input type="hidden" name="formData" value="Заказать">'; echo '<input type="hidden" name="formName" value="'.$cmodels[$row][1].'">'; for ($col = 3; $col < count($cmodels[$row]); $col++) { echo '<input type="hidden" name="formTX'.$col.'" value="'.$cmodels[$row][$col].'">';} echo '</form>'; echo '</div>'; } |
Цитата:
Допустим мы хотим иметь базу данных городов, их улиц и характеристику этих улиц. Что будет первично а данной структуре данных - курица или яйцо? Конечно курица, то есть город, ибо улицы в городе, а не наоборот. Значит первичная таблица, это таблица: cities с двумя полями: id_city - уникальный идентификатор города, формируемый автоматически и являющийся первичным ключом таблицы, и city_name - название города. Таблица имеет значения: 1, Кукуево 2, Гадюкино Связанные с первичной таблицей таблицы, это: streets - таблица улиц с полями: id_street - уникальный идентификатор улицы, формируемый автоматически и являющийся первичным ключом таблицы, и street_name - название улицы, id_surface - характеристика дорожного покрытия улицы, id_lighting - характеристика освещения улицы. Таблица имеет значения: 1, Прямая, 1, 3 2, Кривая, 2, 1 3, Элитная, 4, 4 surfaces - таблица различных дорожных покрытий с полями: id_surface - уникальный идентификатор характеристики, формируемый автоматически и являющийся первичным ключом таблицы, surface_value - значение характеристики. Таблица имеет значения: 1, Грязь 2, Песок 3, Гравий 4, Асфальт lightings - таблица различных дорожных покрытий с полями: id_lighting - уникальный идентификатор характеристики, формируемый автоматически и являющийся первичным ключом таблицы, lighting_value - значение характеристики. Таблица имеет значения: 1, Лампады 2, Свечи 3, Костры 4, Фонари электрические Если нужно узнать удобно ли гулять в сандалиях по улице Прямой, достаточно сделать запрос к таблице streets объединив его с запросом к таблицам surface и lighting объединив их по идентификаторам id_surface и id_lighting для улицы id_street = 1. Результатом будет: Прямая, Грязь, Костры. А вот улицы для города уже так не объединить, ибо в городе может быть множество улиц. Для такого объединения потребуется внешняя таблица связей - city_streets, с полями id_city и id_street. Если она будет содержать записи: 1, 1 1, 2 2, 3 значит у города Кукуево две улицы - Прямая и Кривая, а город Гадюкино, это город развитого коммунизма с одной Элитной улицей. Если представить эти данные в форме как: <input name="city[1]" value="Кукуево" /> <input name="street[1][1]" value="Прямая" /> <input name="surface[1][1][1]" value="Грязь" /> <input name="lighting[1][1][3]" value="Костры" /> <input name="street[1][2]" value="Кривая" /> <input name="lighting[1][2][2]" value="Песок" /> <input name="surface[1][2][1]" value="Лампады" /> <input name="city[2]" value="Гадюкино" /> <input name="street[2][3]" value="Элитная" /> <input name="surface[2][3][4]" value="Асфальт" /> <input name="lighting[2][3][4]" value="Фонари электрические" /> то сервер получит эти данные в виде массива: Array ( [city] => Array ( [1] => Кукуево [2] => Гадюкино ) [street] => Array ( [1] => Array ( [1] => Прямая [2] => Кривая ) [2] => Array ( [3] => Элитная ) ) [surface] => Array ( [1] => Array ( [1] => Array ( [1] => Грязь ) [2] => Array ( [1] => Лампады ) ) [2] => Array ( [3] => Array ( [4] => Асфальт ) ) ) [lighting] => Array ( [1] => Array ( [1] => Array ( [3] => Костры ) [2] => Array ( [2] => Песок ) ) [2] => Array ( [3] => Array ( [4] => Фонари электрические ) ) ) ) в котором все вложенные массивы ключей города, улиц и их характеристик связаны по их идентификаторам. Северу легко такие данные проверить/обработать, и не важно сколько будет городов, улиц и характеристик. А если данные в форме представить так: <input name="data[1][city][name]" value="Кукуево" /> <input name="data[1][street][1][name]" value="Прямая" /> <input name="data[1][street][1][surface][1]" value="Грязь" /> <input name="data[1][street][1][lighting][3]" value="Костры" /> <input name="data[1][street][2][name]" value="Кривая" /> <input name="data[1][street][2][surface][2]" value="Песок" /> <input name="data[1][street][2][lighting][1]" value="Лампады" /> <input name="data[2][city][name]" value="Гадюкино" /> <input name="data[2][street][3][name]" value="Элитная" /> <input name="data[2][street][3][surface][4]" value="Асфальт" /> <input name="data[2][street][3][lighting][4]" value="Фонари электрические" /> то сервер получит уже такой массив: Array ( [data] => Array ( [1] => Array ( [city] => Array ( [name] => Кукуево ) [street] => Array ( [1] => Array ( [name] => Прямая [surface] => Array ( [1] => Грязь ) [lighting] => Array ( [3] => Костры ) ) [2] => Array ( [name] => Кривая [surface] => Array ( [2] => Песок ) [lighting] => Array ( [1] => Лампады ) ) ) ) [2] => Array ( [city] => Array ( [name] => Гадюкино ) [street] => Array ( [3] => Array ( [name] => Элитная [surface] => Array ( [4] => Асфальт ) [lighting] => Array ( [4] => Фонари электрические ) ) ) ) ) ) А если все именовать так как у вас ХХХ1, ХХХ2, ..., то есть банально пронумеровать данные, то разобраться что есть что в большом массиве данных будет невозможно. Даже если иметь ключи city1, city2, ..., street1, street2, ..., то это все равно будет сущим кошмаром. Не важно города ли с улицами описаны, товары ли, всегда должна быть связь между всеми данными сущности, которая однозначно указывает что чему принадлежит. За один присест всего не рассказать, так что "Ок, Гугл, ...", находить, читать, вникать, учится мыслить. |
Спасибо за такое широкое раскрытие темы, буду гуглить читать вникать и учиться.
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 02:42. |