[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Распределение данных
RCuPeR
Всем привет. Есть у меня сложная задачка, которую никак не могу решить =(

Начнём: есть у меня система регистрации, всё отлично, человек регистрируется, его данные заносятся в БД в таблицу users, но задача усложнилась. Когда пользователь регистрируется ему предлагается огромный выбор, например, языков, т.е. он выбирает языки и уровень познания каждого языка который он знает. Проблема в том, что я не могу распределить данные пользователя.

Я додумался до такого алгоритма:
1. Все данные, кроме выбора языков, отправляются в таблицу users.
2. Данные массива "Языки" имеет такой вид:
  • ru=>lev1
  • ua=>lev2
  • uk=>lev4
, т.е, юзер выбрал язык и уровень познания языка. Размер массива зависит от выбора пользователя.
3. В базу, в таблицу lang, должны заносится данные по каждому языку. Т.е:
  • id | lang | lev
  • 1 | ua | lev2
  • 2 | uk | lev4


Проблема состоит в том, что я не знаю как при выводе информации о пользователе, указать скрипту, что вот эти данные с таблицы lang относятся к пользователю с id = 89.

ID пользователя создаётся в базе, т.е, перегнать с одной таблицы в другую я не могу.
Думал так же rand() - ом генерировать случайное число и записывать в 2 таблицы, но вдруг они когда-то повторятся ?! Будет не очень хорошо.



Спустя 6 минут, 45 секунд (13.02.2011 - 00:31) Snus написал(а):
Ты когда добавляешь юзверя в таблицу при регистрации, возвращай ID добавленного пользователя и пиши в таблицу с языками. Сложности нет. А вообще я бы тебе посоветовал бы создать отдельную колонку в таблице с юзверями и писать твой массив с языками в нее, используя сериализацию.

Спустя 24 минуты, 32 секунды (13.02.2011 - 00:55) RCuPeR написал(а):
Подскажи, пожалуйста, первый вариант.

Спустя 2 минуты, 39 секунд (13.02.2011 - 00:58) Snus написал(а):
RCuPeR
После твоего запроса INSERT в таблицу юзверей дописывай
$id = mysql_insert_id();

И используй этот ID в таблице языков. Но это только если у тебя первичный ключ указан с автоинкрементом.

Спустя 10 минут (13.02.2011 - 01:08) RCuPeR написал(а):
Да, с AI, но как заставить это функцию понять, что у это пользователя БУДЕТ такой ID ?
Вот смотри, общий запрос для юзера:

		$insert = mysql_query("INSERT INTO `wp_users`
(`user_login`, `user_pass`, `user_email`, `user_nicename`, `user_registered`, `user_age`, `state`, `city`, `user_address`, `user_tel`, `user_skype`, `user_lang`, `working_hours`, `user_level`, `user_post` ,`user_about`)
VALUES
( '"
. mysql_real_escape_string($login) ."',
'"
. mysql_real_escape_string($password) ."',
'"
. mysql_real_escape_string($email) ."',
'"
. mysql_real_escape_string($name) ."',
'"
. mysql_real_escape_string($user_registered) ."',
'"
. mysql_real_escape_string($age) ."',
'"
. mysql_real_escape_string($state) ."',
'"
. mysql_real_escape_string($city) ."',
'"
. mysql_real_escape_string($address) ."',
'"
. mysql_real_escape_string($tel) ."',
'"
. mysql_real_escape_string($skype) ."',
'"
.$value."',
'"
. mysql_real_escape_string($working_hours) ."',
'"
. mysql_real_escape_string($level) ."',
'"
. mysql_real_escape_string($user_post) ."',
'"
. mysql_real_escape_string($user_about) ."')
"
)
or die (mysql_error());


Вот запрос на вставку языков:

		$lang = mysql_query("INSERT INTO `wp_lang`
(`lang`, `level`)
VALUES
( '"
. mysql_real_escape_string($lang) ."',
'"
. mysql_real_escape_string($level) ."')
"
)
or die (mysql_error());


Где и как нужно использовать функцию mysql_insert_id(); ???

Спустя 5 минут, 43 секунды (13.02.2011 - 01:14) Snus написал(а):
в wp_lang добавь еще одну колонку userId, а после
$id = mysql_insert_id();
$lang = mysql_query("INSERT INTO `wp_lang`
(`userId`,`lang`, `level`)
VALUES
( '"
.$id."', '". mysql_real_escape_string($lang) ."',
'"
. mysql_real_escape_string($level) ."')
"
)
or die (mysql_error());

Спустя 7 минут, 23 секунды (13.02.2011 - 01:21) RCuPeR написал(а):
Большое тебе спасибо. Завтра попробую работоспособность.


_____________
Гнусный социопат с комплексом Бога.
Быстрый ответ:

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