<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 ...>
Тогда у тебя все будет красиво и однозначное сопоставление между тем, что выбрал пользователь, и что есть в базе.
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.
А структура таблицы такая:
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 и Елец - это неправильно.
Поля в таблице:
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;
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 написал(а):
Мама Мия...
А если городов будет штук 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 города)
А если городов будет штук 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
Потом выполняешь:
Хотя может я что то не так понял, но вдруг поможет..
для одного выбранного:
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) |
Мама Мия... |
Благодарю, за соучастие)
моя логика была такая (городов и деревень меньше 20 и больше в ближайшее время навряд ли будет хотя кто знает может сейчас, как начнут рожать в Липецкой области, и новые поселки и города строить).
Мне не понятно в Вашей структуре если человек при добавление одного объявления указывает несколько населенных пунктов?
Спустя 12 минут, 40 секунд (6.07.2012 - 16:48) DarkLynx написал(а):
Цитата (bazilio @ 6.07.2012 - 13:36) | ||
Мне не понятно в Вашей структуре если человек при добавление одного объявления указывает несколько населенных пунктов? |
То будет именно то что написал я..
Спустя 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 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) | ||||
То будет именно то что написал я.. |
6 городов для одного объявления, 6 новых строк в таблице sity_tickets?
С одним id объявления?
Спустя 8 минут, 49 секунд (6.07.2012 - 17:06) DarkLynx написал(а):
Цитата (bazilio @ 6.07.2012 - 13:57) | ||||||
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) | ||
Мне кажется это замедлит обработку скрипта. |
С LIKE то? Утверждать не берусь, не проверял.. Но думаю все таки да, like будет подольше простого выбора..
Спустя 5 минут, 55 секунд (6.07.2012 - 17:19) DarkLynx написал(а):
В любом случае Ваша структура, будет при добавлении объявлений нагружать сервер куда больше чем предложенная в теме.
Объясню почему. В Вашем случае, если пользователь добавит объявление во все 20 (как пример) городов, то Вам необходимо будет сделать 20 апдейтов, что бы обновить все необходимые поля, и это всего для одной записи..
В предложенном случае всего один запрос, который сразу вставит 20 записей.
Конечно выдрать одну запись явно быстрее чем 20, при выведении данных пользователю.. Но выигрыш производительности при добавлении, покрывает это замедление.. И поверьте 20 записей будут выбираться, на столько быстро что при обычным использовании Вы не заметите разницу... Если время замерять не будете..
Да и при составлении таблицы связей, ОБЯЗАТЕЛЬНО оба поля должны быть ключами (с индексами), это в разы увеличивает скорость выбора данных..
Объясню почему. В Вашем случае, если пользователь добавит объявление во все 20 (как пример) городов, то Вам необходимо будет сделать 20 апдейтов, что бы обновить все необходимые поля, и это всего для одной записи..
В предложенном случае всего один запрос, который сразу вставит 20 записей.
Конечно выдрать одну запись явно быстрее чем 20, при выведении данных пользователю.. Но выигрыш производительности при добавлении, покрывает это замедление.. И поверьте 20 записей будут выбираться, на столько быстро что при обычным использовании Вы не заметите разницу... Если время замерять не будете..
Да и при составлении таблицы связей, ОБЯЗАТЕЛЬНО оба поля должны быть ключами (с индексами), это в разы увеличивает скорость выбора данных..
Спустя 1 час, 46 минут, 57 секунд (6.07.2012 - 19:06) kamanch написал(а):
bazilio
Твоя основная.. вернее просто чудовищная ошибка в том, что ты в структуру таблицы вводишь значения.
Этого делать категорически нельзя.
Для каждой новой записи у тебя будет куча незаполненных, абсолютно не нужных полей.
У тебя 20 городов. Каждое объявление актуально для 5-6. Для каждого объявления у тебя будет тянуться по 15 пустых столбцов.
Если бы сервер MySQL был бы твоей женой, он бы бросил тебя за издевательство и насилие
В общем, очень рекомендую почитать про архитекуры таблиц и про нормальные формы.
Твоя основная.. вернее просто чудовищная ошибка в том, что ты в структуру таблицы вводишь значения.
Этого делать категорически нельзя.
Для каждой новой записи у тебя будет куча незаполненных, абсолютно не нужных полей.
У тебя 20 городов. Каждое объявление актуально для 5-6. Для каждого объявления у тебя будет тянуться по 15 пустых столбцов.
Если бы сервер MySQL был бы твоей женой, он бы бросил тебя за издевательство и насилие
В общем, очень рекомендую почитать про архитекуры таблиц и про нормальные формы.
Спустя 2 дня, 23 часа, 32 минуты, 21 секунда (9.07.2012 - 18:39) bazilio написал(а):
h.n.81
Спасибо )))
Спасибо )))