[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: select в массив
bazilio
          <select size="5" style="height: 100px" multiple="multiple" name="job_sity[]">
<option
name="job_sity[Lipetsk]" selected value="1">Липецк</option>
<option
name="job_sity[all]" value="1">Все</option>
<option
name="job_sity[Elec]" value="1">Елец</option>
<option
name="job_sity[Gryazi]" value="1">Грязи</option>
</select>


foreach($job_sity as $key => $value)
{
echo $key.$value;
echo '<br />';
}


Плохо я понимаю массивы )). По моей логике я должен был увидеть например:
Липецк1,
а вижу
01
Устал тупить подскажите, как ключу присвоить значение (название города).




Спустя 3 часа, 8 минут, 41 секунда (6.07.2012 - 02:28) Gabriel написал(а):
print_r($_POST);

все расскажет, все подскажет
этож с какого перепуга ты получиш "Липецк" если value="1"?

Спустя 21 минута, 33 секунды (6.07.2012 - 02:49) walerus написал(а):
<select size="5" style="height: 100px" multiple="multiple" name="job_sity">
<option
value="Lipetsk" selected >Липецк</option>
<option
value="all">Все</option>
<option
value="Elec">Елец</option>
<option
value="Gryazi">Грязи</option>
</select>
У тебя и так стоит мульти выбор, так что был перебор с параметрами.

Спустя 9 часов, 19 минут, 12 секунд (6.07.2012 - 12:09) kamanch написал(а):
walerus
name="job_sity" - не верно
name="job_sity[]" - верно

Но получишь не ассоциативный массив.
Хотя, я не вижу смысла в ассоциативном, тольк если данного не требует постановка задачи.

Автору:
В базе в таблице job_sity должны быть поля
job_sity_id
job_sity_name


и далее циклом выводишь <option ...>

 <option value="<?= job_sity_id >"> <?= job_sity_name > </option>

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

Спустя 12 минут, 33 секунды (6.07.2012 - 12:21) bazilio написал(а):
Вся проблема в том, что мне это нужно для записи в базу данных,
А структура таблицы такая:
id записи и названия городов, где значение у названий городов по умолчанию стоит 0 а при добавлении у выбранных городов 0 должен поменяться на 1.

Спустя 36 минут, 6 секунд (6.07.2012 - 12:57) kamanch написал(а):
Ничего не меняет.

Поля в таблице:
job_sity_id
job_sity_name
job_sity_activ

Если был выбран город, и его job_sity_activ=0, то меняем на 1

Выложи дамп таблицы и задачу сформулируй. Хранить в базе в одной строке Elec и Елец - это неправильно.

Спустя 42 минуты, 56 секунд (6.07.2012 - 13:40) bazilio написал(а):
Зарегистрированный пользователь добавляет объявление на сайт, его (объявление нужно привязать городам какие выберет пользователь). Добавление объявлений я уже сделал осталась загвоздка с городами для них я сделал отдельную таблицу
ID - где будет id объявления,
Elec - (по умолчанию 0)
lipeck - (по умолчанию 0)
и тд.

И логика такая пользователь добавил объявление, которое например которое актуально для Липецка, в таблице появляется запись id- объявления и в ячейках городов 0 кроме Липецка там в ячейке 0 поменялся на 1;
Другой пользователь зашел ему интересно объявление только для Липецка
Он выбрал Липецк, скрипт находит все id объявлений где у Липецка стоит 1,
дальше по id скрипт дергает данные из других таблиц.

Вот так примерно если подскажите более простую архитектуру, я переделаю, просто по другому я не могу сообразить как это можно сделать.
Дамп:

CREATE TABLE IF NOT EXISTS `job_sity` ( `job_id` int(11) NOT NULL, `Borinskaya` int(1) NOT NULL default '0', `Hlevnoe` int(1) NOT NULL default '0', `Dobroe` int(1) NOT NULL default '0', `Dolgorukov` int(1) NOT NULL default '0', `Stanovoye` int(1) NOT NULL default '0', `Krivopolyane` int(1) NOT NULL default '0', `Lipetsk` int(1) NOT NULL default '0', `all` int(1) NOT NULL default '0', `Elec` int(1) NOT NULL default '0', `Gryazi` int(1) NOT NULL default '0', `Dancoff` int(1) NOT NULL default '0', `Lebedyan` int(1) NOT NULL default '0', `Usman` int(1) NOT NULL default '0', `Chaplygin` int(1) NOT NULL default '0', `Zadonsk` int(1) NOT NULL default '0', `Dobrinka` int(1) NOT NULL default '0', `Leo_Tolstoy` int(1) NOT NULL default '0', `Terbuny` int(1) NOT NULL default '0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Спустя 22 минуты, 20 секунд (6.07.2012 - 14:03) kamanch написал(а):
blink.gif Мама Мия...
А если городов будет штук 150-200...
Читай про Нормальные формы таблиц

Таблица 1 users - пользователи
u_id
u_name
и т.д.

Таблица 2 tickets - объявления
t_id
u_id (id пользователя, который это объявление добавил)
и т.д.

Таблица 3 sity - города. Она уже заполненная тобой и туда ничего скрипт не записывает, только читает
s_id
s_name

Таблица 4 sity_tickets - города / объявления
s_id
t_id

1. Пользователь зарегистрировался
- добавили запись в users

2. Пользователь добавил объявление
- добавили запись в tickets
- добавили записи в sity_tickets с t_id (id объявления) и s_id (id города)

Спустя 2 часа, 9 минут, 48 секунд (6.07.2012 - 16:12) DarkLynx написал(а):
не понятно, зачем тебе нужен именно ассоциативный массив? Что мешает в качестве value="" значения input поля указывать ID города. В итоге если был выбран тот или иной город, ты получишь массив вида.

для одного выбранного:
input_city =>
[0] => 'ид города'

или

для двух выбранных
input_city =>
[0] => ид города
[1] => ид_города2

и так далее по аналогии..

Дальше тебе нужно например вставить данные в бд. Формируешь запрос с использованием цикла, например foreach

$query = "INSERT INTO tbl_name (pole, pole, pole) VALUES";

foreach ($input_city as $value)
$_query[] .= "(0,$value,1)";

$query_s = implode(',', $_query);
$query .= $query_s;


Потом выполняешь:

$result = mysql_query($query);


Хотя может я что то не так понял, но вдруг поможет..

Спустя 23 минуты, 16 секунд (6.07.2012 - 16:36) bazilio написал(а):
Цитата (h.n.81 @ 6.07.2012 - 11:03)
blink.gif Мама Мия...


Благодарю, за соучастие)
моя логика была такая (городов и деревень меньше 20 и больше в ближайшее время навряд ли будет хотя кто знает может сейчас, как начнут рожать в Липецкой области, и новые поселки и города строить).
Мне не понятно в Вашей структуре если человек при добавление одного объявления указывает несколько населенных пунктов?

Спустя 12 минут, 40 секунд (6.07.2012 - 16:48) DarkLynx написал(а):
Цитата (bazilio @ 6.07.2012 - 13:36)
Цитата (h.n.81 @ 6.07.2012 - 11:03)
blink.gif  Мама Мия...


Мне не понятно в Вашей структуре если человек при добавление одного объявления указывает несколько населенных пунктов?

То будет именно то что написал я..

Спустя 6 минут, 57 секунд (6.07.2012 - 16:55) bazilio написал(а):
У меня логика такая не ужели это плохо?
Таблица 1 users - пользователи
u_id
u_name
и т.д.

Таблица 2 tickets - объявления
t_id (id объявления)
u_id
и т.д.

Таблица 3sity - города.
t_id (id объявления)
Lipeck (по умолчанию будет 0)
Elec
Gryazi
и тд.

2. Пользователь добавил объявление
- добавили запись в tickets
- добавили записи в sity с t_id (id объявления) и во всех выбранных городах 0
поменялись на единицы, а в не выбранных остались 0.

+Таблицы 3
+У одного объявления в таблице sity одна строка, сколько бы городов человек не выбрал для одного объявления.



Спустя 1 минута, 30 секунд (6.07.2012 - 16:57) bazilio написал(а):
Цитата (DarkLynx @ 6.07.2012 - 13:48)
Цитата (bazilio @ 6.07.2012 - 13:36)
Цитата (h.n.81 @ 6.07.2012 - 11:03)
blink.gif  Мама Мия...


Мне не понятно в Вашей структуре если человек при добавление одного объявления указывает несколько населенных пунктов?

То будет именно то что написал я..

6 городов для одного объявления, 6 новых строк в таблице sity_tickets?
С одним id объявления?

Спустя 8 минут, 49 секунд (6.07.2012 - 17:06) DarkLynx написал(а):
Цитата (bazilio @ 6.07.2012 - 13:57)
Цитата (DarkLynx @ 6.07.2012 - 13:48)
Цитата (bazilio @ 6.07.2012 - 13:36)
Цитата (h.n.81 @ 6.07.2012 - 11:03)
blink.gif  Мама Мия...


Мне не понятно в Вашей структуре если человек при добавление одного объявления указывает несколько населенных пунктов?

То будет именно то что написал я..

6 городов для одного объявления, 6 новых строк в таблице sity_tickets?
С одним id объявления?

Да. А что Вас удивляет? Это вполне нормальная практика..

Ну если вам не нравится большое кол-во записей, можно поизвращаться и сделать поле городов, в таблице связей, текстовое и писать туда иды городов через запятую, но и искать потом через LIKE..

Спустя 3 минуты, 15 секунд (6.07.2012 - 17:09) bazilio написал(а):
Цитата (DarkLynx @ 6.07.2012 - 14:06)
Да. А что Вас удивляет? Это вполне нормальная практика..

Я так делал (в другом проекте), но мне казалось что удобнее придумать в одну строку.

Спустя 2 минуты, 33 секунды (6.07.2012 - 17:11) bazilio написал(а):
Цитата (DarkLynx @ 6.07.2012 - 14:06)
сделать поле городов, в таблице связей, текстовое и писать туда иды городов через запятую, но и искать потом через LIKE..

Мне кажется это замедлит обработку скрипта.

Спустя 2 минуты, 5 секунд (6.07.2012 - 17:13) DarkLynx написал(а):
Цитата (bazilio @ 6.07.2012 - 14:11)
Цитата (DarkLynx @ 6.07.2012 - 14:06)
сделать поле городов, в таблице связей, текстовое и писать туда иды городов через запятую, но и искать потом через LIKE..

Мне кажется это замедлит обработку скрипта.

С LIKE то? Утверждать не берусь, не проверял.. Но думаю все таки да, like будет подольше простого выбора..

Спустя 5 минут, 55 секунд (6.07.2012 - 17:19) DarkLynx написал(а):
В любом случае Ваша структура, будет при добавлении объявлений нагружать сервер куда больше чем предложенная в теме.
Объясню почему. В Вашем случае, если пользователь добавит объявление во все 20 (как пример) городов, то Вам необходимо будет сделать 20 апдейтов, что бы обновить все необходимые поля, и это всего для одной записи..
В предложенном случае всего один запрос, который сразу вставит 20 записей.

Конечно выдрать одну запись явно быстрее чем 20, при выведении данных пользователю.. Но выигрыш производительности при добавлении, покрывает это замедление.. И поверьте 20 записей будут выбираться, на столько быстро что при обычным использовании Вы не заметите разницу... Если время замерять не будете..

Да и при составлении таблицы связей, ОБЯЗАТЕЛЬНО оба поля должны быть ключами (с индексами), это в разы увеличивает скорость выбора данных..


Спустя 1 час, 46 минут, 57 секунд (6.07.2012 - 19:06) kamanch написал(а):
bazilio
Твоя основная.. вернее просто чудовищная ошибка в том, что ты в структуру таблицы вводишь значения.
Этого делать категорически нельзя.
Для каждой новой записи у тебя будет куча незаполненных, абсолютно не нужных полей.
У тебя 20 городов. Каждое объявление актуально для 5-6. Для каждого объявления у тебя будет тянуться по 15 пустых столбцов.
Если бы сервер MySQL был бы твоей женой, он бы бросил тебя за издевательство и насилие smile.gif

В общем, очень рекомендую почитать про архитекуры таблиц и про нормальные формы.

Спустя 2 дня, 23 часа, 32 минуты, 21 секунда (9.07.2012 - 18:39) bazilio написал(а):
h.n.81
Спасибо )))
Быстрый ответ:

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