Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2019, 16:50
Интересующийся
Отправить личное сообщение для kda7979 Посмотреть профиль Найти все сообщения от kda7979
 
Регистрация: 07.04.2019
Сообщений: 17

Работа с базой данных
Коллеги!

есть база данных вида:
| х | y | z |
нужно записывать туда данные по одной строке которые передаются в виде массива S:
S = [x,y,z]
а так же вытаскивать оттуда все строки которые содержат конкретное значение какого-либо поля (значение поля приходит в виде переменной var z = 0) так же массивом в виде:
SS[i] = [x,y,z]

Хотелось бы услышать можно ли это реализовать при помощи JS (ajax) и, если есть возможность, примеры аналогичных вещей для понимания. Если реализация на JS невозможна, то прошу помощи спецов по написанию данной процедуры на PHP но так чтобы я мог на JS передавать и получать необходимые данные.
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2019, 17:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от kda7979
есть база данных вида:
| х | y | z |
Какая база? Есть много баз данных, базы имеют таблицы, таблица может иметь поля (колонки таблицы в обычном понимании), а база не может иметь такого вида. То что представлено, это поля таблицы?
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2019, 17:30
Интересующийся
Отправить личное сообщение для kda7979 Посмотреть профиль Найти все сообщения от kda7979
 
Регистрация: 07.04.2019
Сообщений: 17

База данных MySQL - три столбца с именами X, Y и Z.
Тип данных - как цифры так и текст, возможно комбинирование.
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2019, 17:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от kda7979
Тип данных - как цифры так и текст, возможно комбинирование.
Комбинирование в чем? Выражайтесь точно, так как тип поля INT никоим образом не может принять комбинацию integer и string.

Данные на сервер как [x,y,z] можно передать как json, декодируя их, фильтруя, после чего при отсутствии ошибок пишутся в базу. А кто будет производить к ней запрос, это зависит от языка на сервере. Это может быть и JS, если на сервере Node.js, может и РНР, может и иной язык. А у вас какой используется?
Ответить с цитированием
  #5 (permalink)  
Старый 07.04.2019, 17:49
Интересующийся
Отправить личное сообщение для kda7979 Посмотреть профиль Найти все сообщения от kda7979
 
Регистрация: 07.04.2019
Сообщений: 17

Сообщение от laimas Посмотреть сообщение
Комбинирование в чем? Выражайтесь точно, так как тип поля INT никоим образом не может принять комбинацию integer и string.

Данные на сервер как [x,y,z] можно передать как json, декодируя их, фильтруя, после чего при отсутствии ошибок пишутся в базу. А кто будет производить к ней запрос, это зависит от языка на сервере. Это может быть и JS, если на сервере Node.js, может и РНР, может и иной язык. А у вас какой используется?
пусть будет тип поля INT без остальных вариантов

по поводу сервера - обычный бесплатный хостинг, насколько я понимаю на такие Node.js установить невозможно.
в итоге я должен передавать json-строку какому-то файлу на PHP и как-то так же получать обратно нужный массив?
PHP-код в самом простом варианте будет очень сложный для реализации моей хотелки?
Ответить с цитированием
  #6 (permalink)  
Старый 07.04.2019, 18:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от kda7979
PHP-код в самом простом варианте будет очень сложный для реализации моей хотелки?
Как сказать - не так страшен черт, как его малютки. Так и с кодом, ничего в сущности сложного не будет, если понимать его. Но мало передать данные на сервер, данные сервер обязательно должен фильтровать прежде чем их писать в базу. То есть, в прямом смысле данные в таком чистом виде [x,y,z], это индексированный массив, а это значит, что сервер должен знать, что индекс 0 массива содержит данные для поля А таблицы, индекс 1 для поля В и т.д. Другими словами серверу нужно еще знать каким образом такие данные сопоставить с полями таблицы.

Далее зная типы полей таблицы, проверить соответствие типов, если ожидаются integer, значит проверка этого типа. Кроме этого, данные могут быть обязательными, а могут и нет, то есть, к примеру, если какое либо из полей формы на обязательно к заполнению, то оно может прийти на сервер с пустым значением. А если это передается как json, то в случае индексного массива это значение пусть и пустое, но должно быть, в противном случае соответствие данных полям таблицы может быть нарушено.

Все это сервер должен проверять, и в случае ошибок возвращать их клиенту. То есть подразумевается не просто передача данных клиентом серверу, а диалог клиент-сервер.

SS[i] = [x,y,z] - где SS[i] может означать, что сервер получит многомерный массив, в этом случае выгоднее подготовить тело запроса многострочной вставки, а затем выполнить один запрос в базу.

Вы действительно описали "хотелку", нет конкретного кода клиентского, по которому можно было бы судить что за данные, откуда и как передаются. Так что конкретного что-то сказать сложно. Однозначно можно сказать - все это выполнимо и не так страшно как кажется.
Ответить с цитированием
  #7 (permalink)  
Старый 07.04.2019, 18:17
Интересующийся
Отправить личное сообщение для kda7979 Посмотреть профиль Найти все сообщения от kda7979
 
Регистрация: 07.04.2019
Сообщений: 17

не совсем так...
я передаю не массив, а строчку. В строке будут три параметра которые я отсортирую и проверю на стороне клиента. То есть полученную строку можно будет непосредственно сразу добавлять в базу данных "как есть"

так же в случае запроса я передаю название поля и параметр поля (например Z=9) и хочу получить уже массив всех строк из базы (в виде SS[i]=[x,y,z]) где параметр z равняется 9 (к примеру)
Ответить с цитированием
  #8 (permalink)  
Старый 07.04.2019, 18:22
Интересующийся
Отправить личное сообщение для kda7979 Посмотреть профиль Найти все сообщения от kda7979
 
Регистрация: 07.04.2019
Сообщений: 17

как я понял из различных примеров алгоритм должен быть такой:
формирование строки в JS - передача строки в PHP - из PHP обращение к базе данных - из базы результат в PHP - из PHP в JS...
вот мне б примерчик как в PHP закинуть строчку и получить результат оттуда))
и если не слишком муторно и сложно то код самого этого PHP в самой простой реализации
Ответить с цитированием
  #9 (permalink)  
Старый 07.04.2019, 18:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от kda7979
В строке будут три параметра которые я отсортирую и проверю на стороне клиента. То есть полученную строку можно будет непосредственно сразу добавлять в базу данных "как есть"
Выбивайте эту "дурь" из головы сразу. Все что проверяется на клиенте, это так, забава ради клиента, дабы предварить бесполезные запросы (если есть ошибки). То есть это чисто сервис для клиента. А серверу на все эти проверки наплевать, он просто обязан проверять данные извне, в противном случае вас могут ожидать большие неприятности, от нарушения целостности данных, до взлома.

Сообщение от kda7979
я передаю не массив, а строчку.
Если вы будете передавать данные на сервер как упакованные строки, то это будет полный ахтунг. Но если строка, это json, то вполне можно. Только если передаются данные ассоциативные (ключ => значение), то это будет объект на клиенте, то есть не [x,y,z], а {x: var, y: var, z: var}.

Сообщение от kda7979
как я понял из различных примеров алгоритм должен быть такой:
формирование строки в JS - передача строки в PHP - из PHP обращение к базе данных - из базы результат в PHP - из PHP в JS...
Это не верное представление, читайте выше. Всегда помните о том, что вы пишите веб приложение, то есть будет многопользовательский доступ, и это не обязательно "порядочный клиент" может быть. Так что все ваши представления о проверках на клиенте, которым должен доверять сервер, выполняя любую прихоть клиентских запросов, это наивно.
Ответить с цитированием
  #10 (permalink)  
Старый 07.04.2019, 18:54
Интересующийся
Отправить личное сообщение для kda7979 Посмотреть профиль Найти все сообщения от kda7979
 
Регистрация: 07.04.2019
Сообщений: 17

Сообщение от laimas Посмотреть сообщение
Только если передаются данные ассоциативные (ключ => значение), то это будет объект на клиенте, то есть не [x,y,z], а {x: var, y: var, z: var}.
абсолютно не принципиально в каком виде передавать данные. На клиенте могу преобразовать их вид в любой удобный для сервера. Так что если это упростит отработку запроса, то могу данные передавать объектом.

Сообщение от laimas Посмотреть сообщение
Это не верное представление, читайте выше. Всегда помните о том, что вы пишите веб приложение, то есть будет многопользовательский доступ, и это не обязательно "порядочный клиент" может быть. Так что все ваши представления о проверках на клиенте, которым должен доверять сервер, выполняя любую прихоть клиентских запросов, это наивно.
Тут согласен, но я PHP не знаю совсем, поэтому нагружать то что непонятно дополнительными функциями боязно)))
Хотя проверка тут довольно примитивная и скорее всего реализуется в несколько строчек?)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в angularjs соединиться с базой данных (на примере todo-list ниже)? okuznetsov1 Angular.js 3 18.01.2017 15:26
Работа с базой данных через javascript KupueIIIKo Общие вопросы Javascript 24 26.07.2015 18:05
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Работа с приёмом данных Ajax kupidonkhv AJAX и COMET 1 16.12.2011 15:16
Обновление элемента страницы с базой данных shaltay AJAX и COMET 2 20.05.2011 12:56