
07.04.2019, 16:50
|
Интересующийся
|
|
Регистрация: 07.04.2019
Сообщений: 17
|
|
Работа с базой данных
Коллеги!
есть база данных вида:
| х | y | z |
нужно записывать туда данные по одной строке которые передаются в виде массива S:
S = [x,y,z]
а так же вытаскивать оттуда все строки которые содержат конкретное значение какого-либо поля (значение поля приходит в виде переменной var z = 0) так же массивом в виде:
SS[i] = [x,y,z]
Хотелось бы услышать можно ли это реализовать при помощи JS (ajax) и, если есть возможность, примеры аналогичных вещей для понимания. Если реализация на JS невозможна, то прошу помощи спецов по написанию данной процедуры на PHP но так чтобы я мог на JS передавать и получать необходимые данные.
|
|

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

07.04.2019, 17:30
|
Интересующийся
|
|
Регистрация: 07.04.2019
Сообщений: 17
|
|
База данных MySQL - три столбца с именами X, Y и Z.
Тип данных - как цифры так и текст, возможно комбинирование.
|
|

07.04.2019, 17:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от kda7979
|
Тип данных - как цифры так и текст, возможно комбинирование.
|
Комбинирование в чем? Выражайтесь точно, так как тип поля INT никоим образом не может принять комбинацию integer и string.
Данные на сервер как [x,y,z] можно передать как json, декодируя их, фильтруя, после чего при отсутствии ошибок пишутся в базу. А кто будет производить к ней запрос, это зависит от языка на сервере. Это может быть и JS, если на сервере Node.js, может и РНР, может и иной язык. А у вас какой используется?
|
|

07.04.2019, 17:49
|
Интересующийся
|
|
Регистрация: 07.04.2019
Сообщений: 17
|
|
Сообщение от laimas
|
Комбинирование в чем? Выражайтесь точно, так как тип поля INT никоим образом не может принять комбинацию integer и string.
Данные на сервер как [x,y,z] можно передать как json, декодируя их, фильтруя, после чего при отсутствии ошибок пишутся в базу. А кто будет производить к ней запрос, это зависит от языка на сервере. Это может быть и JS, если на сервере Node.js, может и РНР, может и иной язык. А у вас какой используется?
|
пусть будет тип поля INT без остальных вариантов
по поводу сервера - обычный бесплатный хостинг, насколько я понимаю на такие Node.js установить невозможно.
в итоге я должен передавать json-строку какому-то файлу на PHP и как-то так же получать обратно нужный массив?
PHP-код в самом простом варианте будет очень сложный для реализации моей хотелки?
|
|

07.04.2019, 18:09
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от kda7979
|
PHP-код в самом простом варианте будет очень сложный для реализации моей хотелки?
|
Как сказать - не так страшен черт, как его малютки. Так и с кодом, ничего в сущности сложного не будет, если понимать его. Но мало передать данные на сервер, данные сервер обязательно должен фильтровать прежде чем их писать в базу. То есть, в прямом смысле данные в таком чистом виде [x,y,z], это индексированный массив, а это значит, что сервер должен знать, что индекс 0 массива содержит данные для поля А таблицы, индекс 1 для поля В и т.д. Другими словами серверу нужно еще знать каким образом такие данные сопоставить с полями таблицы.
Далее зная типы полей таблицы, проверить соответствие типов, если ожидаются integer, значит проверка этого типа. Кроме этого, данные могут быть обязательными, а могут и нет, то есть, к примеру, если какое либо из полей формы на обязательно к заполнению, то оно может прийти на сервер с пустым значением. А если это передается как json, то в случае индексного массива это значение пусть и пустое, но должно быть, в противном случае соответствие данных полям таблицы может быть нарушено.
Все это сервер должен проверять, и в случае ошибок возвращать их клиенту. То есть подразумевается не просто передача данных клиентом серверу, а диалог клиент-сервер.
SS[i] = [x,y,z] - где SS[i] может означать, что сервер получит многомерный массив, в этом случае выгоднее подготовить тело запроса многострочной вставки, а затем выполнить один запрос в базу.
Вы действительно описали "хотелку", нет конкретного кода клиентского, по которому можно было бы судить что за данные, откуда и как передаются. Так что конкретного что-то сказать сложно. Однозначно можно сказать - все это выполнимо и не так страшно как кажется.
|
|

07.04.2019, 18:17
|
Интересующийся
|
|
Регистрация: 07.04.2019
Сообщений: 17
|
|
не совсем так...
я передаю не массив, а строчку. В строке будут три параметра которые я отсортирую и проверю на стороне клиента. То есть полученную строку можно будет непосредственно сразу добавлять в базу данных "как есть"
так же в случае запроса я передаю название поля и параметр поля (например Z=9) и хочу получить уже массив всех строк из базы (в виде SS[i]=[x,y,z]) где параметр z равняется 9 (к примеру)
|
|

07.04.2019, 18:22
|
Интересующийся
|
|
Регистрация: 07.04.2019
Сообщений: 17
|
|
как я понял из различных примеров алгоритм должен быть такой:
формирование строки в JS - передача строки в PHP - из PHP обращение к базе данных - из базы результат в PHP - из PHP в JS...
вот мне б примерчик как в PHP закинуть строчку и получить результат оттуда))
и если не слишком муторно и сложно то код самого этого PHP в самой простой реализации
|
|

07.04.2019, 18:43
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от kda7979
|
В строке будут три параметра которые я отсортирую и проверю на стороне клиента. То есть полученную строку можно будет непосредственно сразу добавлять в базу данных "как есть"
|
Выбивайте эту "дурь" из головы сразу.  Все что проверяется на клиенте, это так, забава ради клиента, дабы предварить бесполезные запросы (если есть ошибки). То есть это чисто сервис для клиента. А серверу на все эти проверки наплевать, он просто обязан проверять данные извне, в противном случае вас могут ожидать большие неприятности, от нарушения целостности данных, до взлома.
Сообщение от kda7979
|
я передаю не массив, а строчку.
|
Если вы будете передавать данные на сервер как упакованные строки, то это будет полный ахтунг. Но если строка, это json, то вполне можно. Только если передаются данные ассоциативные (ключ => значение), то это будет объект на клиенте, то есть не [x,y,z], а {x: var, y: var, z: var}.
Сообщение от kda7979
|
как я понял из различных примеров алгоритм должен быть такой:
формирование строки в JS - передача строки в PHP - из PHP обращение к базе данных - из базы результат в PHP - из PHP в JS...
|
Это не верное представление, читайте выше. Всегда помните о том, что вы пишите веб приложение, то есть будет многопользовательский доступ, и это не обязательно "порядочный клиент" может быть. Так что все ваши представления о проверках на клиенте, которым должен доверять сервер, выполняя любую прихоть клиентских запросов, это наивно.
|
|

07.04.2019, 18:54
|
Интересующийся
|
|
Регистрация: 07.04.2019
Сообщений: 17
|
|
Сообщение от laimas
|
Только если передаются данные ассоциативные (ключ => значение), то это будет объект на клиенте, то есть не [x,y,z], а {x: var, y: var, z: var}.
|
абсолютно не принципиально в каком виде передавать данные. На клиенте могу преобразовать их вид в любой удобный для сервера. Так что если это упростит отработку запроса, то могу данные передавать объектом.
Сообщение от laimas
|
Это не верное представление, читайте выше. Всегда помните о том, что вы пишите веб приложение, то есть будет многопользовательский доступ, и это не обязательно "порядочный клиент" может быть. Так что все ваши представления о проверках на клиенте, которым должен доверять сервер, выполняя любую прихоть клиентских запросов, это наивно.
|
Тут согласен, но я PHP не знаю совсем, поэтому нагружать то что непонятно дополнительными функциями боязно)))
Хотя проверка тут довольно примитивная и скорее всего реализуется в несколько строчек?)
|
|
|
|