Всем привет такая проблема.
Переписываю по тихоньку 1 игрушку под себя и столкнулся с такой проблемой.
Механизм поиска вещи:
case 'poisk';
$item=(int)$_POST['item'];
echo"<div class=dot>Вещь в инвентаре :</div>";
$it0=mysql_query("SELECT * FROM `item` WHERE `id`='".$item."'");
while($item0=mysql_fetch_array($it0)){
echo'Вещь находится у '.$item0[usr].'';
}
echo"<div class=dot>Вещь на складе :</div>";
$it1=mysql_query("SELECT * FROM `sklad` WHERE `id`='".$item."'");
while($item1=mysql_fetch_array($it1)){
echo'Вещь находится на складе у '.$item1[usr].'';
}
echo"<div class=dot>Вещь на базаре:</div>";
$it2=mysql_query("SELECT * FROM `bazar` WHERE `id`='".$item."'");
while($item2=mysql_fetch_array($it2)){
echo'Вещь находится на базаре у '.$item2[usr].'';
}
echo"<div class=dot>Вещь на vip базаре:</div>";
$it3=mysql_query("SELECT * FROM `bazar_vip` WHERE `id`='".$item."'");
while($item3=mysql_fetch_array($it3)){
echo'Вещь находится на vip базаре у '.$item3[usr].'';
}
echo"<div class=dot>Вещь на складе клана:</div>";
$it4=mysql_query("SELECT * FROM `sklad_klan` WHERE `id`='".$item."'");
while($item4=mysql_fetch_array($it4)){
echo'Вещь находится на складе у клана '.$item4[clan].'';
}
break;
срабатывает любой запрос только в случае если он первый.помогите подкорректировать,пожалуйста
как-то я не увидел ни одного условия на проверку...
В идеале должно получиться что-то типа такого
case 'poisk';
$item=(int)$_POST['item'];
$it0=mysql_query("SELECT * FROM `item` WHERE `id`='".$item."'");
$it1=mysql_query("SELECT * FROM `sklad` WHERE `id`='".$item."'");
$it2=mysql_query("SELECT * FROM `bazar` WHERE `id`='".$item."'");
$it3=mysql_query("SELECT * FROM `bazar_vip` WHERE `id`='".$item."'");
$it4=mysql_query("SELECT * FROM `sklad_klan` WHERE `id`='".$item."'");
if(mysql_num_rows($it0) > 0)
{
$item = mysql_fetch_assoc($it0);
echo'Вещь находится у '.$item[usr].'';
}
elseif (mysql_num_rows($it1) > 0)
{
$item = mysql_fetch_assoc($it1);
echo'Вещь находится на складе у '.$item[usr].'';
}
elseif (mysql_num_rows($it2) > 0)
{
$item = mysql_fetch_assoc($it2);
echo'Вещь находится на базаре у '.$item[usr].'';
}
elseif (mysql_num_rows($it3) > 0)
{
$item = mysql_fetch_assoc($it3);
echo'Вещь находится на vip базаре у '.$item[usr].'';
}
elseif (mysql_num_rows($it4) > 0)
{
$item = mysql_fetch_assoc($it4);
echo'Вещь находится на складе у клана '.$item[clan].'';
}
else
{
echo 'Вещь не найдена';
}
break;
а почему написано
$item =(int) $_POST [ 'item' ]; если надо
$item =intval($_POST [ 'item' ]); или я чего-то не знаю ?
# Homelion (25.02.2014 / 09:10)
а почему написано
$item =(int) $_POST [ 'item' ]; если надо
$item =intval($_POST [ 'item' ]); или я чего-то не знаю ?
Собственно это просто приведение к целому числу. У intval можно указать вторым параметром основание системы счисления для конвертации.
А так разницы нету. Что так верно, что так.
GhosT-ReCoN, тут база данных не верно структрированна, вещь должна быть одна, а не несколько, у тебе сейчас на каждое место нахождения вещи своя таблица, чем больше мест, тем больше таблиц
если сделать таблицу вещей одну и поле в котором храниться где вещь находится , телодвижений будет в рады меньше, и нагрузки
Koenig прав!добавь числовое поле где 1-это склад, 2-это базар и так далее....
Koenig, не сказал бы.
для каждого места свои параметры задаются.
к примеру на базаре задаются такие параметры как цена количество время работы лавки.
на складе клана добавляется строка клана в котором она лежит....
а я понял...
просто при изменении местоположения помимо стандартных записей записывать еще в вещи расположение?
но так это наоборот меньше запросов,ктому же мне еще надо указывать у кого именно она,А нее ее местонахождение,и вещь одна! она при перемещениях удаляется у 1го источника передается другому.
к примеру с инвентаря на склад. в инвентаре удалило на складе положило.
а поиск для администрации в случае спорных вопросов о ее местоположении.
GhosT-ReCoN, при грамотной структуре таблиц все проще, как лавка работает вещь знать не должна, это уже дела лавки, а не вещи, на какой полке на складе лежит вещь знать тоже не должна, знать об этом должен склад