Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.03.2015, 15:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,384

А я разве ругаюсь?

Ну если заносится и нормально, а может и не нормально. Вы опять пишите костыли, которые либо выковыривать нужно будет, либо методично править во всех файлах. Я имею ввиду вывод ошибки запроса. Приучать надо себя к тому чтобы это писалось как автоматом.

Говорил и том, что заставлять интерпретатор парсить строки без необходимости тоже не есть гут. И что таблица должна быть вложена в форму .... Нельзя так своевольничать:

<table><form><thead>

не может быть такого, форму в таблицу можно поместить только в ячейку и целиком. Должно быть:

<form><table><thead> ... код таблицы с полями форм в ячейках ... </table><input type='submit' name='pc_smeta' /></form><span id='total'></span>

А не работает клиентский скрипт либо потому, что эта таблица подгружается на страницу динамически, либо есть этот скрипт, но не подключена jQuery. Поясняйте как именно у вас делается или какова структура вашей страницы, интересует подключение JS.
Ответить с цитированием
  #12 (permalink)  
Старый 19.03.2015, 18:20
Аспирант
Отправить личное сообщение для Daniel93 Посмотреть профиль Найти все сообщения от Daniel93
 
Регистрация: 21.02.2015
Сообщений: 37

Спасибо большое! Все заработало, после того как навел порядок в html коде и сделал все так:
<form><table><thead> ... код таблицы с полями форм в ячейках ... </table><input type='submit' name='pc_smeta' /></form><span id='total'></span>
Еще раз спасибо!
Ответить с цитированием
  #13 (permalink)  
Старый 19.03.2015, 20:11
Аспирант
Отправить личное сообщение для Daniel93 Посмотреть профиль Найти все сообщения от Daniel93
 
Регистрация: 21.02.2015
Сообщений: 37

Извините, опять обращаюсь(

Со всем разобрался, все работает, но как можно сделать так, чтобы в базу заносилась не только полная сумма, но и расшифровка.

Например, Общая сумма - 1200
Услуга 1 - 500
Услуга 2 - 350
Услуга 3 - 350
Ответить с цитированием
  #14 (permalink)  
Старый 20.03.2015, 08:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,384

Как понять расшифровка? Есть некая сущность в базе, назовем ее А, которая может иметь различные свойства описанные в таблице 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.
Ответить с цитированием
  #15 (permalink)  
Старый 20.03.2015, 12:25
Аспирант
Отправить личное сообщение для Daniel93 Посмотреть профиль Найти все сообщения от Daniel93
 
Регистрация: 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?

Извините, если коряво объяснил

Ответить с цитированием
  #16 (permalink)  
Старый 20.03.2015, 12:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,384

А из чего берутся эти именования "Услуга 1", "Услуга 2"... при выводе таблицы с формой на страницу?
Ответить с цитированием
  #17 (permalink)  
Старый 20.03.2015, 12:38
Аспирант
Отправить личное сообщение для Daniel93 Посмотреть профиль Найти все сообщения от Daniel93
 
Регистрация: 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]]">
Ответить с цитированием
  #18 (permalink)  
Старый 20.03.2015, 12:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,384

fact_price[$smeta[id_pc_price]] - это что (выделенное) такое и зачем?

Как получаете и обрабатываете данные формы, что и как вы записываете в базу?
Ответить с цитированием
  #19 (permalink)  
Старый 20.03.2015, 12:47
Аспирант
Отправить личное сообщение для Daniel93 Посмотреть профиль Найти все сообщения от Daniel93
 
Регистрация: 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 (permalink)  
Старый 20.03.2015, 12:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 11,384

Фу ты господи, прости, это же имя набора $smeta у вас

Нет, покажите как и что вы записываете в базу из полученного.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка щелчка по button. тонкие различия с input type=button xtfkpi Events/DOM/Window 2 28.01.2015 23:32
Принятие из input данных и обработка в функции AJAX SunDr AJAX и COMET 0 14.11.2014 14:42
Ширина поля input text в зависимости от количества символов rekon87 (X)HTML/CSS 7 14.06.2013 22:55
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
Обработка нескольких file input Temlekur Работа 8 21.01.2010 18:30