Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/163: Рейтинг темы: голосов - 163, средняя оценка - 4.89
 Аватар для Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91

Ajax запросы в БД mysql

17.03.2014, 03:28. Показов 33206. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые форумчане, прошу помощи, т.к. сам не разбираюсь особо, да и оно мне как-то не очень пока что.
Вообщем есть мелкий локальный сайт на php и таблица в БД на mysql.
Соотвественно БД localhost, название таблицы xls
Таблица вида:
id name surname

Нужно скриптом делать запрос на добавление данных и вывод данных по id.

Если что-то не правильно сказал или написал, прошу прощения.
Заранее благодарен за помощь.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2014, 03:28
Ответы с готовыми решениями:

Ajax отправка данных из формы в базу mysql и вывод из базы mysql
$(function() { $('#chat_submit').click(function(e) { e.preventDefault(); var chat_name =...

Ajax запросы
Всем добрый день не могу понять как посылать правильно запросы серверу Вот содержимое файла index.html <!DOCTYPE html PUBLIC...

Запросы AJAX
Добрый день) Нужна помощь. На странице есть два поля ввода и кнопка-переключатель знаков "+" и "-" (при нажатии)....

21
29 / 29 / 11
Регистрация: 26.07.2013
Сообщений: 160
17.03.2014, 07:55
Лучше не используйте ajax для работы со скриптом, который добавляет и выводит данные из БД.
Потому что любой человек может зайти в консоль хрома и выполнить эту функцию и отправить в БД ложные данные или с помощью SQL инъекции их вывести.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
17.03.2014, 12:00
Цитата Сообщение от Avery007 Посмотреть сообщение
Лучше не используйте ajax для работы со скриптом, который добавляет и выводит данные из БД.
Глупости говорите, сударь.
Vihell, GET/POST запросы, сделанные через ajax, обрабатываются на сервере так же, как и запросы сделанные традиционными способами. Покажу вам простой пример.
HTML5 Скопировано
1
2
<a href="" class="articles" data-id="1">Статья 1</a>
<a href="" class="articles" data-id="2">Статья 2</a>
JavaScript Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(function(){
    $('.articles').on('click', function(){
        var artId = $(this).data('id'); // id статьи в базе данных
        $.ajax({
            url: 'path/to/handler.php', // путь к обработчику
            type: 'POST', // метод передачи данных
            dataType: 'json', // формат данных ожидаемых в ответе
            data: {article_id: artId}, // передаваемые данные {ключ1 : значение1, ключ2 : значение2}
            success: function(data){ // в случае удачного завершения запроса к серверу
                // в переменной data - ответ сервера
                if(data){
                    $('#output').html(data); // выводим статью в нужный блок
                }
            }
        });
    });
});
PHP Скопировано
1
2
3
4
5
6
7
if(!empty($_POST['article_id'])) $article_id = (int)$_POST['article_id'];
if(isset($article_id)) {
   // делаем запрос в БД с выборкой нужной статьи
   // и отправляем данные ответом или false, если статьи с указанным id не найдено
   echo json_encode($article_data);
   exit;
}
И главное помнить: "Никогда и ни при каких условиях, не верить данным, приходящим с клиента". Это касается как ajax-запросов, так и данным отправленным из форм или get-запросом. Как защитится - тема отдельная, но советую, как минимум, использовать PDO или MySQLi, знать какой типа данных должен быть и приводить данные к этому типу в добровольно принудительном порядке, экранировать данные, если используете устаревшее расширение для работы с БД (mysl_*), преобразовывать специальные символы в HTML-сущности и т.д.
3
 Аватар для Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
17.03.2014, 13:23  [ТС]
Цитата Сообщение от Avery007 Посмотреть сообщение
учше не используйте ajax для работы со скриптом, который добавляет и выводит данные из БД.
мне это нужно просто 1 раз показать что оно работает и всё, для отчета по практике. У меня просто нету времени разбираться в этом.

Lazy_Den
Извини если я буду говорить глупости.
Цитата Сообщение от Lazy_Den Посмотреть сообщение
url: 'path/to/handler.php', // путь к обработчику
что это должен быть за файл? с самим скриптом или как?

Помоги мне связать это все в кучу.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
17.03.2014, 13:59
Цитата Сообщение от Vihell Посмотреть сообщение
Помоги мне связать это все в кучу.
Если брать мой пример, то на одной странице те самые ссылки и JS. Второй файл - с серверной частью. Я назвал его handler.php, а у вас он может называться как угодно. В параметре url, вы просто указываете путь, где лежит этот файл.
0
 Аватар для Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
17.03.2014, 18:50  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
<a href="" class="articles" data-id="1">Статья 1</a>
<a href="" class="articles" data-id="2">Статья 2</a>
а это ссылки на что?

Добавлено через 14 минут
Я вот тут вот так сделал, вродь норм, но нужно вводить id столбца, а мне нужно что бы оно само знало какой столбец я ввожу.
или это совсем не то?

PHP Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php header('Content-Type: text/html; charset=utf8');
$db_host='localhost';// ваш адрес где находится, хостится ваша база данных
$db_name='xls';// Имя базы данных с которой вы хотите работать, так как их может быть множество
$db_login='root';// логин доступ к базе данных
$db_pass='';// пароль доступа к базе данных
@mysql_connect($db_host,$db_login,$db_pass);// устанавливаем связь с сервером
@mysql_select_db($db_name);// переключаемся на нужную нам базу данных
?>
 
<?php   echo '<form action="" method="post">'; $res = mysql_query("SHOW TABLES FROM ".xls." ;"); if (!$res) { echo 'Ошибка при выполнении запроса: ' . mysql_error(); exit; } ?> Таблица: <select name="tableq"> 
<?php while ($row = mysql_fetch_assoc($res)) { foreach ($row as $key => $value) { echo '<option value="'.$value.'">'.$value.'</option>'; }   } ?> </select>  
<?php echo '<p>введите столбец:</p> введите столбец <input type="text" name="whereq" >'; echo ' введите значение <input type="text" name="likeq" >';
 
 echo '<br /><input type="submit" value="Выполнить"><br />'; echo "</form>";     
//<?php echo '<p>Условие (необязательно):</p> Номер декларації <input type="text" name="id" >'; echo ' або ПІБ <input type="text" name="name" >';   echo '<br /><input type="submit" value="Выполнить"><br />'; echo "</form>";  
//мы передаем локальную переменную окружения $_POST['tableq'] и тут же проверяем ее на существование
IF (isset($_POST['tableq'])) { $result = mysql_query("SHOW COLUMNS FROM ".$_POST['tableq']." "); if (!$result) { echo 'Ошибка при выполнении запроса: ' . mysql_error(); exit; } if (mysql_num_rows($result) > 0) { $nums=mysql_num_rows($result); echo "В таблице ".$_POST['tableq']." : "; while ($row = mysql_fetch_assoc($result)) { foreach ($row as $key => $value) { if ($key == 'Field') { $value .= ", "; $vals = $vals.$value; $count++;     } }     } }     echo "<u>".$count. " столбцов "; echo $vals = substr($vals , 0, strlen($vals)-2 )."</u><br />\n"; }
//Выводить будем результаты построчно, а заодно проверим и $_POST['whereq'] и $_POST['likeq'], а если условие задано не будет, то выведем все данные из таблицы: 
 
if (!empty($_POST['whereq']) && !empty($_POST['likeq']) ) { $result = mysql_query("SELECT * FROM ".$_POST['tableq']." WHERE ".($_POST['whereq'])." LIKE '%".($_POST['likeq'])."%' ");    } else { $result = mysql_query("SELECT * FROM `out_xls`"); } while ($row = mysql_fetch_row($result)) { for ($i = 0; $i < $count; $i++) { echo " {$row[$i]} | \n"; if ($i==$count-1) echo "<br />\n"; } }   
 
 
?>
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
17.03.2014, 19:06
Цитата Сообщение от Vihell Посмотреть сообщение
а это ссылки на что?
Это ссылки примера. Если бы я генерировал список статей, то вытащил бы из БД id статей и их названия. Потом бы в цикле делал примерно следующее:
PHP Скопировано
1
2
3
while($res = $row->fetch()){
    echo '<a data-id="'.$row['id'].'">"'.$row['title'].'"</a>';
}
В атрибут "data-id" автоматом подставлялся id каждой статьи и его же использовал в ajax-запросе.
А к чему ваш код и что я там должен найти - не понимаю.
1
 Аватар для Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
17.03.2014, 22:18  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
А к чему ваш код и что я там должен найти - не понимаю.
я просто показал что у меня есть...

Добавлено через 3 часа 5 минут
Вообщем разобрался почти...
Как правильно дописать что бы если вводилось не правильное значение то выбивало бы ошибку?
db.php это подключение к БД.
PHP Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php 
    
    $search = $_POST['search'];
    $search = htmlspecialchars($search);
    
    if($search == '')
        exit("Начните вводить запрос");
       
    include 'db.php';
    
    $result = mysql_query("SELECT * FROM `out_xls` WHERE `id` = $search");
if (!$result) {
    echo 'Ошибка запроса: ' . mysql_error();
    exit;
}
  $row = mysql_fetch_row($result);
  echo $row[0]; // id
  echo $row[1]; // name
  echo $row[2]; // name2
  echo $row[3]; // name3
  echo $row[4]; // name3
 
?>
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
17.03.2014, 22:28
Цитата Сообщение от Vihell Посмотреть сообщение
Как правильно дописать что бы если вводилось не правильное значение то выбивало бы ошибку?
Какое значение? Поставьте себя на место отвечающего. Что можно понять из вашего вопроса?
0
 Аватар для Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
18.03.2014, 01:46  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Какое значение? Поставьте себя на место отвечающего. Что можно понять из вашего вопроса?
Ну водишь если вводишь номер которого нет в БД или буквы то выдавало сообщение что "Неверный запрос"
Прости если что не так.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
18.03.2014, 11:55
Цитата Сообщение от Vihell Посмотреть сообщение
если вводишь номер которого нет в БД или буквы то выдавало сообщение что "Неверный запрос"
Если вы используете мою схему, которую я вам показал выше, то так:
PHP Скопировано
1
2
3
4
5
$result = mysql_query("SELECT * FROM `out_xls` WHERE `id` = $search");
if (!$result) {
    echo json_encode(false);
    exit;
}
А в JS добавить:
JavaScript Скопировано
1
2
3
4
5
6
7
8
9
10
$.ajax({
    /* ... */
    success: function(data){ 
        if(data){
            $('#output').html(data); // выводим статью в нужный блок
        } else {
            $('#output').html('<p>Хьюстон! У нас проблемы!</p>'); // сообщение об ошибке
        }
    }
});
1
 Аватар для Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
18.03.2014, 13:29  [ТС]
к сожелению при подстановке у меня поиск перестает работать.
проблема дето в скрипте...

JavaScript Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
            $(function() {
                $("#search").keyup(function(){
                    var search = $("#search").val();
 
                         $.ajax({
                            type: "POST",
                            url: "search.php",
                            data: {"search": search},
                            cache: false,                       
                            success: function(response){
                                        $("#result").html(response);
                                     }
                         });
                         return false;
                });
            });
        </script>
это мой рабочий, подставляю и нифига не получается

Добавлено через 7 минут
JavaScript Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script>
            $(function() {
                $("#search").keyup(function(){
                    var search = $("#search").val();
 
                         $.ajax({
                            type: "POST",
                            url: "search.php",
                            data: {"search": search},
                            cache: false,                       
                            success: function(response){ 
        if(response){
            $(#result).html(response); // выводим статью в нужный блок
        } else {
            $(#result).html('<p>Хьюстон! У нас проблемы!</p>'); // сообщение об ошибке
        }
    }
                         });
                         return false;
                });
            });
        </script>
и поиск перестает работать

Добавлено через 2 минуты
И вот такой код самого пхп
PHP Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 <?php 
    
    $search = $_POST['search'];
    $search = htmlspecialchars($search);
    
    if($search == '')
        exit("Начните вводить запрос");
       
    include 'db.php';
    
 $result = mysql_query("SELECT * FROM `out_xls` WHERE `id` = $search");
if (!$result) {
    echo json_encode(false);
    exit;
}
  $row = mysql_fetch_row($result);
  //echo $row[0];  // id
 // echo $row[1]; // name
  //echo $row[2];  // name2
 // echo $row[3];  // name3
 // echo $row[4];  // name3
  
  echo "Номер декларації : ",$row[0],";"," ПІБ : ",$row[1],";"," Звідки : ",$row[2],";"," Куди : ",$row[3],";"," Статус вантажу : ",$row[4],"." ;
  
  
 
?>
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
18.03.2014, 13:57
Цитата Сообщение от Vihell Посмотреть сообщение
и поиск перестает работать
Исправьте для начала ошибки: $(#result) - селектор в кавычки $('#result')

Добавлено через 3 минуты
P.S. Кстати, вы в курсе, что существуют уже готовые решения поиска с динамическим выводом результатов? Autocomplete
1
 Аватар для Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
18.03.2014, 15:02  [ТС]
Lazy_Den, Большое тебе спасибо
все получилось на окей.
Если не сложно, подскажи как реализовать в одной форме 2 кнопки, которые будут отвечать за добавление строки в таблицу и редактирование её.
И как правильно реализовать проверку или в форме заполнены поля
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
18.03.2014, 15:24
Цитата Сообщение от Vihell Посмотреть сообщение
как реализовать в одной форме 2 кнопки, которые будут отвечать за добавление строки в таблицу и редактирование её
Про это подробнее и с примерами.
Цитата Сообщение от Vihell Посмотреть сообщение
И как правильно реализовать проверку или в форме заполнены поля
HTML5 Скопировано
1
2
3
4
<form id="my_form">
    <input type="text" name="field" id="my_field">
    <input type="submit" value="Погнали!">
</form>
JavaScript Скопировано
1
2
3
4
5
6
$('#my_form').on('submit', function(e){
    if( $.trim( $('#my_field').val() ) === '' ){
        e.preventDefault();
        alert('Ахтунг! А поле не заполнено!');
    }
});
1
 Аватар для Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
18.03.2014, 16:55  [ТС]
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Про это подробнее и с примерами.
Ну тобишь мне нужно сделать 2 пхп скрипта, один на внесение данных в таблицу БД, а второй на редактирование существующей записи в БД, я вот думаю как бы их в одну форму всунуть, только сделать 2 книпочки под ней, одна добавляет а вторая заменяет, если не ошибаюсь запросы которые они будут делать в БД типа insert и replace
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
18.03.2014, 17:02
Цитата Сообщение от Vihell Посмотреть сообщение
сделать 2 пхп скрипта, один на внесение данных в таблицу БД, а второй на редактирование существующей записи в БД
Во-первых, если вы редактируете запись с последующим апдейтом, то нужно иметь какой-то ключ, по которому и обновлять эту запись в БД. Соответственно, в форме может быть скрытое поле input, где его значение - это id записи, или же оно пустое, что говорит о новой записи. Во-вторых, запрос может быть и один: INSERT .... ON DUPLICATE KEY UPDATE .... Если у вас в таблице (что наверняка) есть или первичный ключ, или уникальный, то новая запись будет инсертится, а существующая - обновляться. Но это уже надо смотреть по обстоятельствам: использовать данную конструкцию запроса или нет.
1
 Аватар для Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
18.03.2014, 17:41  [ТС]
Lazy_Den, я вроде бы там разобрался, только подскажи что значит вот такая кака:
Deprecated: Function mysql_list_tables() is deprecated in C:\Web\OpenServer\domains\mpanel\main.ph p on line 56
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
18.03.2014, 18:16
Цитата Сообщение от Vihell Посмотреть сообщение
что значит вот такая кака
Deprecated - с англ., в данном случае, "Устаревший". Вам тонко намекают о том, что функцию mysql_list_tables() не рекомендуется использовать. Да и вообще, я бы вам советовал забыть о всех функциях аля mysql_*. Они все устаревшие и будет удалено в будущем.
0
 Аватар для Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
18.03.2014, 18:22  [ТС]
Lazy_Den, Честно сказать, это все счастье проживет максимум до 29 числа данного месяца.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.03.2014, 18:22
Помогаю со студенческими работами здесь

Ajax запросы в Symfony 2
Здравствуйте. Как в Symfony правильно использовать AJAX? Тоесть, как мне асинхронно сделать запрос к определенному Action-у...

Периодические ajax запросы
Добрый вечер. подскажите а как можно организовать периодическое обновление страницы. каждых 5 секунд. через ajax Запросы?

Как отлаживать ajax запросы?
Раньше в консоли firefox можно было посмотреть и параметры ajax запроса, и ответ сервера, а в новых версиях, насколько я вижу, подобная...

Ajax запросы через SQL
Здравствуйте! Помогите плииз! Взялся за изучение XML. Прочел, ознакомился, рассматривал пару примеров, но не мог разобраться в...

POST AJAX запросы bottlepy
Добрый день всем, кто может подсказать каким образом можно разобрать данный запрос на web-framework Bottlepy, доки все перерыл, но кроме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Агрегаты и сущности в DDD микросервисах
Javaican 10.04.2025
Разработка современных программных систем часто приводит на распутье: монолит или микросервисы? Даже при выборе микросервисной архитектуры многие команды сталкиваются с проблемой правильного. . .
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
Линейное решение нелинейной задачи. Формулы от LM по моему решению пока не проверял. В итоговой её формуле видно её заблуждение.
Hrethgir 10.04.2025
В продолжение Эта LM дала ответ похожий на нормальный. В комментриях мой комментарий - похоже она ошиблась с выведением итоговой формулы, но остальные проверю. Assistant qwen2. 5-14b-instruct . . . .
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
Линейное решение не линейной задачи (емкость вычислений в сравнении с традиционными решениями пока не определена).
Hrethgir 10.04.2025
В рамках предстоящих вычислений пришлось (да, я тоже знаю про корень числа, и про степеня, и прочие теоремы, но. . . ) найти способ нахождения отношения двух углов. . . .
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
Vue SFC компонент на PHP с Fusion
Jason-Webb 09.04.2025
PHP на сервере и JavaScript на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
TypeScript vs JavaScript: Отличия и когда что использовать
Reangularity 09.04.2025
JavaScript появился в 1995 году как творение Брендана Эйха и быстро стал основой интерактивности в вебе. За свою историю он прошел путь от простого языка для манипуляций с DOM до полноценной. . .
Подключение Kafka к Elasticsearch
Codd 09.04.2025
Apache Kafka и Elasticsearch — две мощные технологии, которые при совместном использовании создают эффективную платформу для обработки и анализа данных в реальном времени. Kafka, выступая в роли. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер