Перейти к контенту
  • 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
Так что на усмотрение Дацента, маловероятно, что он будет БД конвертить.

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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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