Всем привет и по-быстрому - к теме. На сервере есть файл PHP, который генерирует таблицу рекордов. Базу данных подключил, запрос успешно посылается, новые "игроки" вписываются, но последующие запросы от того же имени таблицу не обновляют. В чём проблема? Есть подозрения, что где-то напортачил с переменными. Первоначальная версия шаблона предусматривало работу с двумя переменными, я же добавил ещё две. Пароли и имена изменены, не хочется палить сайт пока.
$connect=mysql_connect ($host,$user,$pass) or die ('I cannot connect to the database because: ' . mysql_error()); mysql_select_db ($highscore_db);
//создадим переменные из тех что были приняты, чтобы было проще к ним обращаться $name=$_GET["name"]; $pixels=$_GET["pixels"]; $squares=$_GET["squares"]; $seconds=$_GET["seconds"];
$action=$_GET["action"];
//эта функция добавляет или обновляет игрока в таблице function modify_table() { //сначало находим ряд в котором имя = заданному игроком имени $query = "SELECT * FROM таблица WHERE name='".$_GET["name"]."'"; $res = mysql_query($query) or die("Couldn't execute $query: ".mysql_error());
//если такого ряда нет - значит игрока еще нет в БД, если есть, значит игрок уже был туда внесен if (mysql_num_rows($res)==0) { //игрока нет - создаем новый ряд с его именем и очками $query = "INSERT INTO таблица VALUES('".$_GET["name"]."',".$_GET["pixels"].",".$_GET["squares"].",".$_GET["seconds"].")"; mysql_query($query) or die("Couldn't execute $query: ".mysql_error()); } //игрок есть - обновляем его результат, если он выше чем тот который записан else { $checker = mysql_fetch_assoc($res); if ($checker[pixels]<$_GET[pixels]) {//обновляем результат $query = "UPDATE таблица SET pixels=".$_GET["pixels"].", squares=".$_GET["squares"].", seconds=".$_GET["seconds"]." WHERE name='".$_GET["name"]."'"; mysql_query($query) or die("Couldn't execute $query: ".mysql_error());} } header("Location: http://мой-сайт.ру/highscore.php?yourname=$_GET[name]"); exit; }
function show_top() { //этой функцией мы выбираем первые 50 рядов по возрастанию очков $query = "SELECT name, pixels, squares, seconds FROM MuSquare ORDER BY pixels, squares, seconds DESC LIMIT 50"; $res = mysql_query($query) or die("Couldn't execute query: ".mysql_error());
//свитч следит за тем какую функцию надо выполнить switch ($action) { case "set": modify_table(); break; case "top": show_top(); break; default: show_top(); break; }
//закрыть соединение, это очень важно! mysql_close(); ?>
</body> </html>
Сообщение отредактировал toby3d - Вторник, 18 Июня 2013, 01:58
Лучше на сайты по php обращайся. А так глянул, я не пробовал на сервер грузить, но думаю проблема с строками 39, там где проверка
Код
if (mysql_num_rows($res)==0)
У меня раньше тоже были проблемы с этим выражением. Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic