Онлайн таблица рекордов

уроки, мануалы, советы по Construct 2

Сообщение Re: Онлайн таблица рекордов
» 05 сен 2013, 15:57

Ilyko96. Подскажите пожалуйста. Сделал все как вы описали, вставил в свою игрушку, зарегил sql базу и таблицу на 000webhost.com, проверил, все работает на УРА, за что большое спасибо, давно искал. Теперь решил попробовать выложить игрушку на свой сайт и соответственно на нем же будет располагаться файл script.php. Создал базу и таблицу используя ресурсы хоста, изменил файл script.php, все работает, но есть одно НО! пусть в таблице есть один результат например "qwerty", "555". Если я просто в меню игры нажимаю просмотр результата то таблица появляется с хвостиком, т.е. "qwerty" - "555", а ниже " " (т.е. пусто), "0". Откуда берется этот ховстик просто при просмотре таблицы понять не могу. В версии на 000webhost.com этот хвостик не появляется. Может подскажете что-нибудь, а то убился уже не могу понять в чем дело.
Аватара пользователя

Участник
Сообщений: 29
Я тут с 18 май 2013
Репутация 2 [ ? ]

Сообщение Re: Онлайн таблица рекордов
» 06 сен 2013, 06:22

приложите архив с базой и файлом script.php
Аватара пользователя

Администратор
Сообщений: 2292
Я тут с 06 сен 2012
Откуда: Санкт-Петербург, Южно-Сахалинск
Skype: sirg1987
Репутация 231 [ ? ]

Сообщение Re: Онлайн таблица рекордов
» 06 сен 2013, 11:55

База
Код: Выделить всё
-- phpMyAdmin SQL Dump
-- version 3.4.3.2
-- http://www.phpmyadmin.net
--
-- Хост: 10.0.0.127:3308
-- Время создания: Сен 06 2013 г., 12:48
-- Версия сервера: 5.1.66
-- Версия PHP: 5.3.14

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- База данных: `lbg`
--

-- --------------------------------------------------------

--
-- Структура таблицы `result_bktable`
--

CREATE TABLE IF NOT EXISTS `result_bktable` (
  `name` varchar(14) NOT NULL,
  `score` int(8) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `result_bktable`
--

INSERT INTO `result_bktable` (`name`, `score`) VALUES
('qwe', 60),
('', 0);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Файл script.php
Код: Выделить всё
<?php
//Разрешение браузеру на осуществление кроссдоменных запросов
header('Access-Control-Allow-Origin: *');

//Записываем в переменные данные для доступа к БД
$mysql_host = "mysql.lbg.myjino.ru";
$mysql_database = "lbg";
$mysql_user = "login";
$mysql_password = "password";

//Подключаемся к MySQL и выбираем БД
$link = mysql_connect($mysql_host, $mysql_user, $mysql_password) or die("Ошибка при подключении MySQL" );
mysql_select_db($mysql_database, $link) or die ('Ошибка при подключении к БД');

//Проверяем наличие передеваемых данных
if(isset($_POST['name'])) $name = $_POST['name'];
if(isset($_POST['score'])) $score = $_POST['score'];

//Проверяем наличие полученных значений
if(isset($name) && isset($score)) {

//Запрос к БД на получение нужной строки
$q1 = mysql_query("SELECT * FROM `result_bktable` WHERE `name`='".$name."'");

//Проверка количества полученных результатов
if(mysql_num_rows($q1) == 1) {

//Записываем результат в ассоциативный массив
$array = mysql_fetch_array($q1);

//Если полученное значение больше записанного в БД, то обновляем его в таблице нашей БД
if($score > $array['score']) $q3 = mysql_query("UPDATE `result_bktable` SET `score`='".$score."' WHERE `name`='".$name."'");
}
else //В случае, если строки с таким именем нет, добавляем ее
$q2 = mysql_query("INSERT INTO `result_bktable`(`name`, `score`) VALUES ('".$name."', '".$score."')");
}

//Запрос на получение всех строк, отсортированных по полю score по убыванию
$q4 = mysql_query("SELECT * FROM `result_bktable` ORDER BY `score` DESC");

//Цикл вывода 10 первых результатов
$i=0;
while($row = mysql_fetch_row($q4)){

    if($i<10) {
   echo $row[0].' - '.$row[1].'|';
   $i=$i+1;
   }
}
?>
Аватара пользователя

Участник
Сообщений: 29
Я тут с 18 май 2013
Репутация 2 [ ? ]

Сообщение Re: Онлайн таблица рекордов
» 06 сен 2013, 12:54

у вас в таблице:
Код: Выделить всё
INSERT INTO `result_bktable` (`name`, `score`) VALUES ('qwe', 60), ('', 0);

хранится 2 строки:
qwe - 60
- 0
это и есть ваш хвост. не добавляйте данные в эту таблицу (создайте её пустой) и проверяйте в игре
Аватара пользователя

Администратор
Сообщений: 2292
Я тут с 06 сен 2012
Откуда: Санкт-Петербург, Южно-Сахалинск
Skype: sirg1987
Репутация 231 [ ? ]

Сообщение Re: Онлайн таблица рекордов
» 06 сен 2013, 13:22

Я не добавляю данные в таблицу, создал ее пустой и проверяю из игры. данные с хвостом прислал для наглядности. Сейчас снова очистил таблицу, посмотрел из игры и теперь таблица пуста, но хвост - 0 все равно появился.
Может в настройках базы скул нужно чтото изменить?
Код: Выделить всё
INSERT INTO `result_bktable` (`name`, `score`) VALUES ('qwe', 60), ('', 0);

А эта строка взята с phpMyadmin -> Экспорт всех настроек базы чтобы выложить сюда.
Аватара пользователя

Участник
Сообщений: 29
Я тут с 18 май 2013
Репутация 2 [ ? ]

Сообщение Re: Онлайн таблица рекордов
» 06 сен 2013, 13:28

видимо, сама игра первоначально создает пустую строку в базе (пока еще не получены данные с именем игрока и очками)...хмммм.... перечитал ваш скрипт. вроде там ошибка. пример:
делаем первый запуск игры. данных "имя" и "счет" нет - следовательно выполняется строка "//В случае, если строки с таким именем нет, добавляем ее", что добавляет пустые данные. так что просто разберитесь с вложениями условий =)
Аватара пользователя

Администратор
Сообщений: 2292
Я тут с 06 сен 2012
Откуда: Санкт-Петербург, Южно-Сахалинск
Skype: sirg1987
Репутация 231 [ ? ]

Сообщение Re: Онлайн таблица рекордов
» 06 сен 2013, 13:32

ясно, понял, попробую разобраться. спасибо!!!
Аватара пользователя

Участник
Сообщений: 29
Я тут с 18 май 2013
Репутация 2 [ ? ]

Сообщение Re: Онлайн таблица рекордов
» 06 сен 2013, 13:34

хотя странно, этот же самый скрипт но сдругим названием базы на 000webhost.com работает...
может я что-то не то делал. ок разберусь...
Аватара пользователя

Участник
Сообщений: 29
Я тут с 18 май 2013
Репутация 2 [ ? ]

Сообщение Re: Онлайн таблица рекордов
» 10 сен 2013, 23:47

giguka, возможно ошибка в коде самого HTML5-приложения... потому как php-код на первый взгляд вроде впорядке, а "хвост" - есть. Т.е. скрипт отрабатывает все как должен, в приложении "хвост" тоже показывается, значит в какой-то момент игра посылает запрос с переменной name="", т.е. с пустым name. В принципе, думаю, это возможно, т.к. isset($_POST['name']) отработает на правду, ведь переменная же задана, ну и пусть, что в ней пустота... :scratch_one-s_head:
Аватара пользователя

Игродел
Сообщений: 405
Я тут с 08 янв 2013
Откуда: Мск
Репутация 205 [ ? ]

Сообщение Re: Онлайн таблица рекордов
» 19 сен 2013, 11:22

кстати, нужно сохранять файл в UTF-8 без BOM, иначе постоянно будет появляться не пойми откуда лишний текст
Аватара пользователя

Администратор
Сообщений: 2292
Я тут с 06 сен 2012
Откуда: Санкт-Петербург, Южно-Сахалинск
Skype: sirg1987
Репутация 231 [ ? ]



Вернуться в Уроки по Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх