Прошу Помощи... Ошибка В Скрипте
Всем привет!
Вообщет такая проблема есть у меня вот такой скрипт :
if(empty($mw))
{
header ("Location: ..");
exit;
}
?>
<center><h4>Ваш личный кабинет</H4><hr>
| <a href="index.php?id=sexchange">Сменить пол</a>
| <a href="index.php?id=classchange">Сменить класс</a> |
<br><hr><br><br>выберите действие которое вы хотите выполнить.<br><br>
</center><br><br>
<?php
$submit = isset($HTTP_POST_VARS['submit'])?$HTTP_POST_VARS['submit']:false;
if ($submit)
{
$link = mysql_connect($L2JBS_config['mysql_host'].":".$L2JBS_config['mysql_port'], $L2JBS_config['mysql_login'], $L2JBS_config['mysql_password']);
if (!$link)
die("Нет конекта с базой MySQL");
@mysql_select_db($L2JBS_config['mysql_db'], $link)
or die ('Error '.mysql_errno().': '.mysql_error());
$oldnick = $HTTP_POST_VARS['oldnick'];
$class_id = $HTTP_POST_VARS['class_id'];
$classid = $HTTP_POST_VARS['classid'];
$level = $HTTP_POST_VARS['level'];
$acc_name = $HTTP_POST_VARS['acc_name'];
$pass = $HTTP_POST_VARS['pass'];
$sql = "SELECT * FROM `accounts` WHERE `login` = '$acc_name'";
$res = mysql_query($sql);
$account = mysql_fetch_array($res);
if ($account['password'] != base64_encode(pack('H*',sha1(utf8_encode($pass))))) {die('Неверный пароль<br><br><a href="index.php?id=classchange">Назад</a>');}
$res = mysql_query("SELECT `char_name` FROM `characters` WHERE `char_name` = '$oldnick'");
if (!@mysql_num_rows($res)) {die('У Вас нет такого персонажа<br><br><a href="index.php?id=classchange">Назад</a>');}
$res = mysql_query("SELECT `base_class` FROM `characters` WHERE `char_name` = '$base_class'");
if (@mysql_num_rows($res)) {die('Перс с таким именем уже есть<br><br><a href="index.php?id=classchange">Назад</a>');}
$sql = "SELECT `account_name`,`charId`,`online` FROM `characters` WHERE `char_name` = '$oldnick'";
$res = mysql_query($sql);
$nick = mysql_fetch_array($res);
if ($account['login'] != $nick['account_name']) {die('Этот чар Вам не пренадлежит.<br><br><a href="index.php?id=classchange">Назад</a>');}
$sql = "SELECT `owner_id`,`object_id`,`item_id`,`count` FROM `items` WHERE `item_id` = 57 AND `owner_id` = ${nick['charId']}";
$res = mysql_query($sql);
$money = mysql_fetch_array($res);
if ($money['count'] < $price3) {die('Нехватает денег на счету<br><br><a href="index.php?id=classchange">Назад</a>');}
if ($nick['online']) {die('Для этой операции Вам нужно выйти из игры<br><br><a href="index.php?id=classchange">Назад</a>');}
$tmp = $money['count'] - $price3;
mysql_query("UPDATE `items` SET `count` = $tmp WHERE `item_id` = 57 AND `owner_id` = ${nick['charId']}");
mysql_query("UPDATE `characters` SET `classid` = '$classid',`level` = 1,`sp` = 0,`exp` = 0 WHERE `charId` = ${nick['charId']}");
mysql_query("UPDATE `character_subclasses` SET `class_id` = '$class_id',`level` = 1,`sp` = 0,`exp` = 0 WHERE `charId` = ${nick['charId']}") <--- нужно чтобы это таблица обновлялась...
?>Класс вашего перса изменен<br><br><br><a href="index.php?id=classchange">Назад</a> <?php
}
else
{
?>
<script language=javascript>
function isAlphaNumeric(value)
{
if (value.match(/^[a-zA-Z0-9]+$/))
return true;
else
return false;
}
function checkform(frm)
{
if (frm.acc_name.value=="")
{
alert("Введите аккаунт");
return false;
}
if (!isAlphaNumeric(frm.acc_name.value))
{
alert("Аккаунт должен состоять из английских букв и/или цифр!");
return false;
}
if (frm.newnick.value=="")
{
alert("Введите аккаунт");
return false;
}
if (!isAlphaNumeric(frm.newnick.value))
{
alert("Аккаунт должен состоять из английских букв и/или цифр!");
return false;
}
if (frm.pass.value=="")
{
alert("Введите пароль");
return false;
}
if (!isAlphaNumeric(frm.pass.value))
{
alert("Пароль должен состоять из английских букв и/или цифр!");
return false;
}
return true;
}
</script><br><br>
Здесь Вы имеете возможность сменить класс за адены.<br><br> Текущая цена: <? echo $price3; ?> aden.<br><br>
<form action=index.php?id=classchange method=post onsubmit="return checkform(this)">
<table cellpadding=2 cellspacing=2>
<tr><td>Имя аккаунта<td><input name=acc_name>
<tr><td>Пароль<td><input name=pass type=password>
<tr><td>Ник перса<td><input name=oldnick>
<tr><td>Выберете класс<td>
Орг воин<INPUT type=radio value="44" name=classid value="44" name=class_id maxlength="15"> <--- при таком параметре чтобы заносились данный в одну таблицу столбик classid значение 44 , а в другую таблицу столбик class_id значение тоже 44
<tr><td colspan=2><input type=submit name=submit value="Сменить класс">
</table></form>
<?php
}
?>
Ничего не понимаю.
Выложи еще раз скрипт со своими модификациями которые внес, и выдели их жирным цветом.
Затем объясни более подробно суть и принцип работы твоих модификаци, и в чем заключается неработоспособность?
— Ålderdom - ingen glädje..
Так, а в чем сама проблема? Запись не добавляется в таблицу? Есть-ли ошибки? Отключен-ли error_reporting?
Ээ..так вот еще, что за фокус? Две переменных с практически одинаковыми именами..? В чем разница
$classid = $HTTP_POST_VARS['classid'];
— Ålderdom - ingen glädje..
$classid = $HTTP_POST_VARS['classid'];<--столбик таблицы characters
проблема в том , что когда я нажимаю на орк воин и нажимаю Сменить класс , изменения вносятся только в таблицу characters , а в character_subclasses ничего не вноситься
Почему-бы не использовать одну переменную для всего?
Или в крайнем случае 2ой переменной присвоить ссылку на первую.
Я просто не вижу где идет заполнение перменной $classid?
$class_id вижу, внизу радио-боксы, а вот первая...в чем различия-то =\
Можно на крайний случай sql запрос запихнуть руками в sql клиент для проверки, предварительно заменив переменные на текст и прочее.
— Ålderdom - ingen glädje..
спасибо, заработало:))
только вот еще есть один вопросик:) можно ли как-то через этот же скрипт сделать , чтобы из стобика charId таблицы characters вносились данный в столбик charId таблицы character_subclasses???
Имеешь ввиду добавление (insert) записи, а не обновление (update)?
Если да то прийдеца сделать еще несколько проверок, чтобы небыло дублей в сабклассах.
— Ålderdom - ingen glädje..
да именно insert, ведь при сменне класса игрок пишел свой логин , пароль и имя чара которому он меняеет класс, чару присваиваеться ид, вот можно ли чтобы этот ид при смене добавлялся в саб таблицу?
Можно, с sql синтаксом знаком? Сможешь сам накатать запрос аля insert into character_subclasses ('...','...') values ('...','...').....
Или в чем у тебя проблема? Не можешь получить charid или что.
— Ålderdom - ingen glädje..
проблема в том что я в этом не особо понимаю:) самоучка:))) экспериментатор:)
Я тут не могу помочь, под рукой у меня нету серверов, вебсерверов.
Негде ничего проверить и сделать. Так что извеняй )
— Ålderdom - ingen glädje..

