Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 89
1

Ajax и БД

19.06.2013, 13:44. Показов 768. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача в следующем:
Есть определенная таблица, в которой в ячейках ссылки. Таблица окрашивается в 2 цвета - один цвет(пусть будет синий) - значит запись на данную ссылку присутствует в базе, второй цвет (красный) - записи данной ссылки в базе нет.
Необходимо средствами ajax при нажатию на любую ссылку в таблице проверить есть ли данная ссылка в бд, если она есть, то ее необходимо удалить из БД и ячейку перекрасить, если ее нет то необходимо добавить и так же перекрасить ячейку. PHP код выглядит так, все рисуется, данные из БД берутся и все норм окрашивается.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$lnk = mysql_connect('localhost', 'root', '') or die("Could not connect". mysql_error());
    mysql_select_db('ajax', $lnk);
    mysql_query("set character_set_client='utf8'", $lnk);
    
    echo '<table border = "1" width = "650px" align = "center">';
        for ($tr = 1; $tr <= 8; $tr++){
            echo '<tr align = "center">';
            for ($td = 1; $td <= 8; $td++){
                $name = "$tr$td";
                $url = 'Select url_id from urls where url_name =\''.$name.'\''; 
                $result = mysql_query($url); 
                    
                if(!$result) exit(mysql_error());  
                if(mysql_num_rows($result)) 
                    echo "<td class='green' id=".$tr.$td."><a href='#'>".$tr.":".$td."</a></td>";  
                else 
                    echo "<td class='gray' id=".$tr.$td."><a href='#'>".$tr.":".$td."</a></td>"; 
            }
            echo "</tr>";
        }
    echo '</table>';
С ajax сожнее
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function(){
        $('.green').click(function(){
            var id = $(this).prop('id');
            $.ajax({               
            type:'POST', 
            url: 'http://localhost/ajax/link.php', 
            data: { "url_id": id },
            success: function(res)
                {   
                    if (res == 1)
                        $(id).removeClass('green').addClass('gray'),     
                    else $(id).removeClass('gray').addClass('green'),
                }
            
            });
        });
    })
Как следует из кода я пытаюсь во внешний пхп скрипт передать работу с БД, но непонятно как туда передать название ячейки. Соотв ничего не работает.
Внешний скрипт выглядит так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
error_reporting(1);
    $lnk = mysql_connect("localhost","root","") or die("Could not connect". mysql_error());
    mysql_select_db('ajax', $lnk);
    $name = ??????
    $url = 'Select url_id from urls where url_name =\''.$name.'\''; 
    $result = mysql_query($url); 
                    
        if(!$result) exit(mysql_error());  
                if(mysql_num_rows($result)) 
                    $flag = 1;  
                else 
                    $flag = 0;
    echo $flag;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2013, 13:44
Ответы с готовыми решениями:

Определить AJAX библиотеку или отследить AJAX запрос любым методом
Требуется определить какая библиотека используется на сайте для создания AJAX запросов....

После вставки ответа ajax в input запроса, ответ ajax не изменяется
Здравствуйте! В общем так, есть поле input, есть таблица с полем count. Задача: изменить...

Jsoup & js ajax получение данных из бд ajax (или как-то так :)
Привет! Есть сайт с видео, на нем мне нужная страница с информацией. Парсил с помощью Jsoup, в...

Выполнение AJAX для подгруженных AJAX-зависимых ссылок
Форма авторизации/регистрации. &lt;form class=&quot;authForm&quot; method=&quot;post&quot;&gt; &lt;input...

8
странник
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
19.06.2013, 23:29 2
ну так у тебя ajax посылает во "внешний" php скрипт POST запрос, со следующими данными
Цитата Сообщение от pasha_2001 Посмотреть сообщение
Javascript
1
data: { "url_id": id }
соответственно в php ты получаешь значение так:
PHP
1
$_POST['url_id']
Добавлено через 2 минуты
не уверен что правильно написаны строки:
Javascript
1
2
                        $(id).removeClass('green').addClass('gray'),     
                    else $(id).removeClass('gray').addClass('green'),
думаю надо так:
Javascript
1
2
                        $('#'+id).removeClass('green').addClass('gray'),     
                    else $('#'+id).removeClass('gray').addClass('green'),
Добавлено через 1 минуту
и вот тут:
Javascript
1
$('.green').click(function(){
тебе же надо менять класс не только у зеленых ячеек, но еще и у серых. Тогда лучше написать:
Javascript
1
$('td').click(function(){
0
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 89
20.06.2013, 13:50  [ТС] 3
Переделал, вышло так:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function(){
        $('td').click(function(){
            var id = $(this).prop('id');
            $.ajax({               
            type:'POST', 
            url: 'http://localhost/22/link.php', 
            data: { 'url_name': id },
            success: function(res)
                {   
                    if (res == 1)
                        $('#'+id).removeClass('green').addClass('gray'),     
                    else $('#'+id).removeClass('gray').addClass('green'),
                }
            
            });
        });
    })
PHP , на который кидается POST c ajax link.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$lnk = mysql_connect('localhost','root','') or die("Could not connect". mysql_error());
    mysql_select_db('ajax', $lnk);
    $name = $_POST['url_name'];
    $url = 'Select url_id from urls where url_name =\''.$name.'\''; 
    $result = mysql_query($url); 
                    
        if(!$result) exit(mysql_error());  
                if(mysql_num_rows($result)) 
                    $flag = 1;  
                else 
                    $flag = 0;
    echo $flag;
и основной РНР, который формирует изначальную таблицу
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$lnk = mysql_connect('localhost', 'root', '') or die("Could not connect". mysql_error());
    mysql_select_db('ajax', $lnk);
    mysql_query("set character_set_client='utf8'", $lnk);
    
    echo '<table border = "1" width = "650px" align = "center">';
        for ($tr = 1; $tr <= 8; $tr++){
            echo '<tr align = "center">';
            for ($td = 1; $td <= 8; $td++){
                $name = "$tr$td";
                $url = 'Select url_id from urls where url_name =\''.$name.'\''; 
                $result = mysql_query($url); 
                    
                if(!$result) exit(mysql_error());  
                if(mysql_num_rows($result)) 
                    echo "<td class='green' id=".$tr.$td."><a href='#'>".$tr.$td."</a></td>";  
                else 
                    echo "<td class='gray' id=".$tr.$td."><a href='#'>".$tr.$td."</a></td>"; 
            }
            echo "</tr>";
        }
    echo '</table>';
Но реакции на нажатие ссылок ноль
0
странник
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
20.06.2013, 17:16 4
а ты адрес правильно указал? по моему, надо использовать относительную адресацию (хотя могу ошибаться).

Посмотри в консоли хрома, если ошибки выполнения скрипта. если их нет, то посмотри что отправляется на сервер и что приходит (Network)
0
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 89
20.06.2013, 17:27  [ТС] 5
Файлы кидал в корень и путь указывал просто 'link.php' а толку ноль
0
странник
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
20.06.2013, 17:37 6
значит смотри абзац 2

Добавлено через 6 минут
и посмотри еще так:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$(document).ready(function(){
        $('td').click(function(){
            var id = $(this).prop('id');
            $.ajax({               
            type:'POST', 
            url: 'http://localhost/22/link.php', 
            data: { 'url_name': id },
            success: function(res)
                {   
                    if (res == 1)
                        $('#'+id).removeClass('green').addClass('gray');     
                    else $('#'+id).removeClass('gray').addClass('green');
                },
            error: function(jqXHR, textStatus, errorThrown){
                    alert(textStatus+' '+errorThrown);
                }
            });
        });
    });
Добавлено через 1 минуту
нашел ошибку, в js 12 и 13 строки - надо заканчивать команды не , а ;
1
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 89
20.06.2013, 17:45  [ТС] 7
Хром консоль прикольная штука - не знал про нее. Дело было кроме путя еще в том что
Javascript
1
2
3
4
5
6
if (res == 1){
                        $('#'+id).removeClass('green').addClass('gray');
}     
                    else {
$('#'+id).removeClass('gray').addClass('green');
}
т.е. надо было в фигурные скобки все установить
0
странник
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
20.06.2013, 17:47 8
не обязательно, если выполняется одна команда после условия. У тебя там запятая стояла вместо точки с запятой.
1
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 89
20.06.2013, 17:48  [ТС] 9
Да - проверил, именно в запятой проблема - спасибо
0
20.06.2013, 17:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2013, 17:48
Помогаю со студенческими работами здесь

Ajax загрузка формы из загруженного через ajax блока
Вообщем, через ajax в блок подгружается форма, из нее нужно загрузить в этот же блок др.контент....

Через ajax в url:'ajax.php', нужно передать одну переменную, и значение radio кнопки
Как значение radio передать я разобрался, а вот как еще переменную со страницы кинуть в url:...

Ajax запрос в div с уже 'прилетевшим' ajax'om
Добрый день, ребят... Не нашёл отдельного раздела по ajax, а разобраться очч надо, т.к.в JS полный...

[AJAX & Servlet] AJAX и PRG
Без AJAX использовал PRG паттерн, то есть на всех doPost() которые обрабатывали форму был...

Стандарт ajax или jquery-> ajax?
Добрый день, такой вопрос что лучше всего использовать стандарт AJAX объект XMLHttprequest либо же...

AJAX внутри AJAX на чистом JS
Вся эта красота(ниже) подгружает php файл. Как подгрузить, например, тоже самое из подгруженного...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru