Ассоциативные многомерные массивы для страницы товара с кнопкой предзаказа
Доброго времени суток, я являюсь полным нубом в JS, но возникла необходимость разбираться в боевых условиях. На 3-й день понял что не справлюсь сам и решил отписаться тут, может что-то подскажете.
Есть массив имеющий вид: список товаров -> общее описание, и в общем описании строка с вторичным массовом технических характеристик, количество которых может отличаться var cmodels = { "id1" : { "Название" : "", "Описание" : "", "Изображение" : "", "Цена" : "", "Param" : { "ТХ1" : "", "ТХ2" : "", "ТХ3" : "", "ТХ4" : "", "ТХ5" : "" } }, Изначально я хотел делать массив в виде список->товар->значение с обработчиком. Но такой вариант не прокатил потому что там где переменная ттх отсутствовала мне выдавало текст с надпистью undefined, что логично. теперь я хочу чтоб ТТХ были отдельным массивом считываемым полностью внутри массива основного. //Массив начало// var cmodels = { "idcmodels1" : { "Название" : "", "Описание" : "<p></p>", "Изображение" : "", "Цена" : "", "ТТХ1" : "<li></li>", "ТТХ2" : "<li></li>", "ТТХ3" : "<li></li>", "ТТХ4" : "<li></li>", "ТТХ5" : "<li></li>" } }; //Массив конец// //Вывод в консоль// console.log(cmodels); //Вывод на страницу// var out = ''; for (var key in cmodels) { out+= '<h5>'+cmodels[key].Название+'</h5>'; out+= '<p>'+cmodels[key].Описание+'</p>'; out+= '<p>'+cmodels[key].Цена+'</p>'; out+= '<ul>'; out+= '<img" src="'; out+= cmodels[key].Изображение; out+= '">'; out+= cmodels[key].ТТХ1; out+= cmodels[key].ТТХ2; out+= cmodels[key].ТТХ3; out+= cmodels[key].ТТХ4; out+= cmodels[key].ТТХ5; } document.getElementById('out').innerHTML = out;. Ещё нужно иметь возможность резать массив чтоб можно было вставить обработчик в 2 блока и вывести часть товара в одной половине экрана и часть в другой, чтото типа var cmodelsfirst = cmodels.slice(1, 3); или если подскажите как можно-ли вызвать данные частично через for или while по ключу (может есть какая то комбинация как в php). for ($row = 0; $row < 4; $row++) { foreach($cmodels[$row] as $key => $value) {} }; также нужно добавить в список кнопку с id товара по которой будет открываться блок фиксированный в центре экрана с формой обратной связи и описанием товара автоматом вставляемого в эту форму и отсылаемого на почту чтото типо этого но тут тоже непонятка как вставить именно нужные данные в div по id и главное как грамотно это прописать window.onload= function() { document.getElementById('toggler').onclick = function() { openbox('box', this); return false; }; }; function openbox(id, toggler) { var div = document.getElementById(id); if(div.style.display == 'block') { div.style.display = 'none'; toggler.innerHTML = '<i class="fa fa-bars fa-2x" aria-hidden="true"></i>'; } else { div.style.display = 'block'; toggler.innerHTML = '<i class="fa fa-times fa-2x" aria-hidden="true"></i>'; } } Вообщем если не сложно или кто-то сталкивался с подобным киньте упрощённый пример или подскажите что можно почитать в этом направлении. Заранее благодарен. |
Цитата:
|
Mikael86,
:write: "Param": [{ title: "", content: "" }, { title: "", content: "" }, { title: "", content: "" }, { title: "", content: "" }] |
А что даст дополнительная квадратная скобка во вторичном массиве?
Есть одна мысль, проверю её отпишусь с результатом, но проблемма грамотного обработчика осталась. Если что выложу что получиться. И по поводу изучения баз данных это хорошо, но я так понимаю MySql это больше по PHP и нагружает сервер, а если делать через JS то нагрузка на комп пользователя, да и в JS привязать вывод окна заказа с товаром. К тому же как я говорил учу в бою, по ночам, после основной работы которая с программированием абсолютно не совместима, времени мало чтоб полноценно читать, хотелось бы короткий ответ с примерами. |
Цитата:
И в JS нет ассоциативных массивов. |
Решил через PHP и плагин JS magnificPopup
По итогам на данный момент имеем массив вида $cmodels = array( array( "Название" => '', "Описание" => '<p></p>', "Изображение" => '', "Цена" => '', "ТТХ1" => '<li></li>', "ТТХ2" => '<li></li>', "ТТХ3" => '<li></li>', "ТТХ4" => '<li></li>', "ТТХ5" => '<li>Цветной дисплей/li>', "CmodelsId" => 'CmodelsId1' ), ); И обработчик корявый и обьёмный, но рабочий for ($row = 4; $row < 10; $row++) { foreach($cmodels[$row] as $key => $value) { $counter = 1; echo '<div class="row">' ; echo '<div class="col-1"></div>' ; echo '<div class="col-10">' ; echo '<center>' . '<h5>' . $cmodels[$row]["Название"] . '</h5>' . '</center>'; echo '<p>' . $cmodels[$row]["Описание"] . '</p>'; echo '</div>'; echo '<div class="col-1"></div>' ; echo '<div class="col-12">' ; echo '<p>' . $cmodels[$row]["Цена"] . '</p>'; echo '<ul>'; echo '<img class="RightImg30" src="'; echo $cmodels[$row]["Изображение"]; echo '">'; echo $cmodels[$row]["ТТХ1"]; echo $cmodels[$row]["ТТХ2"]; echo $cmodels[$row]["ТТХ3"]; echo $cmodels[$row]["ТТХ4"]; echo $cmodels[$row]["ТТХ5"]; echo $cmodels[$row]["ТТХ6"]; echo $cmodels[$row]["ТТХ7"]; echo $cmodels[$row]["ТТХ8"]; echo $cmodels[$row]["ТТХ9"]; echo $cmodels[$row]["ТТХ10"]; echo $cmodels[$row]["ТТХ11"]; echo $cmodels[$row]["ТТХ12"]; echo $cmodels[$row]["ТТХ13"]; echo $cmodels[$row]["ТТХ14"]; echo $cmodels[$row]["ТТХ15"]; echo $cmodels[$row]["ТТХ16"]; echo $cmodels[$row]["ТТХ17"]; echo $cmodels[$row]["ТТХ18"]; echo $cmodels[$row]["ТТХ19"]; echo $cmodels[$row]["ТТХ20"]; echo $cmodels[$row]["ТТХ21"]; echo $cmodels[$row]["ТТХ22"]; echo '</ul>'; echo '<a class="BuyButton popup-with-zoom-anim" href="#'; echo $cmodels[$row]["CmodelsId"]; echo '">открыть</a>'; echo '</div>'; echo '</div>'; echo '<div id="'; echo $cmodels[$row]["CmodelsId"]; echo '" class="popup-window zoom-anim-dialog mfp-hide">' ; echo '<center><h4>'; echo $cmodels[$row]["Название"]; echo '</h4></center>'; echo '<ul>'; echo '<img class="RightImg30" src="'; echo $cmodels[$row]["Изображение"]; echo '">'; echo $cmodels[$row]["ТТХ1"]; echo $cmodels[$row]["ТТХ2"]; echo $cmodels[$row]["ТТХ3"]; echo $cmodels[$row]["ТТХ4"]; echo $cmodels[$row]["ТТХ5"]; echo $cmodels[$row]["ТТХ6"]; echo $cmodels[$row]["ТТХ7"]; echo $cmodels[$row]["ТТХ8"]; echo $cmodels[$row]["ТТХ9"]; echo $cmodels[$row]["ТТХ10"]; echo $cmodels[$row]["ТТХ11"]; echo $cmodels[$row]["ТТХ12"]; echo $cmodels[$row]["ТТХ13"]; echo $cmodels[$row]["ТТХ14"]; echo $cmodels[$row]["ТТХ15"]; echo $cmodels[$row]["ТТХ16"]; echo $cmodels[$row]["ТТХ17"]; echo $cmodels[$row]["ТТХ18"]; echo $cmodels[$row]["ТТХ19"]; echo $cmodels[$row]["ТТХ20"]; echo $cmodels[$row]["ТТХ21"]; echo $cmodels[$row]["ТТХ22"]; echo '</ul>'; echo '<div class="SeparateRow"></div>'; echo '<form id="form">'; echo '<div class="container"><div class="row">'; echo '<div class=" col-md-12 col-lg-4">'; echo '<input type="text" name="nameBuyform" required="required" placeholder="Как к вам обращаться"/>'; echo '</div><div class=" col-md-12 col-lg-4">'; echo '<input type="text" name="phoneBuyform" required="required" placeholder="Ваш телефон"/>'; echo '</div><div class=" col-md-12 col-lg-4">'; echo '<input type="text" name="mailBuyform" required="required" placeholder="Адресс электронной почты"/>'; echo '<input type="submit" value="Заказать звонок"/>'; echo '</div>'; echo '</div></div>'; echo '</form>'; echo '</div>'; $counter ++; if ($counter>1) break; //количество товаров } } Для того чтоб вызывать всплывающие окна использовано В Head сайта <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.min.css" integrity="sha256-PZLhE6wwMbg4AB3d35ZdBF9HD/dI/y4RazA3iRDurss=" crossorigin="anonymous" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/jquery.magnific-popup.min.js" integrity="sha256-P93G0oq6PBPWTP1IR8Mz/0jHHUpaWL0aBJTKauisG7Q=" crossorigin="anonymous"></script> Так же небольшая стилизация css контейнера всплывающего окна и скрипт инициализатор под обработчиками массивов $(document).ready(function() { $('.popup-with-zoom-anim').magnificPopup({ type: 'inline', fixedContentPos: true, fixedBgPos: true, overflowY: 'auto', closeBtnInside: true, preloader: false, midClick: true, removalDelay: 300, mainClass: 'my-mfp-zoom-in' }); $('.popup-with-move-anim').magnificPopup({ type: 'inline', fixedContentPos: true, fixedBgPos: true, overflowY: 'auto', closeBtnInside: true, preloader: false, midClick: true, removalDelay: 300, mainClass: 'my-mfp-slide-bottom' }); }); PHP как и JS ток начал учить, так что за кривизну кода не бейте. Осталось вживить в этот конструктив форму обратной связи с данными для обратной связи и передачей полного описания товара поставщику, но вдруг кому то пригодиться в таком виде. |
Mikael86,
В PHP циклы пока не изобрели еще? Хорошо что не начал его изучать ;) |
Цитата:
|
Nexus,
echo $cmodels[$row]["ТТХ1"]; echo $cmodels[$row]["ТТХ2"]; echo $cmodels[$row]["ТТХ3"]; echo $cmodels[$row]["ТТХ4"]; echo $cmodels[$row]["ТТХ5"]; echo $cmodels[$row]["ТТХ6"]; echo $cmodels[$row]["ТТХ7"]; echo $cmodels[$row]["ТТХ8"]; echo $cmodels[$row]["ТТХ9"]; echo $cmodels[$row]["ТТХ10"]; echo $cmodels[$row]["ТТХ11"]; echo $cmodels[$row]["ТТХ12"]; echo $cmodels[$row]["ТТХ13"]; echo $cmodels[$row]["ТТХ14"]; echo $cmodels[$row]["ТТХ15"]; echo $cmodels[$row]["ТТХ16"]; echo $cmodels[$row]["ТТХ17"]; echo $cmodels[$row]["ТТХ18"]; echo $cmodels[$row]["ТТХ19"]; echo $cmodels[$row]["ТТХ20"]; echo $cmodels[$row]["ТТХ21"]; echo $cmodels[$row]["ТТХ22"]; Я вот про это. Тут явно повторяющийся код. |
Цитата:
|
Цитата:
|
Цитата:
Чтобы не биться головой о твердые предметы так поступать как вы сделали как раз и не стоит. Ваша проблема в именовании массива данных, отсюда и такие портянки кода. |
Цитата:
Имя товара - заголовок, Изображение товара, Описание - абзац, Цена - абзац или заголовок. И какое то количество характеристик которые являются элементами списка и их количество в зависимости от компоновки и наименования товара меняеться. И всё это надо продублировать во всплывающем окне и форме обратной связи скрытыми строками. В данный момент я этого добился, но к сожалению только такой портянкой. В Гугле понятных мне примеров с такой раскладкой не нашёл, или не понял их по причине абсолютной неопытности |
Цитата:
Во-вторых - визуализация табличных данных на странице клиента никак не может определять их структуру. А вот представление их на клиенте, а тем более в форме, может быть любым. РНР может за вас упаковать ее поля в массив такой, какой будет удобен для обработки на сервере, и только это будет определяющим, а не потому что всплывает или еще что либо. Писать о заголовке, описании, цене (цена между прочим не может иметь ни абзаца, ни заголовка, цена это вещественная характеристика сущности, и имеет непосредственно величину и денежный номинал), и других характеристиках, но при этом все это описывать как ТТХ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, ..., то это все равно будет сущим кошмаром. Не важно города ли с улицами описаны, товары ли, всегда должна быть связь между всеми данными сущности, которая однозначно указывает что чему принадлежит. За один присест всего не рассказать, так что "Ок, Гугл, ...", находить, читать, вникать, учится мыслить. |
Спасибо за такое широкое раскрытие темы, буду гуглить читать вникать и учиться.
|
Цитата:
|
Цитата:
|
Для понимания вот 2 списка характеристик заявленных производителями, совпадений немного
1:Мощность от 3,7 кВт до 7,4 кВт 230 В Разъем Type 2 / Type 1 (Mode 3)с интегрированным кабелем L- 5м Степень защиты: IP 54 Световой индикатор состояния Быстрый монтаж на стену Размеры: 315 x 180 x 110 мм Статистика потребления электроэнергии (опция заказывается отдельно) Опция по регулировке динамической нагрузки (заказывается от- дельно) Степень защиты : IP54 Рабочая температура: от -30 °C до + 45 °C 2.Современный, очень компактный корпус Зарядная мощность 3,7 кВт до 22 кВт Доступен с гнездом или зарядным кабелем длинной 5 или 8 метров Интеллектуальная система зарядки Оснащен сертифицированным измерителем энергии SIM разблокирована, бесплатный выбор поставщика услуг и платежной системы Совместимость с Cohere Maxem Energy Manager Авторизация с помощью зарядной карты Оснащаеться LED индикатором состояния станции или 3,5" цветным TFT-дисплеем с разрешением: 320 x 240 пикселей Доступны подключения сети: GPRS, Ethernet/LAN Совместимость с протоколами (OCPP 1.5 (JSON), OCPP 1.6 (JSON)) Защита от остаточного тока Реле питания (дополнительное реле безопастности) Рабочий диапазон температур (-25 ºC … +40 ºC) Класс защиты: IP55 Класс механической защиты: IK10 |
Mikael86,
зачем циклом формируется несколько форм на странице? Это "Некоторые характеристики используются по разу, нет смысла выдумывать им отдельное имя" ничем не лучше TX1, TX2, ... Не надо полемики о штрафах, о пожарной безопасности и т.п., это эмоции, а эмоциями ни СУБД, ни языки программирования не оперируют. Это в будущий искусственный разум научат переживать и ощущать запах гари, но опять таки не абстракциями это будет сделано. Я даже не знаю какими словами можно комментировать оправдание кучи форм тем, что есть "редкая характеристика". Цитата:
Иметь на странице N форм с бог знает каким именованием полей в них, абы лишь бы было, еще можно, если 1 и 2, это некое устройство имеющееся у вас в наличие в единственном экземпляре. И даже в этом случае хоть какое-то описание этого ящика должно быть на сервере, иначе спокойно можно заставить сервер вместо "мощности от 3,7 кВт до 7,4 кВт 230 В" ковыряться в чем угодно и долго. |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Я знаю HTML и СSS, PHP и JS учу, с сайтом попросили помочь знакомые чтоб не переплачивать. и хоть PHP и JS не знаю но согласно ТЗ у меня всё выполняется и в срок.
|
Цитата:
|
Часовой пояс GMT +3, время: 19:08. |