Как поступить если данных много....

flipper

Guest
Как поступить если данных много....

Привет всем!
Так вот ...
есть задача о учете компьютерной техники, так вот допустим мне надо ввести данные какого нибудь компа(железо, сетевую конфигурацию и т.д...), но оказалось их очень много.... Вот хотел бы спросить, как лучше сделать ввод всех этих данных: за один раз(форма с кучей данных) или по-странично(допустим, на одной данные матерки, на другой процессора и т.д.).

Сам считаю что лучше сделать по-странично, но тогда придется хранить промежуточные данные; так как использую сессии, то данные думаю хранить в них же... как думаете правильно ли я "думаю" ;) или можно по другому.
Спасибо.

P.S: если что, не судите строго тупого новичка ;)
 

IntenT

SkyDiver
flipper
Разницы нет.. Все это влияет на удобство пользователя.
Заносить данные надо сразу в БД, постепенно их дополняя (в случае многостраничного ввода)
 

HEm

Сетевой бобер
постранично или все сразу - это твое дело, точнее даже не твое а надо делать так, как будет удобнее пользователю
"хранить в сессии" - да

если сделаешь все на одной странице то, скажем сделать кнопочку "создать новое описание на базе существующего компьютера" будет гораздо проще (т.е. скопировать данные из существующей записи и подправить там пару мест (добавил в записи компьютера К2 описание CD-RW, которого нет в К1, в остальном они одинаковы) чтобы не писать все заново)

-~{}~ 11.03.04 19:12:

IntenT
а зачем сразу в БД? а если человеку нужен будет откат?
 

Саня

Guest
Верно, но если он будет заполнять одновременно две формы в разных окнах параллельно, то что тогда будет с сессией?

З.Ы. Возможно, в данном случае такое маловероятно, но на будущее...
 

IntenT

SkyDiver
HEm
Потому что в БД - надежнее
Нужен откат - удалил запись. А если набирал, потом пошел чай пить, пришел - ан сессия-то и сдохла.
 

su1d

Старожил PHPClubа
сразу пихать всё в БД -- нельзя ни в коем случае, т.к. если у админа пропадёт связь между первым и вторым экраном, в БД будет половина записи.

можно хранить в сессиях, как ты хочешь, но тебе уже сказали, что появится проблема ввода записей в двух окнах одновременно: сессия-то одна на оба окна.
этого можно избежать, если на первом экране сгенерить какой-нибудь уникальный идентификатор и уже по нему отождествлять форму:
PHP:
$form_id = md5(microtime());
$_SESSION['form_data']['form_id'] = array(
'name' => 'tovar',
'quantity' => 10,
);
если не хочется засорять сессии, то таскай из экрана в экран все данные формы:
PHP:
$form_data_txt = base64_encode(serialize($form_data));
$form_data_txt .= md5($form_data_txt . "SECRET KEY");
echo "<input type=hidden name='form_data' value='$form_data_txt' />";
хэширование данных с паролем SECRET KEY нужно для того, чтобы ты был уверен, что эти данные идут только от тебя. по получении этого поля, "откусываешь" последние 32 символа и проверяешь -- являются ли они хэшем остального текста. если да -- всё ок, это данные твоей формы с предыдущих экранов.
 

flipper

Guest
Автор оригинала: IntenT
flipper
Заносить данные надо сразу в БД, постепенно их дополняя (в случае многостраничного ввода)
-~{}~ 12.03.04 20:39:

Еще раз привет!
Спасибо за ваши ответы.

Почитав ваши ответы пришел к выводу что буду использовать многостраничный ввод, а данные хранить в сессии.

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

а нельзя ли в качестве идентификатора использовать что- нибудь по-смыслу... например:
PHP:
  $form_id = $_GET['form_name'];  
  $_SESSION['form_data'][$form_id] = array(.....);
да и хотел узнать что значит "засорять сессии", есть какое-то ограничение или еще что-то?



P.S: не понил почему админы впихнули мой вопрос в Offtopic.... ;)
 

Доктор

Новичок
Идеологически и практически вернее использовать при многостарничных формах хидден поля.
 

flipper

Guest
Автор оригинала: Доктор
Идеологически и практически вернее использовать при многостарничных формах хидден поля.
т.е таскать со страницы на страницу, я правильно понял ?
 

su1d

Старожил PHPClubа
а нельзя ли в качестве идентификатора использовать что- нибудь по-смыслу...
а смысл? тебе тогда $form_id всё равно нужно делать случайным, чтобы решить проблему ввода данных через одну и ту же форму, но в двух одновременно открытых окнах броузера.

да и хотел узнать что значит "засорять сессии", есть какое-то ограничение или еще что-то?
нет, ограничений никаких, вполне можно и сессии юзать, просто это как-то... некрасиво что ли.

теоретически, что мне мешает дёргать создание новой формы в сессии несколько раз, увеличивая размер файла моей сессии и тем самым забивая твою квоту в жалкие 20Мб на хостинге? =) это уже почти целый Denial Of Service получается... продолжительностью во время жизни моей сессии, да.
 

flipper

Guest
Автор оригинала: su1d
а смысл? тебе тогда $form_id всё равно нужно делать случайным, чтобы решить проблему ввода данных через одну и ту же форму, но в двух одновременно открытых окнах броузера.
а разве сессии не уникальны(и файлы сессии где будет хранится этот массив, тоже)?
 
Сверху