Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вибираем данные
 
 автор: FaStY   (29.03.2006 в 22:09)   письмо автору
 
 

вот какой вопрос:
есть поле в таблице называется action, в нем данные записываются в виде

2:1(left,right);1:2(right,center);

Здесь значение перед двоеточием обозначает id игрока, который ходит, а после двоеточия, кого он бъет. зател в скобках такие данные: до запятой- как он бъет, после - как он уворачивается, Эти данные записываются через точку запятой, после каждого удара пользователя(number_act). Потом есть таблица с номерами ходов. Подскажите, как сделать лог? т.е. как мне вытащить эти данные? т.е. чеб было хотя бы так:

Ход 1:пользователь '2'  ударил  'left' в пользователя '1', и потом отошел в 'right'
Ход 1:пользователь '1'  ударил 'right' в пользователя '2', и потом отошел в  'left'

ну и наподобие, просто я не знаю как соединить номер хода и то, что пользователь сделал. Вот как проиходит заполнение базы:

number_act: 1;2;3;4;5; и т.д.
action:2:1(left,right);1:2(right,center);2:1(left,right);1:2(right,center); и т.д.

   
 
 автор: Trianon   (29.03.2006 в 22:17)   письмо автору
 
   для: FaStY   (29.03.2006 в 22:09)
 

А почему такая мешанина?
Почему в одном поле свалено всё, что только можно?
Не лучше ли было сделать столбики

| id | время | драка | ход | кто_ударил | кого_ударил | куда_ударил | куда_отошел |

?

   
 
 автор: FaStY   (29.03.2006 в 22:26)   письмо автору
 
   для: Trianon   (29.03.2006 в 22:17)
 

так быстро разрастеться таблица :), а мне нуна именно моим способом.

   
 
 автор: Trianon   (29.03.2006 в 22:32)   письмо автору
 
   для: FaStY   (29.03.2006 в 22:26)
 

Тогда Вам прямая дорога в [url=index.php?id_forum=6 ]Рег.Выр. [/url]
'|(\d):(\d)\((left|right|center)\);(\d):(\d)\((left|right|center)\)|'

   
 
 автор: Trianon   (29.03.2006 в 22:42)   письмо автору
 
   для: FaStY   (29.03.2006 в 22:26)
 

Однозначно можно сказать, что БД может хранить эти center left right существенно компактнее, чем это делаете Вы. Так что в каком случае таблица разрастется - вопрос очень и очень открытый. А то что поиск по Вашему варианту хранения потребует совершенно нечеловеческих (и даже немашинных ресурсов) - к бабке не ходи прямо сейчас.

   
 
 автор: FaStY   (30.03.2006 в 12:05)   письмо автору
 
   для: Trianon   (29.03.2006 в 22:42)
 

а как вы бы посоветовали? как вы написали до этого?

   
 
 автор: Trianon   (30.03.2006 в 12:13)   письмо автору
 
   для: FaStY   (30.03.2006 в 12:05)
 

Трудно сказать, не зная деталей игры.
Возможно, я завел бы две таблицы - Одну для драк, протекающих в настоящее время, а другую - для уже завершенных.
Первую наверное сделал бы примерно так, как описал. Возможно лишь упрятал бы параметры хода в одно поле.
Во вторую складывал бы по одной записи на каждую завершившуюся драку.
Данные брал бы из первой таблицы, и конечно оттуда их тут же бы выкидывал.
Безусловно, это только черновик рассуждений. Детали определились бы в процессе разработки.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования