[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тип SET!
Lelik36
Привет всем!Будьте так добры помогите начинающему!!!
Суть проблемы такова:
1.Есть сайт,где пользователь добавляет свою анкету.В этой форме есть поле из нескольких checkbox'ов.Необходимо при выборе нескольких значений,все их занести в бд.Для этого создал колонку в бд 'uslugi' SET('a','b','c').
2.Есть форма:

<form action="" method="post">
<input
name="uslugi" type="checkbox" value="1" />aaa<br />
<input
name="uslugi" type="checkbox" value="2" />bbb<br />
<input
name="uslugi" type="checkbox" value="3" />ccc<br />
</form>


3.Результат такой:сколько бы я не выбрал значений,в колонке "uslugi" делается запись типа (а,с)!
4.Почему не пойму!
Есть советы- пожалуйста напишите!Заранее благодарю!



Спустя 6 минут, 21 секунда (25.02.2010 - 23:16) Soldier Ghost написал(а):

<form action="" method="post">
<input
name="uslugi[]" type="checkbox" value="1" />aaa<br />
<input
name="uslugi[]" type="checkbox" value="2" />bbb<br />
<input
name="uslugi[]" type="checkbox" value="3" />ccc<br />
</form>


А в php принимай так

for($i = 0; $i < count($_POST['uslugi']); $i++)
{
//и тут уже работаеш с $_POST['uslugi'][$i]
}

Спустя 12 часов, 53 минуты, 44 секунды (26.02.2010 - 12:10) Lelik36 написал(а):
Soldier Ghost
От души!!!Но для меня
for($i = 0; $i < count($_POST['uslugi']); $i++)
{
//и тут уже работаеш с $_POST['uslugi'][$i]
}

если честно не понятно(что поделаешь- чайник! cool.gif ).
Если не сложно,можно поподробнее!для наглядности код:
  if($ok)
{
if(!$category)
$error[] = NO_category;
if(!$natsional)
$error[] = NO_natsional;
if(!$name)
$error[] = NO_name;
if(!$vozrost)
$error[] = NO_vozrost;
if(!$rost)
$error[] = NO_rost;
}

if($ok && count($error) == 0)
{

mysql_query("INSERT INTO `". DB_PREFIX ."anketa`
SET
`category` = '"
. $category ."',
`natsional` = '"
. $natsional ."',
`name` = '"
. $name ."',
`vozrost` = '"
. $vozrost ."',
`rost` = '"
. $rost ."',
`uslugi` = '"
. $uslugi ."',
`info` = '"
. $info."'
"
) or die(SISTEM_ERROR);

header('location: '. $_SERVER['PHP_SELF']);
exit();

}

cool.gif !!!

Спустя 31 минута, 43 секунды (26.02.2010 - 12:42) twin написал(а):
Не понял я чегото... А услуги где хранятся, в одной ячейке через запятую что ли?

Спустя 3 минуты, 53 секунды (26.02.2010 - 12:45) Soldier Ghost написал(а):
twin как я понял пока ещё не хранятся он хочет сделать так чтобы хранились )
Lelik36 тебе нужно чтоб через запятую они там хранились?

Спустя 4 минуты, 47 секунд (26.02.2010 - 12:50) Lelik36 написал(а):
twin
Ну вроде как да!SET вроде это тип множества!Просто услуг будет более 50!Или создавать каждую ячейку под каждую услугу!?!?Вот и я не пойму!Как лучше сделать.Или надо создать отдельную таблицу 'uslugi'!!??Застопорился на этом!Хотя смотрел html-код подобных сайтов,там реализованно через одну ячейку.


Спустя 3 минуты, 38 секунд (26.02.2010 - 12:54) Lelik36 написал(а):
Soldier GhostСмотри!Это нужно для того,что бы в дальнейшем эта ячейка служила основным критерием выборки(поиска).Как бы классификатор,т.е. пользователь ищет анкету по нужным ему услугам,которые выбираются из бд.

Спустя 2 минуты, 18 секунд (26.02.2010 - 12:56) twin написал(а):
Ну хочешь одну - юзай implode()
А вообще все зависит от того, что дальше с ними делать, с услугами. Если просто вывести - одно. А если потом разбирать - другое.

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

Спустя 4 минуты (26.02.2010 - 13:00) Lelik36 написал(а):
вот так выглядит форма:

<form action="" method="post">
<table
border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td
colspan="2"><h3><?php echo error($error); ?></td>
</tr>
<tr>
<td
align="right"><h3>Национальность:</td>
<td>
<input
name="natsional" type="text" size="15" value="<?php echo $natsional; ?>" /></td>
</tr>
<tr>
<td
align="right"><h3>Имя: </td>
<td>
<input
name="name" type="text" size="10" value="<?php echo $name; ?>" /></td>
</tr>
<tr>
<td
align="right"><h3>Возрост: </td>
<td>
<input
name="vozrost" type="text" size="2" value="<?php echo $vozrost; ?>" /></td>
</tr>
<tr>
<td
align="right"><h3>Рост: </td>
<td>
<input
name="rost" type="text" size="2" value="<?php echo $rost; ?>" /></td>
</tr>
<tr>
<td
align="right"><h3>Вес: </td>
<td>
<input
name="ves" type="text" size="2" value="<?php echo $ves; ?>" /></td>
</tr>
<tr>
<td
align="right"><h3>Услуги: </td>
<td>
<input
name="uslugi[]" type="checkbox" value="1" />ааа<br />
<input
name="uslugi[]" type="checkbox" value="2" />ббб<br />
<input
name="uslugi[]" type="checkbox" value="3" />ввв<br /></td>
</tr>
<tr>
<td
align="right"><h3>О себе: </td>
<td>
<textarea
name="info" rows="3" cols="30" value="<?php echo $info; ?>"></textarea></td>
</tr>

<tr>
<td
align="center" colspan="2"><input name="ok" type="submit" value="Добавить анкету" /></td>
</tr>
</table>
</form>

Спустя 2 минуты, 37 секунд (26.02.2010 - 13:03) twin написал(а):
Форма то зачем? С формой как раз все ясно. Ты потом будешь как использовать колонку? Выбирать все записи, в которых есть 1?

Спустя 1 минута, 51 секунда (26.02.2010 - 13:05) Lelik36 написал(а):
twin
Дело втом,что и выводиться они будут(просмотр анкет на странице) и искать по ним тоже нужно!

Спустя 7 минут, 30 секунд (26.02.2010 - 13:12) Lelik36 написал(а):
twin
Для начало анкета должна появиться на странице (с перечисленными услугами).Но так как этих анкет будет очень много,для удобства делаю классификатор,т.е. будет форма со всеми услугами.Пользователь отмечает услуги,которые ему необходимы и "ок".Посылается запрос в бд и выбираются от туда все анкеты,где есть те услуги,которые перечислил пользователь при запросе!Вот такая суть!
cool.gif

Спустя 15 минут, 55 секунд (26.02.2010 - 13:28) twin написал(а):
Ну так тогда
    $uslugi =  count($_POST['uslugi'])?$_POST['uslugi']:array();      

mysql_query("INSERT INTO `". DB_PREFIX ."anketa`
SET
`category` = '"
. $category ."',
`natsional` = '"
. $natsional ."',
`name` = '"
. $name ."',
`vozrost` = '"
. $vozrost ."',
`rost` = '"
. $rost ."',
`uslugi` = '"
. implode(', ', $uslugi) ."',
`info` = '"
. $info."'
"
) or die(SISTEM_ERROR);

Только не вижу нигде обработки данных для запроса...

Спустя 11 минут, 15 секунд (26.02.2010 - 13:39) Lelik36 написал(а):
twin
С большим уважение отношусь к тебе.Постоянно юзаю твой личный сайт и курсы на этом форуме.Кстати оттуда взял регистрацию пользователей и по ней же делаю регистрацию анкет.Но не настолько я ещё знаток PHP,что бы понимать всё,что ты пишешь!
$uslugi =  count($_POST['uslugi'])?$_POST['uslugi']:array(); 

Эта переменная у меня описана в отдельном файле.
Цитата
Только не вижу нигде обработки данных для запроса...

А что конкретно!

Спустя 5 минут, 42 секунды (26.02.2010 - 13:45) Lelik36 написал(а):
то есть цикл!перечисление всех услуг!?!?Правильно понял!?!? cool.gif

Спустя 2 минуты, 18 секунд (26.02.2010 - 13:47) twin написал(а):

Цитата
А что конкретно!
Цитата
то есть цикл!перечисление всех услуг!?!?Правильно понял!?!?

Нет. Не цикл. Эта функция собирает элементы массива в строку через разделитель (у тебя запятая).

Спустя 12 часов, 28 минут, 32 секунды (27.02.2010 - 02:16) Lelik36 написал(а):
спасибо всем!разобрался! biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.