Перейти к контенту
  • 0

Список Друзей/Врагов


Jax

Вопрос

В UCP в разделе "Список Друзей/Врагов" ввожу имя, даже не обязательно вводить, просто через профиль нажимаю "Добавить в контакт", он вставляется в форму, но когда нажимаю на "Добавить в адресную книгу", то вижу "Невозможно найти такого пользователя" :D

 

Как можно исправить?

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0
Дык ты его вводишь ?

Song, нет, я его не ввожу, оставляю пустое место и удивляюсь, почему не находит :D

Ввожу конечно. ;)

Какой у тебя хостинг?

Качественный, платный, очень серьезный и солидный. Как еще можно сказать? :)

База и пхп оптимизированы до жопы.

И причем тут хостинг? :)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Да действительно, вопрос ещё актуален, недавно только мне сообщили что форум выдаёт тоже самое. Может уже кто решил этот вопрос?

 

Наверное что то где здесь надо поправить.

 

 	/**********************************************************/
	// DELETE_MEMBER:
	//
	// Removes a member from address book.
	/**********************************************************/

	function del_member() {
		global $ibforums, $DB, $std, $print;

		if (!$ibforums->input['MID'])
		{
			$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_user' ) );
		}

		if (! preg_match( "/^(\d+)$/", $ibforums->input['MID'] ) )
		{
			$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_user' ) );
		}

		$DB->query("DELETE FROM ibf_contacts WHERE member_id='".$this->member['id']."' AND contact_id='".$ibforums->input['MID']."'");

		$std->boink_it($this->base_url."act=Msg&CODE=02");
	exit;
}

/**********************************************************/
	// EDIT_MEMBER:
	//
	// Edit a member from address book.
	/**********************************************************/

	function edit_member() {
		global $ibforums, $DB, $std, $print;

		if (!$ibforums->input['MID'])
		{
			$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_user' ) );
		}

		if (! preg_match( "/^(\d+)$/", $ibforums->input['MID'] ) )
		{
			$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_user' ) );
		}


		$DB->query("SELECT * FROM ibf_contacts WHERE member_id='".$this->member['id']."' AND contact_id='".$ibforums->input['MID']."'");
		$memb = $DB->fetch_row();

		if (!$memb['contact_id'])
		{
			$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_user' ) );
		}

		$html = "<select name='allow_msg' class='forminput'>";

		if ($memb['allow_msg'])
		{
			$html .= "<option value='yes' selected>{$ibforums->lang['yes']}</option><option value='no'>{$ibforums->lang['no']}";
		}
		else
		{
			$html .= "<option value='yes'>{$ibforums->lang['yes']}</option><option value='no' selected>{$ibforums->lang['no']}";
		}

		$html .= "</select>";

		$this->output .= $this->html->address_edit( array( 'SELECT' => $html, 'MEMBER' => $memb ) );


		$this->page_title = $ibforums->lang['t_welcome'];
		$this->nav		= array( "<a href='".$this->base_url."&act=UserCP&CODE=00'>".$ibforums->lang['t_title']."</a>",
								   "<a href='".$this->base_url."act=Msg&CODE=02'>".$ibforums->lang['t_book']."</a>"  );

	}

/**********************************************************/
	// DO_EDIT_MEMBER:
	//
	// Edit a member from address book.
	/**********************************************************/

	function do_edit() {
		global $ibforums, $DB, $std, $print;

		if (!$ibforums->input['MID'])
		{
			$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_user' ) );
		}

		if (! preg_match( "/^(\d+)$/", $ibforums->input['MID'] ) )
		{
			$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_user' ) );
		}

		$ibforums->input['allow_msg'] = $ibforums->input['allow_msg'] == 'yes' ? 1 : 0;

		$DB->query("SELECT * FROM ibf_contacts WHERE member_id='".$this->member['id']."' AND contact_id='".$ibforums->input['MID']."'");
		$memb = $DB->fetch_row();

		if (!$memb['contact_id'])
		{
			$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_user' ) );
		}

		$DB->query("UPDATE ibf_contacts SET contact_desc='".$ibforums->input['mem_desc']."', allow_msg='".$ibforums->input['allow_msg']."' WHERE id='".$memb['id']."'");

		$std->boink_it($this->base_url."act=Msg&CODE=02");
	exit;

	}



	/**********************************************************/
	// CONTACT:
	//
	// Shows the address book.
	/**********************************************************/

	function contact() {
		global $ibforums, $DB, $std, $print;

		$this->output .= $this->html->Address_header();

		$DB->query("SELECT * FROM ibf_contacts WHERE member_id='".$this->member['id']."' ORDER BY contact_name ASC");

		if ( $DB->get_num_rows() )
		{

			$this->output .= $this->html->Address_table_header();
			while ( $row = $DB->fetch_row() )
			{
				$row['text'] = $row['allow_msg']
							 ? $ibforums->lang['can_contact']
							 : $ibforums->lang['cannot_contact'];

				$this->output .= $this->html->render_address_row($row);
			}
			$this->output .= $this->html->end_address_table();

		}
		else
		{
			$this->output .= $this->html->Address_none();

		}

		// Do we have a name to enter?

		$name_to_enter = "";

		if ($ibforums->input['MID'])
		{
			if ( preg_match( "/^(\d+)$/", $ibforums->input['MID'] ) )
			{
				$DB->query("SELECT name, id FROM ibf_members WHERE id='".$ibforums->input['MID']."'");
				$memb = $DB->fetch_row();

				if ($memb['id'])
				{
					$name_to_enter = $memb['name'];
				}
			}
		}

		$this->output .= $this->html->address_add($name_to_enter);

		$this->page_title = $ibforums->lang['t_welcome'];
		$this->nav		= array( "<a href='".$this->base_url."act=UserCP&CODE=00'>".$ibforums->lang['t_title']."</a>" );

	}


	/**********************************************************/
	// ADD MEMBER:
	//
	// Adds a member to the addy book.
	/**********************************************************/

	function add_member() {
		global $ibforums, $DB, $std, $print;

		if (! $ibforums->input['mem_name'])
		{
			$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_user' ) );
		}

		$DB->query("SELECT name, id FROM ibf_members WHERE LOWER(name)='".$ibforums->input['mem_name']."'");
		$memb = $DB->fetch_row();

		if (! $memb['id'])
		{
			$std->Error( array( 'LEVEL' => 1, 'MSG' => 'no_user' ) );
		}

		//--------------------------------------
		// Do we already have this member in our
		// address book?
		//--------------------------------------

		$DB->query("SELECT contact_id FROM ibf_contacts WHERE member_id='".$this->member['id']."' AND contact_id='".$memb['id']."'");

		if ( $DB->get_num_rows() )
		{
			$std->Error( array( 'LEVEL' => 1, 'MSG' => 'member_in_add_book' ) );
		}

		//--------------------------------------
		// Insert it into the DB
		//--------------------------------------

		$ibforums->input['allow_msg'] = $ibforums->input['allow_msg'] == 'yes' ? 1 : 0;

		$db_string = $std->compile_db_string( array( 
												 'member_id'	  => $this->member['id'],
												 'contact_name'   => $memb['name'],
												 'allow_msg'	  => $ibforums->input['allow_msg'],
												 'contact_desc'   => $ibforums->input['mem_desc'],
												 'contact_id'	 => $memb['id']
										)	  );

	$DB->query("INSERT INTO ibf_contacts (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")");
	unset($db_string);

	// BUH BYE!

	$std->boink_it($this->base_url."act=Msg&CODE=02");
	exit;
}

Ссылка на комментарий
Поделиться на других сайтах

  • 0
$DB->query("SELECT name, id FROM ibf_members WHERE LOWER(name)='".$ibforums->input['mem_name']."'");
попробывать заменить на
$DB->query("SELECT name, id FROM ibf_members WHERE LOWER(name)='".strtolower($ibforums->input['mem_name'])."'");
как минимум.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Надо иметь нормаьно созданную БД и всё будет путём.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Song, каким образом? Если пользователь введёт в окошко поиска Sannis, то никогда LOWER(name) не будет ровняться Sannis.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
то никогда LOWER(name) не будет ровняться Sannis.

Уверен?

 

В регистронезависимых чарсетах (которыми и следует создавать БД, которые по умолчанию подставляются) регистр в операциях сравнения, сортировки и группировки не имеет значения.

Если любопытно можешь выполнить такой запрос:

select 'A',lower('A'),IF('A' = lower('A'),1,0)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Да, нужно запомнить... Интересная штука, наверняка помогает в поиске... :D Спс.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Даже можно проще. Попробуй себя поискать в своей БД:

select * 
 from ibf_members where lower(name) = 'SANNIS'

 

Я уверен твой поиск увенчается успехом ;-)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Тогда это конечно чушь :-) Смысл писать LOWER и не писать strtolower? Если регистронезависимый, то можно и то, и то опустить, а если зависимый, то нужно оба писать... Так что 50/50 :D

 

Так что на усмотрение Дацента, маловероятно, что он будет БД конвертить.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Тогда это конечно чушь :-) Смысл писать LOWER и не писать strtolower? Если регистронезависимый, то можно и то, и то опустить, а если зависимый, то нужно оба писать... Так что 50/50

Да, то что там нет ловера справа - это ошибка.

Но это ошибка, как видишь, редко у кого бывает, так как люди в большинстве своём нормальные.. :D

 

И вообще LOWER - это зло.

Он не даёт использовать индексы, из-за чего нагрузка на мускул по этим запросам несравненно больше, чем могла бы бытть.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Зависимый/независимый это cs/ci в названии коллейшна я так понимаю?

 

P.S. Проглядел список, не ясно почему не каждый имеет пару...

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Так что на усмотрение Дацента, маловероятно, что он будет БД конвертить.

Ну почему же. :D Если это принесёт кокой то весомый результат по оптимизации или производительности, то только скажите как. ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Так что на усмотрение Дацента, маловероятно, что он будет БД конвертить.

Неужеле смена чарсетов это и есть ваша хитрёная конвертация ДБ? =)

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.