На яваскрипт можно добавить только в локальную базу - localStorage.
Цитата:
Ну как вы проверите что данные можно записать? Ну типа проверить не пусто ли? А если можно записать пусто в это поле? Не обязательное. Где хранятся данные какое поле обязательное, какое файловое, какое дата, какое число и все такоэ? Так что чем у программиста больше опыта, тем меньше он пишет за других по нелепым ТЗ. И соотв наоборот - чем меньше опыта, тем больше воображения что любую бнопню можно заколхозить. Чтоб жизнь малиной не казалась https://en.wikipedia.org/wiki/Active_record_pattern А этот ваш аякс - всего лишь транспорт. Сам по себе он умеет только передавать туда запрос и получать оттуда ответ. Это - элементарно. А все остальное не по теме. |
Я вам пытался объяснить что если
Цитата:
Но вы зачем-то захотели смотреть как это сделать на PHP. Странно... |
Вроде разобрался.
Как я понял сам JS не предназначен для поставленной мной задачи. А делается на HTML + PHP. Изначально я не постил свой PHP код, чтобы посмотреть точку зрения опытного программиста на этот вопрос. Чтобы не быть голословным выкладываю свой код: <?php function db_connect() { // Подключение к серверу баз данных $result = new mysqli('localhost', 'database', 'password', 'user'); if (!$result) echo 'Невозможно подключиться к серверу баз данных.<br>'; else return $result; } function add_item($name, $description) { $conn = db_connect(); $query = "insert into itemsbase values ('$name', '$description')"; if (!$conn->query($query)) { echo "Не удается добавить запись в базу данных.<br>"; return false; } else { echo "Запись в базу данных добавлена.<br>"; } return true; } if (isset($_POST['name'])) { $name = $_POST['name']; if (isset($_POST['description'])) $description = $_POST['description']; else $description = ""; add_item($name, $description); } ?> <form name="itemform" action="item.php" method="post"> Название: <input type="text" name="name"> Описание: <input type="text" name="description"> <input type="submit" value="Добавить"> </form> Код:
CREATE TABLE IF NOT EXISTS `itemsbase` ( ЗЫ Спасибо всем за комментарии по теме и проявленное терпение. |
Нельзя так записывать в базу, данные извне обязательно обработаны перед записью в базу.
|
У меня обрабатываются. В теме упрощенный пример.
|
Ну обработка не такая и сложная, не сотни строк кода, а значит, если видим этот код приведенный, то вывод соответствующий - наличие дыр.
|
А как правильно обработать данные для этого примера? Можно дописать код для наглядности?
|
mysql_real_escape_string в данном случае. Если предполагается прием данных не одного поля, то лучше так:
array_walk_recursive($_POST, function(&$v) { return '"' . mysql_real_escape_string(stripslashes(trim($v))) . '"'; }); Можно проверять тип, и для значений is_numeric() приводить данные к integer, а экранирование и кавычки для строк. А вообще надо переходить на PDO, ну или mysqli, где эти задачи (экранирование) решаются на уровне драйвера. $description = $_POST['description']; else $description = ""; - это бесполезная операция. |
Цитата:
Любой программист который соблазнился простой лапшевидного кода, утонет в этой лапше как только истечет время готовки. |
Теперь в чем разница обычного и аякс-запроса:
<?php /* тут пропущены функции коннекта и записи в бд */ class SomeClass extends ClassGettersWithSetters { protected function get_ajax(){ /* любым способом проверяется что это аякс например по заголовку - канонично по ключу в урле по спец-полю по кукам ниже - по заголовку и факт кешируется в проперти объекта */ return $this->_d['ajax']=isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strcasecmp($_SERVER['HTTP_X_REQUESTED_WITH'],'xmlhttprequest')==0; } } if (isset($_POST['name'])) { $name = $_POST['name']; if (isset($_POST['description'])) $description = $_POST['description']; else $description = ""; add_item($name, $description); /* То есть все как обычно до этой развилки: если аякс - отпостить в браузер слово Saved и сдохнуть, а если не аякс то пропустить и нарисовать форму */ if($this->ajax) exit('Saved'); } ?> <form name="itemform" action="item.php" method="post"> Название: <input type="text" name="name"> Описание: <input type="text" name="description"> <input type="submit" value="Добавить"> </form> |
Часовой пояс GMT +3, время: 16:12. |