Форум программистов, компьютерный форум, киберфорум
Наши страницы
jQuery
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.74/47: Рейтинг темы: голосов - 47, средняя оценка - 4.74
Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
1

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

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

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

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

Если что-то не правильно сказал или написал, прошу прощения.
Заранее благодарен за помощь.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2014, 03:28
Ответы с готовыми решениями:

Запросы AJAX
Добрый день) Нужна помощь. На странице есть два поля ввода и...

Ajax запросы
Всем добрый день не могу понять как посылать правильно запросы серверу Вот...

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

Ajax запросы не работают в https
Добрый день. Работал все время на http и не замечал, что на https ajax...

Ajax запросы php в базу
здраствуйте чтото на чат похожее... на странице есть форма с кнопкой отправки...

21
Avery007
29 / 29 / 11
Регистрация: 26.07.2013
Сообщений: 160
17.03.2014, 07:55 2
Лучше не используйте ajax для работы со скриптом, который добавляет и выводит данные из БД.
Потому что любой человек может зайти в консоль хрома и выполнить эту функцию и отправить в БД ложные данные или с помощью SQL инъекции их вывести.
0
Lazy_Den
2947 / 2621 / 1322
Регистрация: 15.01.2014
Сообщений: 5,757
17.03.2014, 12:00 3
Цитата Сообщение от 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-сущности и т.д.
2
Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
17.03.2014, 13:23  [ТС] 4
Цитата Сообщение от Avery007 Посмотреть сообщение
учше не используйте ajax для работы со скриптом, который добавляет и выводит данные из БД.
мне это нужно просто 1 раз показать что оно работает и всё, для отчета по практике. У меня просто нету времени разбираться в этом.

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

Помоги мне связать это все в кучу.
0
Lazy_Den
2947 / 2621 / 1322
Регистрация: 15.01.2014
Сообщений: 5,757
17.03.2014, 13:59 5
Цитата Сообщение от Vihell Посмотреть сообщение
Помоги мне связать это все в кучу.
Если брать мой пример, то на одной странице те самые ссылки и JS. Второй файл - с серверной частью. Я назвал его handler.php, а у вас он может называться как угодно. В параметре url, вы просто указываете путь, где лежит этот файл.
0
Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
17.03.2014, 18:50  [ТС] 6
Цитата Сообщение от 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
2947 / 2621 / 1322
Регистрация: 15.01.2014
Сообщений: 5,757
17.03.2014, 19:06 7
Цитата Сообщение от Vihell Посмотреть сообщение
а это ссылки на что?
Это ссылки примера. Если бы я генерировал список статей, то вытащил бы из БД id статей и их названия. Потом бы в цикле делал примерно следующее:
PHP
1
2
3
while($res = $row->fetch()){
    echo '<a data-id="'.$row['id'].'">"'.$row['title'].'"</a>';
}
В атрибут "data-id" автоматом подставлялся id каждой статьи и его же использовал в ajax-запросе.
А к чему ваш код и что я там должен найти - не понимаю.
0
Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
17.03.2014, 22:18  [ТС] 8
Цитата Сообщение от 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
2947 / 2621 / 1322
Регистрация: 15.01.2014
Сообщений: 5,757
17.03.2014, 22:28 9
Цитата Сообщение от Vihell Посмотреть сообщение
Как правильно дописать что бы если вводилось не правильное значение то выбивало бы ошибку?
Какое значение? Поставьте себя на место отвечающего. Что можно понять из вашего вопроса?
0
Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
18.03.2014, 01:46  [ТС] 10
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Какое значение? Поставьте себя на место отвечающего. Что можно понять из вашего вопроса?
Ну водишь если вводишь номер которого нет в БД или буквы то выдавало сообщение что "Неверный запрос"
Прости если что не так.
0
Lazy_Den
2947 / 2621 / 1322
Регистрация: 15.01.2014
Сообщений: 5,757
18.03.2014, 11:55 11
Цитата Сообщение от 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  [ТС] 12
к сожелению при подстановке у меня поиск перестает работать.
проблема дето в скрипте...

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
2947 / 2621 / 1322
Регистрация: 15.01.2014
Сообщений: 5,757
18.03.2014, 13:57 13
Цитата Сообщение от Vihell Посмотреть сообщение
и поиск перестает работать
Исправьте для начала ошибки: $(#result) - селектор в кавычки $('#result')

Добавлено через 3 минуты
P.S. Кстати, вы в курсе, что существуют уже готовые решения поиска с динамическим выводом результатов? Autocomplete
1
Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
18.03.2014, 15:02  [ТС] 14
Lazy_Den, Большое тебе спасибо
все получилось на окей.
Если не сложно, подскажи как реализовать в одной форме 2 кнопки, которые будут отвечать за добавление строки в таблицу и редактирование её.
И как правильно реализовать проверку или в форме заполнены поля
0
Lazy_Den
2947 / 2621 / 1322
Регистрация: 15.01.2014
Сообщений: 5,757
18.03.2014, 15:24 15
Цитата Сообщение от 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  [ТС] 16
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Про это подробнее и с примерами.
Ну тобишь мне нужно сделать 2 пхп скрипта, один на внесение данных в таблицу БД, а второй на редактирование существующей записи в БД, я вот думаю как бы их в одну форму всунуть, только сделать 2 книпочки под ней, одна добавляет а вторая заменяет, если не ошибаюсь запросы которые они будут делать в БД типа insert и replace
0
Lazy_Den
2947 / 2621 / 1322
Регистрация: 15.01.2014
Сообщений: 5,757
18.03.2014, 17:02 17
Цитата Сообщение от Vihell Посмотреть сообщение
сделать 2 пхп скрипта, один на внесение данных в таблицу БД, а второй на редактирование существующей записи в БД
Во-первых, если вы редактируете запись с последующим апдейтом, то нужно иметь какой-то ключ, по которому и обновлять эту запись в БД. Соответственно, в форме может быть скрытое поле input, где его значение - это id записи, или же оно пустое, что говорит о новой записи. Во-вторых, запрос может быть и один: INSERT .... ON DUPLICATE KEY UPDATE .... Если у вас в таблице (что наверняка) есть или первичный ключ, или уникальный, то новая запись будет инсертится, а существующая - обновляться. Но это уже надо смотреть по обстоятельствам: использовать данную конструкцию запроса или нет.
1
Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
18.03.2014, 17:41  [ТС] 18
Lazy_Den, я вроде бы там разобрался, только подскажи что значит вот такая кака:
Deprecated: Function mysql_list_tables() is deprecated in C:\Web\OpenServer\domains\mpanel\main.php on line 56
0
Lazy_Den
2947 / 2621 / 1322
Регистрация: 15.01.2014
Сообщений: 5,757
18.03.2014, 18:16 19
Цитата Сообщение от Vihell Посмотреть сообщение
что значит вот такая кака
Deprecated - с англ., в данном случае, "Устаревший". Вам тонко намекают о том, что функцию mysql_list_tables() не рекомендуется использовать. Да и вообще, я бы вам советовал забыть о всех функциях аля mysql_*. Они все устаревшие и будет удалено в будущем.
0
Vihell
41 / 16 / 4
Регистрация: 07.01.2014
Сообщений: 91
18.03.2014, 18:22  [ТС] 20
Lazy_Den, Честно сказать, это все счастье проживет максимум до 29 числа данного месяца.
0
18.03.2014, 18:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2014, 18:22

При отправке AJAX дублируются запросы
Имеется такой вот скрипт. $('.container').on('click', '', function (){ ...

Long polling ajax запросы таймер
здраствуйте имеется страница index.php , с помощью long polling добавляются...

каким методом отправлять AJAX запросы на сервер?
Доброе время суток Уважаемые друзья! я вот немного запутался, как различить...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru