Javascript.RU

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

И да - все что содержится в полях формы, это не INT, это строки.
Ответить с цитированием
  #12 (permalink)  
Старый 26.05.2017, 21:00
Новичок на форуме
Отправить личное сообщение для LaedaSt Посмотреть профиль Найти все сообщения от LaedaSt
 
Регистрация: 26.05.2017
Сообщений: 7

Сообщение от laimas Посмотреть сообщение
Весьма жаль и очень плохо, что данные, с которыми нужно работать, у вас так выглядят.



Они содержат нужное, но совсем не так, как это следовало бы делать.



Во-первых я не знаю структуры ваших данных, а во-вторых, получить основные данные и данные дополнительные чего-то, это совсем не означает, что нужно делать кучу отдельных запросов к БД. Не надо мне лапшу на уши вешать, я хорошо знаю, что такое БД и как с ней нужно работать.
Так я сюда и не учить кого-то пришел, а учиться.. По сути, это чуть ли не первый проект. И так уж сложилось, что данные выходят именно так. Может быть, настанет время, и я образумлюсь и все перепишу "как надо", а не черти-как, но пока нужно решить конкретную задачу, а скрипт выводит NaN
Ответить с цитированием
  #13 (permalink)  
Старый 26.05.2017, 21:01
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Сообщение от laimas
получить основные данные и данные дополнительные чего-то, это совсем не означает, что нужно делать кучу отдельных запросов к БД
Предполагаю что тут ситуация при которой frontend разработчк не имеет доступа к backend части. Результат - необходимость извращаться с регулярками.
Ответить с цитированием
  #14 (permalink)  
Старый 26.05.2017, 21:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от SV0L0CH
Предполагаю что тут ситуация при которой frontend разработчк не имеет доступа к backend части
А это как объяснить - <option value="1" > <?php print ($item1. ' (' .$score[0]['cost'].')'); ?> </option> ?
Ответить с цитированием
  #15 (permalink)  
Старый 26.05.2017, 21:05
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

laimas,
Ему дали код, но не разрешили править, чтобы ничего ВНЕЗАПНО не сломал
Ответить с цитированием
  #16 (permalink)  
Старый 26.05.2017, 21:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от LaedaSt
Так я сюда и не учить кого-то пришел, а учиться
Так а я о чем? Учится, значит учится грамотно проектировать БД, а это 99% успешного веб приложения. Будет понимание того, как оптимально хранить данные в БД, придет и понимание того, как можно оптимально эти данные и на странице представлять.

Вы по сути сделали следующее (пусть считаем, что с базой все ОК) - взяли и сознательно все смешали в кучу, а затем костылями пытаетесь выудить в ней нужное.

Вот вы можете ответить на вопрос - почему ваши две опции имеют value="1". Что такое 1?

PS. NaN, потому что, как я уже говорил, value="1" не есть число, это строка в которой 1 написано. То же самое и с возвратом по шаблону - вернется не число, а строка. Чтобы она стало числом нужно parseInt()
Ответить с цитированием
  #17 (permalink)  
Старый 26.05.2017, 21:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

И да, вернитесь к серверной стороне. К чему "нужно еще и после селекта делать отдельный запрос с фильтром по выбранному value" не понятно, а я говорю о грамотном представлении данных на клиенте.

<option value="1" data-price="<?=$score[0]['cost']?>"> <?=$item1 . ' (' . $score[0]['cost'] . ')'?> </option>


Так разве есть проблемы с выводом?
Ответить с цитированием
  #18 (permalink)  
Старый 26.05.2017, 21:33
Новичок на форуме
Отправить личное сообщение для LaedaSt Посмотреть профиль Найти все сообщения от LaedaSt
 
Регистрация: 26.05.2017
Сообщений: 7

Сообщение от laimas Посмотреть сообщение
Вот вы можете ответить на вопрос - почему ваши две опции имеют value="1". Что такое 1?
Потому что это два value от двух разных селектов. По сути, номер это выбора в селекте. 1...n
Цитата:
PS. NaN, потому что, как я уже говорил, value="1" не есть число, это строка в которой 1 написано. То же самое и с возвратом по шаблону - вернется не число, а строка. Чтобы она стало числом нужно parseInt()
Я применяю .match не к value, а к text. И пусть бы эти 1, 20, 100500 будут строками, а не числами. Мне их записать надо.

Сообщение от laimas Посмотреть сообщение
И да, вернитесь к серверной стороне. К чему "нужно еще и после селекта делать отдельный запрос с фильтром по выбранному value" не понятно, а я говорю о грамотном представлении данных на клиенте.

<option value="1" data-price="<?=$score[0]['cost']?>"> <?=$item1 . ' (' . $score[0]['cost'] . ')'?> </option>


Так разве есть проблемы с выводом?
Вероятно, так тоже сработает. Но сейчас на странице около 17 опций на 5 селектов. Будет больше. В каждом отдельно прописывать
data-price="<?=$score[0]['cost']?>"


будет оптимальней рег.выражений?
Ответить с цитированием
  #19 (permalink)  
Старый 26.05.2017, 21:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от LaedaSt
Потому что это два value от двух разных селектов. По сути, номер это выбора в селекте. 1...n
А выбор пользователя ведь нужен не ему, а серверу, так ведь? А чем должен оперировать сервер? Уж точно не результатом на на клиенте, как 20+30+.... Сервер должен ведать ценами, он должен считать сам, а для этого он должен получать в качестве value полей формы не абстрактные 1, 2, 3, .... а идентификаторы товара, либо его характеристик, либо иное, но то, что определяется уникальным значением этого в базе. Всякие расчеты на клиенте, это сугубо сервис для пользователя, тем более когда речь идет о деньгах.

Сообщение от LaedaSt
И пусть бы эти 1, 20, 100500 будут строками, а не числами.
Нельзя сложить строки, результатом будет строка, либо NaN.

Сообщение от LaedaSt
будет оптимальней рег.выражений?
Да.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Две функции не хотят работать в одном файле aDiVaNToS jQuery 17 30.06.2012 18:20
2 цикла не хотят работать одновремено TanTaL91 Общие вопросы Javascript 0 13.06.2010 11:23