Есть код на JS, нужно заставить его работать с базой данных MySQL. Что есть на JS: массив цифровых данных (год, месяц, день), пользователь на конкретный день может повесить комментарий, при этом комментарий может быть только один от любого из пользователей. регистрации в программе нет, пользователи не идентифицируются. Логика программы: Пользователь выбирает год и месяц - идёт загрузка с базы всех уже записанных туда дней выбранного месяца и года. На стороне пользователя выбираю не занятые комментарием дни и показываю ему. При выборе конкретного свободного дня он пишет комментарий и этот день уходит в базу на добавление с дополнительной проверкой не успел ли кто на мгновение раньше уже это сделать. Соответственно при следующем цикле этот день уже не показывается пользователю, так как он уже занят. Как я вижу: В MySQL создаю таблицу с полями G,M,D,C на JS вешаю два события. - первое передаёт серверу данные G,M - сервер ищет в базе совпадения и в ответ отдаёт массив B(i)=[G,M,D,C] - второе передаёт серверу строку [G,M,D,C] - сервер проверяет нет ли записей по полям [G,M,D] и если нет то записывает в базу полученную строчку в ответ отдаёт информацию об успехе/сбое записи. Просьба: - подскажите пожалуйста достаточно ли в таблице этих полей или нужно её создавать иначе? - как лучше передать серверу данные по событиям (желательно пример) - как получить от сервера ответ по событиям (если сервер массив передать не может то в каком виде придёт вся отобранная информация) - если не сложно то как должен выглядеть серверный файл на PHP (скелетно, различные проверки на соответствие пришедших данных требуемым я сам буду добавлять) важно чтобы он правильно подключил базу, мог туда записать полученную строку и сделать выборку строк из базы по параметрам. Спасибо))
Достаточно, но назвать лучше year, month, day и comment Может передать массив. JSON, PHP-функция json_encode. Если без перезагрузки страницы, то способ один, называется ajax. А дальше ты выбираешь, либо на чистом JS возишься с XMLHttpRequest, в сети уйма примеров, https://learn.javascript.ru/ajax либо пользуешь библиотеки типа jQuery или axios, или ещё, их дофига, опять же есть по ним дока с примерами. Я предпочитаю путь с библиотеками PHP: $db = new mysqli("localhost", "user", "password", "database"); $db->set_charset("utf8"); // А дальше делаешь свои запросы https://secure.php.net/manual/ru/book.mysqli.php
Да, создаю таблицу в базе с полями year, month, day и comment На событии JS вешаю код вида: Код (Text): A = 2019; B = 4; C = 15; D = 'комментарий' function F() { $.ajax({ type: "POST", url: "BAZA.php", data: {"A": A, "B": B, "C": C, "D": D}, cache: false, success: function(response){ //здесь обработка отклика } }); return false; } В PHP получаю данные в виде: Код (Text): $A = $_POST['A']; $B = $_POST['B']; $C = $_POST['C']; $D = $_POST['D']; подключаюсь к базе Код (Text): $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base); теперь надо проверить как-то наличие в базе записи с параметрами $A,$B,$C какой командой это нужно делать? и если такой ещё нет, то добавляю запись в таблицу: Код (Text): $mysqli->query("INSERT INTO ".$db_table."(year, month, day, comment) VALUES ('$A','$B','$C','$D')"); и непонятно если я JS передам только два параметра : Код (Text): A = 2019; B = 4; function F() { $.ajax({ type: "POST", url: "BAZA.php", data: {"A": A, "B": B}, cache: false, success: function(response){ //здесь обработка отклика } }); return false; } как дать понять серверу (BAZA.php) что их добавлять не надо а по ним нужно сортировать и передавать совпадения по строкам?
О, кстати, ещё в базе можно создавать один столбец `date` с типом date, и хранить там все три компонента. Это эффективнее и создаёт возможности для выборок в будущем. Два пути даёт именно MySQL: 1. Запросить select-ом, и посмотреть, вернётся что-то или нет 2. Поставить на поля уникальный ключ, и вставлять командой insert ignore, которая не вставит данные, если уже есть данные в ключе. Пересказывать вам в постах руководство по MySQL никто не станет, надеюсь, вы понимаете
Такая информация очень быстро устаревает. Сможешь ли один постоянно поддерживать актуальные данные 45 000 орг.?