19.03.2015, 15:37
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
А я разве ругаюсь?
Ну если заносится и нормально, а может и не нормально. Вы опять пишите костыли, которые либо выковыривать нужно будет, либо методично править во всех файлах. Я имею ввиду вывод ошибки запроса. Приучать надо себя к тому чтобы это писалось как автоматом.
Говорил и том, что заставлять интерпретатор парсить строки без необходимости тоже не есть гут. И что таблица должна быть вложена в форму .... Нельзя так своевольничать:
<table><form><thead>
не может быть такого, форму в таблицу можно поместить только в ячейку и целиком. Должно быть:
<form><table><thead> ... код таблицы с полями форм в ячейках ... </table><input type='submit' name='pc_smeta' /></form><span id='total'></span>
А не работает клиентский скрипт либо потому, что эта таблица подгружается на страницу динамически, либо есть этот скрипт, но не подключена jQuery. Поясняйте как именно у вас делается или какова структура вашей страницы, интересует подключение JS.
|
|
19.03.2015, 18:20
|
Аспирант
|
|
Регистрация: 21.02.2015
Сообщений: 37
|
|
Спасибо большое! Все заработало, после того как навел порядок в html коде и сделал все так:
<form><table><thead> ... код таблицы с полями форм в ячейках ... </table><input type='submit' name='pc_smeta' /></form><span id='total'></span>
Еще раз спасибо!
|
|
19.03.2015, 20:11
|
Аспирант
|
|
Регистрация: 21.02.2015
Сообщений: 37
|
|
Извините, опять обращаюсь(
Со всем разобрался, все работает, но как можно сделать так, чтобы в базу заносилась не только полная сумма, но и расшифровка.
Например, Общая сумма - 1200
Услуга 1 - 500
Услуга 2 - 350
Услуга 3 - 350
|
|
20.03.2015, 08:24
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Как понять расшифровка? Есть некая сущность в базе, назовем ее А, которая может иметь различные свойства описанные в таблице T1. Ей же может принадлежать некий множественный набор других свойств, либо ваши же услуги, количество которых переменно. В свою очередь эти свойства/услуги описывает другая таблица Т2.
Вопрос - каким образом сохранить в базе набор свойств из таблицы Т2 выбранных для сущности А? Вы же не станете для этого добавлять в таблицу Т1 новые поля при выборе услуг или удалять их при удалении услуг. Для того чтобы сохранить такой выбор, нужна третья таблица Т3, которая будут отражать такой набор, и которая будет связана с таблицами Т1 и Т2.
Таблица Т3 будет содержать уникальный идентификатор сущности А из таблицы Т1, по которому связываются таблицы Т1 и Т3, и уникальный идентификатор свойства/услуги из таблицы Т2, по которому связываются таблицы Т2 и Т3. В свою очередь эта пара полей таблицы Т3 создает уникальный индекс каждой записи таблицы Т3. Таблица Т3 являющаяся внешней таблицей связи между Т1 и Т2 как раз и содержит множественный набор свойств/услуг принадлежащих сущности А.
Этого и достаточно, если необходимо только описание набора. Но если свойство/услуга таблицы Т2 имеет какие либо количественные характеристики, как то цену за единицу, и такой услуги можно выбрать N-количество, то кроме идентификаторов таблица Т3 должна хранить и количество каждой выбранной услуги. Хранить общую же сумму за эти услуги и их общее количество нет необходимости, так как это всегда можно получить связанными запросами к таблицам Т1, Т2, Т3.
Смекаете, что для того чтобы ответить на ваш вопрос необходимо знать организацию ваших данных, то есть структуру базы - таблицы, связи? Рассказывая вам о том как должны именоваться поля формы и почему так, и предполагалось, что вы храните именно набор множества полученный из формы. Но если вы задаете этот вопрос, то получается что нет, значит организация вашей базы никуда не годится.
Именно продуманная структура данных отраженная в базе, это более чем половины успеха. Непродуманная тоже будет работать, но с костылями, не в меру нагружая базу лишними запросами, с тормозами на отклики, и сядет в лужу при большой нагрузке на сервер.
Последний раз редактировалось laimas, 20.03.2015 в 09:51.
|
|
20.03.2015, 12:25
|
Аспирант
|
|
Регистрация: 21.02.2015
Сообщений: 37
|
|
Не, с базой, вроде бы, все нормально. У меня как раз и есть три таблицы.
Т1 - содержит идентификатор, наименование услуги, минимальная и максимальная цена
Т2 - содержит информацию о заказе и будет содержать идентификатор из таблицы Т3, в которой хранится составленная смета
Т3 - содержит информацию о составленной смете. Идентификатор сметы (который будет вставляться в Т2), расшифровка работ (про что я писал: услуга 1 - 500, услуга 2 - 350 и т.д. и т.п.) и общая сумма, с которой уже определились.
На данный момент я не могу понять, как мне из формы вытащить именно это расшифровку? Как на этой картинке
Услуга 1 - 350
Услуга 3 - 300
Услуга 4 - 670
Общая сумма - 1320
Вот с общей суммой все понятно, с остальным нет.
Может быть вытащить эту расшифровку в массив, а потом с помощью json_encode занести в базу? Тогда возникает вопрос, как мне узнать, что 350 указанно именно для Услуги 1, а не Услуги 4?
Извините, если коряво объяснил
|
|
20.03.2015, 12:28
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
А из чего берутся эти именования "Услуга 1", "Услуга 2"... при выводе таблицы с формой на страницу?
|
|
20.03.2015, 12:38
|
Аспирант
|
|
Регистрация: 21.02.2015
Сообщений: 37
|
|
Да
<?php
$smet = mysql_query("SELECT id_pc_price, name_pc_price, min_pc_price, max_pc_price
FROM pc_price") or die(mysql_error());
$table = "<form id='price' method='POST' action='handler/pc_smeta.php'><table class='table'>
<thead>
<tr>
<th>Наименование</th>
<th>Рекомендуемая цена</th>
<th>Фактическая цена цена</th>
</tr>
</thead>
";
while ($smeta = mysql_fetch_array($smet)) {
$table .= "<tr>
<td>$smeta[name_pc_price]</td>
<td>$smeta[min_pc_price]-$smeta[max_pc_price]</td>
<td><input type='text' name='fact_price[$smeta[id_pc_price]]'></td>
</tr>
";
}
$table .="</table><input type='submit' name='pc_smeta' /></form><span id=''>Общая сумма:</span><span id='total'></span>";
echo $table;
?>
Может через чекбоксы? К каждому полю дать чекбокс и имя у чекбокса будет именеv из базы?
<input type="checkbox" name="item_name[$smeta[name_pc_price]]">
|
|
20.03.2015, 12:42
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
fact_price[$smeta[id_pc_price]] - это что (выделенное) такое и зачем?
Как получаете и обрабатываете данные формы, что и как вы записываете в базу?
|
|
20.03.2015, 12:47
|
Аспирант
|
|
Регистрация: 21.02.2015
Сообщений: 37
|
|
Сообщение от laimas
|
Имя поля формы должно отражать принадлежность поля к массиву, то есть:
<input type="text" name="fact_price[id_pc_price]">
|
<?php
include("../../bd.php");
if (isset($_POST['pc_smeta'])) {
if($fact = array_diff(array_map('intval', $_POST['fact_price']), array(0))) {
//действия с данным, например сумма на сервере, если нужна:
$sum = array_sum($fact);
$keys = array_keys($fact);
//требуется проверка и ключей полученного массива $fact,
//если только запись не подготовленными запросами PDO
echo $sum;
} else {
//ничего не выбрано
}
} // Конец проверки кнопки
?>
|
|
20.03.2015, 12:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Фу ты господи, прости, это же имя набора $smeta у вас
Нет, покажите как и что вы записываете в базу из полученного.
|
|
|
|