Закрытие боя.

PitBull

Новичок
Репутация
0 / 72
Всем привет, пытаюсь сделать кнопочку закрытия боя. Точнее я её сделал, но пока эта кнопочка глобального масштаба, и закрывает бой у всех сразу. Прошу помочь и подсказать, как дописать код, что бы я мог ввести ID перса, и команда выполнялась именно по отношению к нему, а не глобально во всей таблице users. Как мне кажется кнопочка довольно актуальна, особенно для тех кто-только начинает свой проект, и в нём полно ещё багов, особенно зависаний в бою против питомцев и клоном. Вот собственно сам код. Взял я его на примере add_shmot, и переделал под себя.

Код:
<?php
    session_start();
    if ($_SESSION['uid'] == null) header("Location: index.php");
    include "connect.php";
    mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `count` >= '0' LIMIT 1;"));
    $user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = '{$_SESSION['uid']}' LIMIT 1;"));
    if ($user['login']=="" || $user['login']=="" || $user['login']=="hidden" || $user['login']=="" || $user['login']=="" || $user['login']=="" || $user['login']=="" || $user['login']=="") {

?>
<form method=post action="close_battles.php">
[b]Закрыть бой[/b]
<table>
<table>
<tr><td>Закрыть бой </td><td><input type=text name=battle  value=""></td></tr>

</table>
<INPUT TYPE="submit" value="Закрыть">
</form>

<?

 if ($_POST['battle']) {
    if (mysql_query("UPDATE users SET battle = '".$_POST['battle']."';"))     {
    echo "OK";
    }
else { echo "NO";}
 
 }
} 
?>
 
Сделай поле для ввода логина персонажа и используй запрос вида UPDATE users SET battle = '".$_POST['battle']."'
WHERE Login='$login'
 
Сделай поле для ввода логина персонажа и используй запрос вида UPDATE users SET battle = '".$_POST['battle']."'
WHERE Login='$login'
Поле сделал, но вот с запросом не совсем понял, так как я синтаксис плохо знаю, не получается толком сделать, ругается постоянно... Не мог бы полностью написать ?
 
Поле сделал, но вот с запросом не совсем понял, так как я синтаксис плохо знаю, не получается толком сделать, ругается постоянно... Не мог бы полностью написать ?
А что тут понимать то?Если поле login сделал , то просто свой старый запрос меняешь на тот что я показал и все.
 
А что тут понимать то?Если поле login сделал , то просто свой старый запрос меняешь на тот что я показал и все.
Parse error: syntax error, unexpected T_STRING in /home/********************close_battles.php on line 26

Я поэтому и говорю, то что с синтаксисом плохо знаком, слишком много точек, ковычек, скобочек.... и не понимаю куда именно и что пихать. Я понимаю что тут уместно меня послать за учебники, но садиться за них только из-за одной кнопочки, при катастрофической нехватки времени... не очень удобно.
 
Parse error: syntax error, unexpected T_STRING in /home/********************close_battles.php on line 26

Я поэтому и говорю, то что с синтаксисом плохо знаком, слишком много точек, ковычек, скобочек.... и не понимаю куда именно и что пихать. Я понимаю что тут уместно меня послать за учебники, но садиться за них только из-за одной кнопочки, при катастрофической нехватки времени... не очень удобно.
В 26 строке попробуй поменять на else echo("NO");
 
В общем я сделал так, но когда пишу логин, то есть имя игрока, всё равно закрывается бой у всех... помогите, мозги уже из ушей вытекают от умственного перенапряга :/

Код:
<?php
    session_start();
    if ($_SESSION['uid'] == null) header("Location: index.php");
    include "connect.php";
    mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `count` >= '0' LIMIT 1;"));
    $user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = '{$_SESSION['uid']}' LIMIT 1;"));
    if ($user['login']=="" || $user['login']=="" || $user['login']=="hidden" || $user['login']=="" || $user['login']=="" || $user['login']=="" || $user['login']=="" || $user['login']=="") {

?>
<form method=post action="close_battles.php">
[b]Закрыть бой[/b]
<table>
<table>
<tr><td>Напиши логин персонажа(не работает)</td><td><input type=text name=login value=""></td></tr>
<table>
<tr><td>Напиши 00 для закрытия боя</td><td><input type=text name=battle  value=""></td></tr>

</table>
<INPUT TYPE="submit" value="Закрыть">
</form>

<?

if ($_POST['battle']) {
       
    if (mysql_query("UPDATE users SET battle = '".$_POST['battle']."';"));
$login=$_POST['login'];

{ echo "Закрыли"; }

}
}
?>
 
Можешь подправить так, как правильно, на примере моего кода ? Только уже с синтаксисом....
По моему здесь ; лишняя.
Если бы была лишняя, то помоему php файл вообще выполнить нельзя было бы, а так всё выполняется, но глобально, а не к конкретному юзеру.
 
Код:
<?php
    session_start();
    if ($_SESSION['uid'] == null) header("Location: index.php");
    include "connect.php";
    $user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = '{$_SESSION['uid']}' LIMIT 1;"));
    if ($user['login']=="" || $user['login']=="" || $user['login']=="hidden" || $user['login']=="" || $user['login']=="" || $user['login']=="" || $user['login']=="" || $user['login']=="") {

?>
<form method=post action="close_battles.php">
[b]Закрыть бой[/b]
<table>
<table>
<tr><td>Напиши логин персонажа(не работает)</td><td><input type=text name=login value=""></td></tr>
<table>
<tr><td>Напиши 00 для закрытия боя</td><td><input type=text name=battle  value=""></td></tr>

</table>
<INPUT TYPE="submit" value="Закрыть">
</form>

<?

if ($_POST['battle']) {
$us = mysql_fetch_array(mysql_query("SELECT `login`, `battle` FROM `users` WHERE `login` = '".$_POST['login']."';"));
mysql_query("UPDATE `users` SET `battle` = '0' WHERE `login` = '".$us['login']."';");
{ echo "Закрыли"; }

}
}
?>
держи *wink*
 
Код:
<?php
    session_start();
    if ($_SESSION['uid'] == null) header("Location: index.php");
    include "connect.php";
    $user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = '{$_SESSION['uid']}' LIMIT 1;"));
    if ($user['login']=="" || $user['login']=="" || $user['login']=="hidden" || $user['login']=="" || $user['login']=="" || $user['login']=="" || $user['login']=="" || $user['login']=="") {

?>
<form method=post action="close_battles.php">
[b]Закрыть бой[/b]
<table>
<table>
<tr><td>Напиши логин персонажа(не работает)</td><td><input type=text name=login value=""></td></tr>
<table>
<tr><td>Напиши 00 для закрытия боя</td><td><input type=text name=battle  value=""></td></tr>

</table>
<INPUT TYPE="submit" value="Закрыть">
</form>

<?

if ($_POST['battle']) {
$us = mysql_fetch_array(mysql_query("SELECT `login`, `battle` FROM `users` WHERE `login` = '".$_POST['login']."';"));
mysql_query("UPDATE `users` SET `battle` = '0' WHERE `login` = '".$us['login']."';");
{ echo "Закрыли"; }

}
}
?>
держи *wink*

Зачем делать лишний, ненужный запрос на выборку полей?


юзай просто:
Код:
<?php
    session_start();
    if ($_SESSION['uid'] == null) header("Location: index.php");
    include "connect.php";
    $user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = '{$_SESSION['uid']}' LIMIT 1;"));
    if ($user['login']=="" || $user['login']=="" || $user['login']=="hidden" || $user['login']=="" || $user['login']=="" || $user['login']=="" || $user['login']=="" || $user['login']=="") {

?>
<form method=post action="close_battles.php">
[b]Закрыть бой[/b]
<table>
<table>
<tr><td>Напиши логин персонажа(не работает)</td><td><input type=text name=login value=""></td></tr>
<table>
<tr><td>Напиши 00 для закрытия боя</td><td><input type=text name=battle  value=""></td></tr>

</table>
<INPUT TYPE="submit" value="Закрыть">
</form>

<?

if ($_POST['battle']) {
mysql_query("UPDATE `users` SET `battle` = '0' WHERE `login` = '".$_POST['login']."';");
{ echo "Закрыли"; }

}
}
?>
 
Ткнул спасибки обоим, теперь всё работает. Но у меня остался вопрос по существу, почему бой закрывается только если указать "00" ? А если прописать просто "0" , то ничего не происходит ? Ведь если напрямую через БД осуществлять выход из боя, то достаточно просто "0" написать, в поле battle. Я просто хочу это узнать, если буду ещё что-то подобное делать, и не будет работать.
 
Ткнул спасибки обоим, теперь всё работает. Но у меня остался вопрос по существу, почему бой закрывается только если указать "00" ? А если прописать просто "0" , то ничего не происходит ? Ведь если напрямую через БД осуществлять выход из боя, то достаточно просто "0" написать, в поле battle. Я просто хочу это узнать, если буду ещё что-то подобное делать, и не будет работать.

вот так будет лучше, чтобы тебя этот вопрос не напрягал)))

Код:
<?php
    session_start();
    if ($_SESSION['uid'] == null) header("Location: index.php");
    include "connect.php";
    $user = mysql_fetch_array(mysql_query("SELECT * FROM `users` WHERE `id` = '{$_SESSION['uid']}' LIMIT 1;"));

?>
<form method=post action="#">
[b]Закрыть бой[/b] 

Напиши логин персонажа <input type=text name=login value=""> <INPUT TYPE="submit" value="Закрыть">
</form>
<?
if ($_POST['login']) {
mysql_query("UPDATE `users` SET `battle` = '0' WHERE `login` = '".$_POST['login']."';");
{ echo "Закрыли"; }
}
?>

а суть в том что там было проверка на $_POST['battle'], и при $_POST['battle'] = 0 она не срабатывала, а при $_POST['battle'] = 00 срабатывала
 
ага, и любой желающий сможет так прыгать из боя, зная ссылку.
И если следовать твоему совету, то такой вариант будет лучше, ибо нафига сессия и запрос в базу грубо говоря пустой?
Код:
<?php
    include "connect.php";
?>
<form method=post action="#">
[b]Закрыть бой[/b] 

Напиши логин персонажа <input type=text name=login value=""> <INPUT TYPE="submit" value="Закрыть">
</form>
<?
if ($_POST['login']) {
mysql_query("UPDATE `users` SET `battle` = '0' WHERE `login` = '".$_POST['login']."';");
{ echo "Закрыли"; }
}
?>
либо же, всетаки оставить возможность админам только
Код:
<?php
    session_start();
    if ($_SESSION['uid'] == null) header("Location: index.php");
    include "connect.php";
    $user = mysql_fetch_array(mysql_query("SELECT `login` FROM `users` WHERE `id` = '{$_SESSION['uid']}' LIMIT 1;"));
    if ($user['login']=="hidden") {


?>
<form method=post action="#">
[b]Закрыть бой[/b] 

Напиши логин персонажа <input type=text name=login value=""> <INPUT TYPE="submit" value="Закрыть">
</form>
<?
if ($_POST['login']) {
mysql_query("UPDATE `users` SET `battle` = '0' WHERE `login` = '".$_POST['login']."';");
{ echo "Закрыли"; }
}
}
?>
 
Вобщем то прочитал топ, тема полезная ток я так и непонял куда это помещать ? подскажите *plz* нубику :pistol:
 
Сверху