Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 01.11.2012
Сообщений: 803
SQLite

Запись в базу с таблицы по ссылке (рейтинг серверов)

14.02.2017, 14:48. Показов 682. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такая таблица. Нужно сделать при нажатии на иконку "лайк" что бы в бд к определенному серверу добавлялась в строку цифра 1. То есть пользователь таким образом голосует за сервер, 1 раз нажал и серверу добавился +1 рейтинг, второй раз нажал и ему приплюсовалось к 1 ещё 1 и получается 2. Потом по рейтингу будет сортировка идти. Каждое нажатие записывает к серверу в БД цифру 1


Вот как просто реализована таблица.

PHP
1
2
3
4
5
6
7
8
9
10
        echo '<table border="1" style="width: 800px; font-size: 12px;">
    <tbody>
        <tr>
<td style="width: 450px;">'.substr($packet[0],0,51).'</td> 
<td style="width: 90px; text-align: right;">'.$packet[1].'</td>
<td style="width: 60px;  text-align: center;">'.$server['players']."/".$server['playersmax'].'</td>
<td style="width: 20px;"><a href="#"><img src="https://cdn4.iconfinder.com/data/icons/ballicons-2-free/100/like-128.png" alt="Like" width="20" height="20"></a></td>
        </tr>
    </tbody>
            </table>';
Миниатюры
Запись в базу с таблицы по ссылке (рейтинг серверов)  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.02.2017, 14:48
Ответы с готовыми решениями:

Запись данных из таблицы xls в базу mdb
Всем привет! Возник вопрос с использованием двух бд. Есть таблица xls с данными, она открывается в DBGrid для редактирования, после...

Запись данных в базу данных SQL и выгрузка таблицы в форму
Нужно сделать 2 формы, одну с несколькими textBox'ами, чтобы при нажатии кнопки информация введённая в них, записывалась в Базу данных, и...

Запись данных из таблицы в базу данных
Есть некоторая таблица. &lt;table&gt; &lt;tr&gt; &lt;td&gt;&lt;input type=&quot;text&quot;&gt;&lt;/td&gt; &lt;td&gt;&lt;input type=&quot;text&quot;&gt;&lt;/td&gt; &lt;td&gt;&lt;input...

9
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
14.02.2017, 15:25
Примерно так:
PHP/HTML
1
2
3
4
5
6
7
8
...
<td style="width: 60px;  text-align: center;"><span class="counter"><?= $server['count_like'] ?></span></td>
...
// выводим что-то типа id сервера из БД
<a class="like" data-id="<?= $server['id'] ?>" href="#">
<img src="https://cdn4.iconfinder.com/data/icons/ballicons-2-free/100/like-128.png" alt="Like" width="20" height="20">
</a>
...
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(".like").bind("click", function() {
        var link = $(this); // ссылка сервера в таблице
        var id = link.data('id'); // id сервера
        $.ajax({
            url: "/like.php", // скрипт обработки
            type: "POST",
            data: {id:id}, 
            dataType: "json",
            success: function(result) {
                if (!result.error){ //если на сервере не произойло ошибки то обновляем количество лайков на странице
                    link.addClass('active'); // помечаем лайк как "понравившийся"
                    $('.counter',link).html(result.count);
                }else{
                    alert(result.message);
                }
            }
        });
    });
like.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
24
25
26
27
$error = true;
 
if($_POST['id']){
    /** Обновляем количество лайков по серверу */
    
    $query = $pdo->prepare("UPDATE servers SET count_like = count_like + 1  WHERE id = :id");
    $query->execute(array(':id'=>$id));
    
    /** Выбираем количество лайков по серверу */
    $query = $pdo->prepare("SELECT count_like FROM servers WHERE id = :id");
    $query->execute(array(':id'=>$id));
    $result = $query->fetch(PDO::FETCH_ASSOC);
    $count = isset($result['count_like']) ? $result['count_like']  : 0;
    
    $error = false;
 
$out = array(
    'error' => $error,
    'message' => $message,
    'count' => $count,
);
 
// Устанавливаем заголовок ответа в формате json
header('Content-Type: text/json; charset=utf-8');
 
// Кодируем данные в формат json и отправляем
echo json_encode($out);
0
3 / 3 / 0
Регистрация: 01.11.2012
Сообщений: 803
14.02.2017, 22:26  [ТС]
спасибо за пример кода. очень помогли. интересует такие моменты:

1 мне в общую таблицу выводить какой то индетификатор сервера по порядку (например)
2 что такое $server['count_like'] и откуда оно берется ? не понял
3 count_like это имя столбика в бд ?


P.S. я совсем новичок как в пхп так и в бд.
0
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
15.02.2017, 15:10
Цитата Сообщение от Bookkc1 Посмотреть сообщение
1 мне в общую таблицу выводить какой то индетификатор сервера по порядку (например)
Да, но по порядку не обязательно, у вас есть таблица, у каждой записи есть уникальный ID или что-то там еще уникальное по ним и определяется у какого сервера увеличивать количество лайков

Цитата Сообщение от Bookkc1 Посмотреть сообщение
2 что такое $server['count_like'] и откуда оно берется ? не понял
3 count_like это имя столбика в бд ?
Я просто не знал как у вас там устроено и где хранятся лайки вот и написал $server['count_like']. Да count_like - это имя поля в таблице серверов, где хранятся лайки определенного сервера.
Можно просто поле 'like' на ваше усмотрение и структуру БД.
0
3 / 3 / 0
Регистрация: 01.11.2012
Сообщений: 803
15.02.2017, 16:48  [ТС]
Да мне не важно, просто спрашиваю что это, не сильно хорошо разбираюсь в этом... к сожалению...

и ещё вопрос:

$server['id'] - переменная в которой хранятся ид ?

Добавлено через 26 минут
и да, можно ли сделать всё без привязки по ид. а например привязка по другому столбцу ???
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
15.02.2017, 17:33
Цитата Сообщение от Bookkc1 Посмотреть сообщение
и да, можно ли сделать всё без привязки по ид. а например привязка по другому столбцу ???
конечно если это поле уникальное для определенной записи
0
3 / 3 / 0
Регистрация: 01.11.2012
Сообщений: 803
15.02.2017, 18:14  [ТС]
Я понял, сделал по ID, сейчас буду пробовать.

Добавлено через 10 минут
не работает. Вот весь код

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
function getStat($id, $ip, $queryport, $count_like) {
    $socket = @fsockopen("udp://".$ip, $queryport , $errno, $errstr, 1); 
 
    stream_set_timeout($socket, 1);
    stream_set_blocking($socket, TRUE);
    fwrite($socket, "\xFF\xFF\xFF\xFF\x54Source Engine Query\x00");
    $response = fread($socket, 4096);
    @fclose($socket);
    $packet = explode("\x00", substr($response, 6), 5);
    $server = array();
    $server['name'] = $packet[0];
    $server['map'] = $packet[1];
    $server['game'] = $packet[2];
    $server['description'] = $packet[3];
    $inner = $packet[4];
    $server['players'] = ord(substr($inner, 2, 1));
    $server['playersmax'] = ord(substr($inner, 3, 1));
    $server['password'] = ord(substr($inner, 7, 1));
    $server['vac'] = ord(substr($inner, 8, 1));
    $server['count_like'] = $count_like;
    $server['id'] = $id;
    //var_dump( $server ); //вывод всей каши
 
     
 
        
//НАЧАЛО ТАБЛИЦЫ ВЫВОДА МОНИТОРИНГА       
        echo '<table border="1" style="width: 800px; font-size: 12px;">
    <tbody>
        <tr>
<td style="width: 60px;  text-align: center;"><span class="counter"><?= '.$server['count_like'].' ?></span></td>
<td style="width: 20px;">'.$server['id'].'</td> 
<td style="width: 450px;">'.substr($packet[0],0,51).'</td> 
<td style="width: 90px; text-align: right;">'.$packet[1].'</td>
<td style="width: 60px;  text-align: center;">'.$server['players']."/".$server['playersmax'].'</td>
<td style="width: 60px;"><img src="https://www.pcper.com/files/imagecache/article_max_width/news/2014-06-15/SteamLogo.png" alt="Connect From Steam" width="65" height="18"></td>
<td style="width: 60px;"><img src="https://redesignmobile.files.wordpress.com/2015/04/connect-button1.png" alt="Connect From Other Client" width="65" height="18"></td>
<td style="width: 20px;"><a class="like" data-id="<?= '.$server['id'].' ?>" href="#"><img src="https://cdn4.iconfinder.com/data/icons/ballicons-2-free/100/like-128.png" alt="Like" width="20" height="20"></a></td>
        </tr>
    </tbody>
            </table>';
//КОНЕЦ ТАБЛИЦЫ ВЫВОДА МОНИТОРИНГА 
        
    }
 
}
 
$db = new SQLite3('mysqlitedb.db');
$results = $db->query('SELECT `id`, `ip`, `port`, `count_like` FROM `accounts`'); //Запрос
// перебираем в цикле все хосты из базы
while ($entry = $results->fetchArray(SQLITE3_ASSOC)) {
    // вызываем функцию вывода статистики по каждому хосту
    getStat($entry['id'], $entry['ip'], $entry['port'], $entry['count_like']);
}
?>
 
<script>
$(".like").bind("click", function() {
        var link = $(this); // ссылка сервера в таблице
        var id = link.data('id'); // id сервера
        $.ajax({
            url: "/like.php", // скрипт обработки
            type: "POST",
            data: {id:id}, 
            dataType: "json",
            success: function(result) {
                if (!result.error){ //если на сервере не произойло ошибки то обновляем количество лайков на странице
                    link.addClass('active'); // помечаем лайк как "понравившийся"
                    $('.counter',link).html(result.count);
                }else{
                    alert(result.message);
                }
            }
        });
    });
</script>
Добавлено через 1 минуту
like.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
24
25
26
27
28
29
30
31
<?php
 
$error = true;
 
if($_POST['id']){
    /** Обновляем количество лайков по серверу */
    
    $query = $pdo->prepare("UPDATE accounts SET count_like = count_like + 1  WHERE id = :id");
    $query->execute(array(':id'=>$id));
    
    /** Выбираем количество лайков по серверу */
    $query = $pdo->prepare("SELECT count_like FROM accounts WHERE id = :id");
    $query->execute(array(':id'=>$id));
    $result = $query->fetch(PDO::FETCH_ASSOC);
    $count = isset($result['count_like']) ? $result['count_like']  : 0;
    
    $error = false;
 
$out = array(
    'error' => $error,
    'message' => $message,
    'count' => $count,
);
 
// Устанавливаем заголовок ответа в формате json
header('Content-Type: text/json; charset=utf-8');
 
// Кодируем данные в формат json и отправляем
echo json_encode($out);
 
?>
0
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
15.02.2017, 21:38
Что именно не работает?
0
3 / 3 / 0
Регистрация: 01.11.2012
Сообщений: 803
15.02.2017, 22:15  [ТС]
не записывает в бд.
0
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
15.02.2017, 22:59
Цитата Сообщение от Bookkc1 Посмотреть сообщение
не записывает в бд.
Попробуйте все по кусочкам проверить, не записывает в БД, как-то слишком объемно звучит.
я там забыл $id указать вы его указывали?
PHP
1
$id = $_POST['id']
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2017, 22:59
Помогаю со студенческими работами здесь

Создать базу данных о студентах в виде «Фамилия, имя, группа, дата рождения, средний рейтинг»
Создать файл («БД») и выполнить его обработк. Обработка заключается в выборе из файла и выдаче на экран требуемой информации. Добавление...

Запрос в базу по ссылке.
Ребят пытаюсь придумать при нажатие на ссылку табы выполнялся запрос. делаю так $row = $data; //Функция вывода разделов ...

Как по ссылке на базу в xml скачать файл
Добрый день! Помогите, пожалуйста, решить такой вопрос. Прислали ссылку на базу в xml. Как программно скачать эту базу в базу данных в...

Запретить запись в базу, если в базе уже есть запись
Здравствуйте уважаемые форумчане. У меня есть база данных в которую пользователи добавляют адреса сайтов Они добавляют и http://site.ru...

Запретить запись в базу, если в базе уже есть такая запись - PHP БД
Люди добрые помогите кто чем сможет. Есть запрос $number = $_POST; $datetime = $_POST; $dept = $_POST; $text = $_POST; $disp...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru