Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как сохранить выбранное значение?
Kuzma92  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 81
Пользователь №: 46556
На форуме: 1 год, 13 дней
Карма:




Здравствуйте уважаемые специалисты. Есть такой фрагмент кода:
echo"<input name='pencil' type='radio' value='Красный карандаш' id='color1'><label for='color1'>Красный карандаш</label>
<input name='pencil' type='radio' value='Белый карандаш' id='color2'><label for='color2'>Белый карандаш</label>
<input name='pencil' type='radio' value='Синий карандаш' id='color3'><label for='color3'>Синий карандаш</label>"
;

Подскажите, пожалуйста, как сделать так, чтобы выбранное значение сохранялось при перезагрузке страницы, если пользователь где-то не заполнил или заполнил с ошибкой какие-то поля формы (валидация)?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6460
Пользователь №: 35718
На форуме: 12 лет, 4 месяца
Карма: 208




Ну если совсем просто, то вот так


<?php
declare(strict_types=1);

function getRadio(array $item, string $name, string $selectValue): string
{
$html = '';
foreach ($item as $id => $value) {
$checked = $value === $selectValue ? ' checked' : '';
$html .= '<input name="' . $name . '" type="radio" value="'
. $value . '" id="' . $id . '"' . $checked . '><label for="'
. $id . '">' . $value . '</label>';
}

return $html;
}
$item = [
'pencil' => [
'color1' => 'Красный карандаш',
'color2' => 'Белый карандаш',
'color3' => 'Синий карандаш',
],
];


$name = 'pencil';
$selectValue = array_intersect($item[$name], [trim($_REQUEST[$name] ?? '')]);
$selectValue = !empty($selectValue) ? reset($selectValue) : '';
?>
<html>
<
head>
<
title></title>
</
head>
<
body>
<
form>
<?php echo getRadio($item[$name], $name, $selectValue); ?>
<input type="submit" value="Отправить">
</
form>
</
body>
</
html>


--------------------
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kuzma92  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 81
Пользователь №: 46556
На форуме: 1 год, 13 дней
Карма:




Valick, здравствуйте.
Цитата (Valick @ 19.09.2024 - 11:22)
Ну если совсем просто, то вот так

=) Ну для вас конечно это совсем просто. Для меня же, пара моментов оказалась поначалу не совсем понятными. Но теперь уже разобрался что к чему, ваш код изучил, где-то дочитал матчасть, и теперь для меня все стало понятным.
Огромное вам спасибо!
Реально всегда очень благодарен всем кто не проходит мимо.
Успехов!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6460
Пользователь №: 35718
На форуме: 12 лет, 4 месяца
Карма: 208




Цитата (Kuzma92 @ 20.09.2024 - 03:31)
поначалу не совсем понятными. Но теперь уже разобрался что к чему, ваш код изучил, где-то дочитал матчасть, и теперь для меня все стало понятным

Так и должно быть.

Вот немного изменённый код

<?php
declare(strict_types=1);

function getRadio(array $item, string $name, array $selectValueList): string
{
$selectValue = !empty($selectValueList) ? reset($selectValueList) : '';
$html = '';
foreach ($item as $id => $value) {
$checked = $value === $selectValue ? ' checked' : '';
$html .= '<input name="' . $name . '" type="radio" value="' . $value . '" id="' . $id . '"' . $checked
. '><label for="' . $id . '">' . $value . '</label>';
}

return $html;
}

function getCheckbox(array $item, string $name, array $selectValueList): string
{
$html = '';
foreach ($item as $id => $value) {
$checked = in_array($value, $selectValueList) ? ' checked' : '';
$html .= '<input name="' . $name . '[]" type="checkbox" value="' . $value . '" id="' . $id . '"' . $checked
. '><label for="' . $id . '">' . $value . '</label>';
}

return $html;
}

$itemList = [
'pencil' => [
'type' => 'getRadio',
'value' => [
'color1' => 'Красный карандаш',
'color2' => 'Белый карандаш',
'color3' => 'Синий карандаш',

],
],

'paper' => [
'type' => 'getCheckbox',
'value' => [
'format2' => 'A2',
'format3' => 'A3',
'format4' => 'A4',
],
],
];


foreach ($itemList as $itemName => $array) {
$request = $_REQUEST[$itemName] ?? '';
if (!is_array($request)) {
$request = [$request];
}
$selectValueList[$itemName] = array_intersect($array['value'], $request);
}
?>
<html>
<
head>
<
title></title>
</
head>
<
body>
<
form>
<?php
foreach ($itemList as $itemName => $array) {
echo $array['type']($array['value'], $itemName, $selectValueList[$itemName]) . '<hr />';
}
?>
<input type="submit" value="Отправить">
</
form>
</
body>
</
html>


1) Попробуйте добавить в массив любой новый товар и его свойства.
2) Попробуйте добавить обработчик select по аналогии
3) При желании массив $itemList можно хранить в БД

Будет совсем хорошо если вы из этого сделаете какой-то вывод.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kuzma92  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 81
Пользователь №: 46556
На форуме: 1 год, 13 дней
Карма:




Цитата (Valick @ 20.09.2024 - 11:44)
Вот немного изменённый код

А вот это уже куда более интересный вариант, расширяет возможности формы. Я вот, кстати, уже очень скоро как раз и планировал на следующем сайтике делать форму, которая будет более расширенной. Там будут выбираться и категории, и подкатегории, в том числе будет использоваться и select.
Цитата (Valick @ 20.09.2024 - 11:44)
Будет совсем хорошо если вы из этого сделаете какой-то вывод.

и вот как раз я и возьму ваш измененный код как за основу, и начну с ним работать. А пока изучаю его. Для меня важно разобраться в коде, увидеть и понять что и как работает, а не тупо копипастить, потому как если понимаешь, то в дальнейшем уже делаешь самостоятельно, а не возвращаешься за помощью из раза в раз по одному и тому же вопросу. Поэтому
Цитата (Valick @ 20.09.2024 - 11:44)
Будет совсем хорошо если вы из этого сделаете какой-то вывод.

это обязательно.
Valick, вам огромнейшее спасибо, крепко жму вам руку. Обязательно вернусь в эту тему с публикацией того, что у меня получится (как только подойду к этой части), с вашего разрешения для инспекции.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6460
Пользователь №: 35718
На форуме: 12 лет, 4 месяца
Карма: 208




Kuzma92, тут не надо далеко ходить.
Единственный вывод который необходимо сделать из этого кода, это то что код не должен зависить от данных. Иными словами если при изменении/добавлении/удалении данных необходимо менять код, то это звоночек о том, что вы делаете что-то не так.

Цитата (Valick @ 19.09.2024 - 10:22)
Ну если совсем просто, то вот так

Дело в том, что весь выше написанный код - это баловство "на коленке". Для нормального программирования надо изучать ООП и вытекающие из этого технологии SOLID, DDD, TDD и тд.
Лучшей книгой для начала изучения ООП по прежнему считаю [Мэтт Зандстра] – PHP 8 объекты, шаблоны и методики программирования https://vk.com/wall-200520393_323

Вот тот же код написанный на той же коленке за 20 минут, но с применением ООП
Код


<?php
declare(strict_types=1);

interface RequestInterface
{
public function get(string $name): array;
}

class Request implements RequestInterface
{
public function get(string $name): array
{
$request = $_REQUEST[$name] ?? '';
if (!is_array($request)) {
$request = [$request];
}

return $request;
}
}


interface ElementInterface
{
public function addClass(array $class): self;
public function getName(): string;
public function getValue(): array;
public function getHtml(): string;
}

abstract class ElementAbstract implements ElementInterface
{
private string $name;
private array $class = [];
private Request $request;
public function __construct(Request $request, string $name)
{
$this->request = $request;
$this->name = $name;
}

public function addClass(array $class): self
{
$this->class = array_merge($this->class, $class);

return $this;
}

public function getName(): string
{
return $this->name;
}

public function getValue(): array
{
return $this->request->get($this->name);
}

protected function getClass(): string
{
return !empty($this->class) ? ' class ="' . implode(' ', $this->class) . '"' : '';
}

abstract public function getHtml(): string;
}

interface ElementWithItemInterface
{
public function addItem(array $item): self;
public function getItem(): array;
}

abstract class ElementWithItem extends ElementAbstract implements ElementWithItemInterface
{
private array $items = [];
public function __construct(Request $request, string $name)
{
parent::__construct($request, $name);
}

public function addItem(array $item): self
{
$this->items = array_merge($this->items, $item);

return $this;
}

public function getItem(): array
{
return $this->items;
}

public function getValue(): array
{
return array_intersect($this->getItem(), parent::getValue());
}
}


final class Radio extends ElementWithItem
{
public function getHtml(): string
{
$html = '';
foreach ($this->getItem() as $id => $value) {
$checked = in_array($value, $this->getValue()) ? ' checked' : '';
$html .= '<div class="form-check form-switch"><input' . $this->getClass() . ' name="' . $this->getName()
.
'" type="radio" value="' . $value . '" id="' . $id . '"' . $checked . '><label for="'
. $id . '">' . $value . '</label></div>';
}

return $html;
}
}


final class Checkbox extends ElementWithItem
{
public function getHtml(): string
{
$html = '';
foreach ($this->getItem() as $id => $value) {
$checked = in_array($value, $this->getValue()) ? ' checked' : '';
$html .= '<div class="form-check form-switch"><input' . $this->getClass() . ' name="' . $this->getName()
.
'[]" type="checkbox" value="' . $value . '" id="' . $id . '"' . $checked . '><label for="'
. $id . '">' . $value . '</label></div>';
}

return $html;
}
}


// Клиентский код
$request = new Request();
$pencil = new Radio($request,'pencil');
$pencil->addItem([
'color1' => 'Красный карандаш',
'color2' => 'Белый карандаш',
'color3' => 'Синий карандаш',
])->
addClass([
'form-check-input'
]);

$paper = new Checkbox($request,'paper');
$paper->addItem([
'format2' => 'A2',
'format3' => 'A3',
'format4' => 'A4',
])->
addClass([
'form-check-input'
]);
// Вывод шаблона
?>
<html>
<
head>
<
title></title>
<
link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH"
crossorigin="anonymous">
</
head>
<
body>
<
div class="container">
<
form>
<
h2>radio</h2>
<?php echo $pencil->getHtml(); ?>
<hr />
<
h2>checkbox</h2>
<?php echo $paper->getHtml(); ?>
<hr />
<
input type="submit" value="Отправить">
</
form>
</
div>
</
body>
</
html>



Пример выполнения скрипта http://kaval.beget.tech/form.php


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



חשב את עצמו
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6963
Пользователь №: 1
На форуме: 19 лет, 1 месяц, 12 дней
Карма: 145




Цитата (Valick @ 21.09.2024 - 09:39)
Для нормального программирования надо изучать

Для нормального программирования нужно мыслить алгоритмами. Вопрос оформления вторичен.

Как я бы сделал:
1. Массив имен и типов полей ввода.
2. В цикле по массиву создается обертка из html. Одновременно проверяя что пришло из $_POST.
Собственно, и всё. 5 минут работы, 2 десятка строк понятного логичного кода.

А если потребуется добавлять функционал, либо добавляем элементы массива, либо добавляем необходимое в обертку.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kuzma92  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 81
Пользователь №: 46556
На форуме: 1 год, 13 дней
Карма:




Valick, огромнейшее вам спасибо за подробный ответ и развернутый пример. Смотрю, изучаю. Для меня все это - ценная полезная информация.
Реально очень всем благодарен за ответы, для меня это важно, в планах реализация многих разнообразных проектов. Так что это
Цитата (Valick @ 21.09.2024 - 11:39)
Лучшей книгой для начала изучения ООП по прежнему считаю [Мэтт Зандстра] – PHP 8 объекты, шаблоны и методики программирования https://vk.com/wall-200520393_323

придется полюбому открывать и читать :)
FatCat, если вы не против, то не отказался бы посмотреть и то
Цитата (FatCat @ 22.09.2024 - 00:14)
Как я бы сделал

буду вам очень благодарен.
Для меня действительно важен каждый ответ/мнение. Никогда не игнорирую ответы, всегда черпаю с каждого ответа для себя что-то полезное. Потому что книга как бы там ни было - это теория (которая несомненно нужна!), а когда на практике по какому-либо конкретному случаю (с которым сталкиваешься) получаешь реальный код, то здесь уже наглядно ты видишь как его составляет грамотный специалист, разбираешь его, дополнительно обращаешься к матчасти (там где что-то не понимаешь), ну и по итогу полностью разбираешься в нем. Как мне кажется, это важно, по крайней мере для меня так.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



חשב את עצמו
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6963
Пользователь №: 1
На форуме: 19 лет, 1 месяц, 12 дней
Карма: 145




Цитата (Kuzma92 @ 22.09.2024 - 00:45)
не отказался бы посмотреть

Я все написал. Если что-то не понятно, спрашивайте. Вместе напишем код.

Я заглядываю на форум, как правило, с мобильника из машины. Не самые удобные условия для, писания кода.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6460
Пользователь №: 35718
На форуме: 12 лет, 4 месяца
Карма: 208




Цитата (FatCat @ 21.09.2024 - 23:14)
В цикле по массиву создается обертка из html. Одновременно проверяя что пришло из $_POST.

Это не правильный подход. После отправки формы на сервер данные для выполнения бизнес логики нужны до их вывода. В большинстве случаев если все данные валидные, то форма вообще больше не выводится.
Получение и валидация данных должна быть отдельно от представления.

Собственно в процедурном варианте моего и есть описанный алгоритм
1) Массив имен и типов полей ввода + данные для таких полей как (radio, checkbox, sekect)
2) Получение и обработка данных по массиву
3) Сборка html обёртки и вывод в браузер.

В ООП варианте массив уже не нужен, а сама обработка, валидация и сборка html-обёртки становится более гибкой и лояльной к расширению функционала.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



חשב את עצמו
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6963
Пользователь №: 1
На форуме: 19 лет, 1 месяц, 12 дней
Карма: 145




Цитата (Valick @ 22.09.2024 - 08:26)
если все данные валидные, то форма вообще больше не выводится

Ты хочешь добавить это требование? Нет проблем. Для этого требования будет свой алгоритм. А запишешь ты его портянкой кода, разобьешь ли на функции, или на классы — это вопросы оформления для удобства последующей работы с кодом.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6460
Пользователь №: 35718
На форуме: 12 лет, 4 месяца
Карма: 208




Цитата (FatCat @ 22.09.2024 - 10:46)
это вопросы оформления для удобства

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


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



חשב את עצמו
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6963
Пользователь №: 1
На форуме: 19 лет, 1 месяц, 12 дней
Карма: 145




Цитата (Valick @ 22.09.2024 - 10:24)
Вы как доктор должны понимать, что трудно объяснить разницу между например красным и серым дальтонику

Возможно, пример неудачный. Дальтоник видит цвета, но не так, как обычный человек.
Я, например, как дальтоник, не вижу подделки в копиях картин, написанных художниками дальтониками — те подделки, котооые «бьют по глазам» человеку с обычным зрением. Зато, будучи дальтоником, я ни разу из сотен раз в жизни ни ошибся с поддельными долларами, которые для человека с обычным зрением неотличимы от подлинных.

Возвращаясь к программированию, если есть цель и есть инструменты достижения этой цели, моя задача выстроить последовательность применения инструментов — создать алгоритм.

Хочешь сказать, что ООП позволит достигнуть цели, не имея алгоритма?


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6460
Пользователь №: 35718
На форуме: 12 лет, 4 месяца
Карма: 208




Цитата (FatCat @ 22.09.2024 - 12:43)
Хочешь сказать, что ООП позволит достигнуть цели, не имея алгоритма?

Я говорю ровно то, что хочу сказать. Не надо приписывать мне чужие мысли smile.gif
Касательно алгоритма. ОПП позволяет быстро выявить изъяны алгоритма. Если при написании кода приходиться нарушать парадигму ООП, значит в алгоритме есть изъян. В ООП уже давно есть так называемые паттерны проектирования, это ни что иное как конкретные алгоритмы отточенные годвми и миллионами программистов. Паттерны в подавляющем большинстве абстрагированны от конкретного ЯП.
ООП код легко масштабировать и переносить между проектами.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



חשב את עצמו
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6963
Пользователь №: 1
На форуме: 19 лет, 1 месяц, 12 дней
Карма: 145




Цитата (Valick @ 22.09.2024 - 13:07)
ОПП позволяет быстро выявить изъяны алгоритма.

Допускаю, что это возможно.
Мне не очень понятно, что такое «изъяны алгоритма». В моем понимании, алгоритм — это траектория от точки А к точке Б. Как и в реальной жизни, например, за рулем, я могу доехать разными путями. Но либо у меня есть верный маршрут (алгоритм), и я доехал, или нет, и я заблудился. Допускаю, что ООП, ведя проторенными тропами, помогает прокладывать более надежный маршрут. За счет увеличения объемы кода и нагрузки на сервер, но надежный.


Цитата (Valick @ 22.09.2024 - 13:07)
Паттерны в подавляющем большинстве абстрагированны от конкретного ЯП.

Поверишь ли, в медицине тоже. Позволяют абстрагировать лечение от конкретного больного. Прекрасно работают, когда каждые 8 часов у больного меняется врач.

Но если я сам врач, и лечу сам себя — я у себя один, и в жопу эти паттерны, я потрачу вдесятеро больше времени, но я сделаю себе индивидуальный план лечения. В моем конкретном случае это 1 постоянный препарат, а не 7 препаратов каждый день, если меня лечить по протоколу.

И если сайт я делаю не в продакшн, а для себя любимого, это мой любимый «хомяк», и работа в команде над большим проектом не планируется — если я и пользуюсь паттернами, то от лени, когда проще взять готовое, чем самому писать и отлаживать.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса