|
|
|
| имеется таблица items следующего формата(все поля - int)
|id|mat1|count1|mat2|count2|mat3|count3|
и таблица inventory формата(все поля - int)
|id_owner|type_mat|
$id=$_GET['id'];
$query=mysql_query("SELECT * FROM items WHERE id=$id");
$result=mysql_fetch_array($query);
$query=mysql_query("SELECT COUNT(*) FROM inventory WHERE type_mat='".$result['mat1']."' ");
if (mysql_num_rows($query)>$result['count1'])
{
$query=mysql_query("SELECT COUNT(*) FROM inventory WHERE type_mat='".$result['mat2']."' ");
if (mysql_num_rows($query)>$result['count2'])
{
$query=mysql_query("SELECT COUNT(*) FROM inventory WHERE type_mat='".$result['mat3']."' ");
if (mysql_num_rows($query)>$result['count3'])
{
echo 'Все в порядке.';exit;
} else $err=true;
} else $err=true;
} else $err=true;
if ($err=='true') {echo 'Ошибка! У Вас не хватает мат-ов.';}
Собственно, последние 3 запроса хотелось бы объединить в один, если, конечно, такое возможно. | |
|
|
|
|
|
|
|
для: Brandon Hit
(08.02.2006 в 15:55)
| | Ага!
Странные конструкции. Запрос типа
SELECT COUNT(*) FROM inventory WHERE type_mat=$result['mat1']
|
всегда будет выдавать одну строку в результирующем наборе. Непонятно тогда, зачем нужна проверка
mysql_num_rows($query)>$result['count1']
|
скорее вcего вы хотели что-то типа
$query=mysql_query("SELECT COUNT(*) as cnt FROM inventory WHERE type_mat='".$result['mat1']."' ");
if (mysql_result($query, 0, 'cnt')>$result['count1'])
|
Скажите на словах, что пытаетесь добиться. Тогда попробуем составить запрос | |
|
|
|
|
|
|
|
для: WebTech
(08.02.2006 в 18:08)
| | ой:)
Вообщем, в таблице inventory хранится инвентарь игрока. Надо бы проверить, достаточно ли у игрока необходимых ресурсов. mat1, mat2, mat3 - type_mat в inventory; count1, count2, count3 - необходимое кол-во ресурсов. | |
|
|
|
|
|
|
|
для: Brandon Hit
(09.02.2006 в 04:07)
| | Т.е. mat1, mat2, mat3 - имеющееся кол-во ресурсов, а count1, count2, count3 - необходимое кол-во ресурсов и нужно проверить, чтобы mat было => count? Тогда зачем таблица inventory? | |
|
|
|
|
|
|
|
для: WebTech
(09.02.2006 в 10:32)
| | Нет:)
Сейчас объясню...
Переделал таблицы, дал нормальные названия полям и теперь у них такой формат:
-- Структура таблицы 'game_items'
CREATE TABLE 'game_items' (
'id_item' int(11) NOT NULL auto_increment,
'name' text NOT NULL,
'material1' int(11) NOT NULL default '0',
'count1' int(11) NOT NULL default '0',
'material2' int(11) NOT NULL default '0',
'count2' int(11) NOT NULL default '0',
'material3' int(11) NOT NULL default '0',
'count3' int(11) NOT NULL default '0',
PRIMARY KEY ('id_item')
) TYPE=MyISAM AUTO_INCREMENT=9 ;
-- Дамп данных таблицы 'game_items'
INSERT INTO 'game_items' VALUES (1, 'Кусок железа.', 0, 0, 0, 0, 0, 0);
INSERT INTO 'game_items' VALUES (2, 'Сталь', 0, 0, 0, 0, 0, 0);
INSERT INTO 'game_items' VALUES (3, 'Бронза', 0, 0, 0, 0, 0, 0);
INSERT INTO 'game_items' VALUES (4, 'Серебро', 0, 0, 0, 0, 0, 0);
INSERT INTO 'game_items' VALUES (5, 'Золото', 0, 0, 0, 0, 0, 0);
INSERT INTO 'game_items' VALUES (6, 'Мефрил', 0, 0, 0, 0, 0, 0);
INSERT INTO 'game_items' VALUES (7, 'Шлем воина', 1, 3, 0, 0, 0, 0);
INSERT INTO 'game_items' VALUES (8, 'Меч Силы', 1, 3, 3, 2, 5, 1);
|
Это была таблица предметов, которые естьв игре.
material1, material2, material3 - номера предметов в game_items, необходимые для создания этого предмета.
count1, count2, count3 - необходимое количество предметов (material1, material2, material3) для создания этого предмета.
Т.е. например, для Шлема воина надо 3 железа, а чтобы создать Меч силы - 3 железа, 2 бронзы и 1 кусок золота.
а вот такая структура у game_inventory
-- Структура таблицы 'game_inventory'
CREATE TABLE 'game_inventory' (
'id_owner' int(11) NOT NULL default '0',
'id_item' int(11) NOT NULL default '0'
) TYPE=MyISAM;
-- Дамп данных таблицы 'game_inventory'
INSERT INTO 'game_inventory' VALUES (1, 1);
INSERT INTO 'game_inventory' VALUES (1, 1);
INSERT INTO 'game_inventory' VALUES (1, 1);
INSERT INTO 'game_inventory' VALUES (1, 5);
|
id_owner - владелец предметов();
id_item для связи с game_items через id_item
Вся трудность в том, что в таблице предметы хранятся в формате 1 запись - 1 предмет.
Т.е. у меня сецчас в game_inventory 3 куска железа и 1 кусок золота.
Внимание, теперь задача:)
Нужно проверить достаточно ли у игрока предметов для создания других предметов:) | |
|
|
|
|
|
|
|
для: Brandon Hit
(09.02.2006 в 14:17)
| | Для создания какого-либо предмета требуется не более 3-х других предметов? Или может быть больше? Судя по таблице, не более 3-х. | |
|
|
|
|
|
|
|
для: WebTech
(09.02.2006 в 15:33)
| | да, не более трех других видов, но необходимое количество этих видов различно. | |
|
|
|
|
|
|
|
для: Brandon Hit
(09.02.2006 в 15:44)
| | Что-то не получается все одним запросом сделать :-( Будем еще подумать... | |
|
|
|
|
|
|
|
для: WebTech
(11.02.2006 в 15:50)
| | да наверное, и не получится=( | |
|
|
|
|