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

КАк подцееденится к таблице


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

:D

Вопрос такой как на форуме подцееденится к таблице если таблицу я сам создал но с таким же префексам пример ibf_sostav с перемеными align, prof, name, imj и так поясню примерно для чего .. в ней хранятся даные по пользователя только не спрошивайте какие и для чего... я хочу чтобы возле ника в ответах на форуме выводилась картинка или еще чтонить не суть важна..

форум В 2.3.5

делаю это постаринке все норм соеденяется выводит но вот не задача ответи этого юзера и других нет видно мой запрос к таблице блокирует это пример как я соеденяю таков

$vity_query = 'SELECT align, clan, name, level FROM adf_sostav WHERE id ='.$poster['id'];

$sql = mysql_query($vity_query) or die ('Ваш запрос ушел не туда(((');

while($row=mysql_fetch_array($sql))

{

$name=$row["name"];

$align=$row["align"];

$pfof=$row["pfof"];

$imj=$row["imj"];

if ($align>0){$align='<img src="хост/align'.$align.'.gif" border=0>';} else {$align='<хост/align.gif" border=0>';}

}

 

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

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

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

Спасибо огромное видемо плохо поиском юзал(

 

Прочитал как сказать, что я понял на 100% не скажу но. получилось такое

 

$this->ipsclass->DB->simple_select( 'align, pfof, imj', 'id ='.$poster['id']' );

$this->ipsclass->DB->exec_query();

while( $row = $this->ipsclass->DB->fetch_row() )

{

$row["align"]=$align;

$row["pfof"]=$pfof;

$row["imj"]=$imj;

if ($align>0){$align='<img src="http://img.combats.com/i/align'.$align.'.gif" border=0>';} else {$align='<img src="http://img.combats.com/i/align.gif" border=0>';}

}

 

 

правельно нет незнаю так как выводит белый лист (отключен вывод ошибок) пока я договарюсь с хостером о включение Лето будет(((

Просто сразу возник вопрс моу ли я и КУДА? вставить код соеденение с таблице в index.php чтобы каждый раз не соеденятся сней если я захочу еще гдето в последующем вывести даные? как это сделать и куда код надо засунуть подскажите пожалуста?

 

И Как лучше это реализовать?

зарание благодарен..

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

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

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

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

извените не так скопировал(((

 

$this->ipsclass->DB->simple_select('align, pfof, imj', 'sostav', 'id ='.$poster['id']');

$this->ipsclass->DB->exec_query();

while( $row = $this->ipsclass->DB->fetch_row() )

{

$row["align"]=$align;

$row["pfof"]=$pfof;

$row["imj"]=$imj;

if ($align>0){$align='<img src="http://img.combats.com/i/align'.$align.'.gif" border=0>';} else {$align='<img src="http://img.combats.com/i/align.gif" border=0>';}

}

 

Но я маленько не понял почему соеденятся с таблицей не надо? Я же должен как то переменые выдрать из таблицы?

Про Базу понятно что соеденения не нужно..

 

Проста как я думаю, что надо сделать связь с таблицей описав переменые с какими я буду работать. а соеденение лучше сделать в index.php в самом начале файла, чтобы потом в любом месте форума вставив выдернутые переменые и вывести результат.

Если это так то куда лучше вставить соеденение или по Вашему как это намного лучше сделать?

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

ничего на этом этапе знаний не получится

 

0.использовать тег code

 

1.

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

для незнающих/игнорирующих

$this->ipsclass->DB->simple_select('align, pfof, imj', 'sostav', 'id ='.$poster['id']');

 

2.

$row["align"]=$align;
$row["pfof"]=$pfof;
$row["imj"]=$imj;

бредятина

$align=$row["align"];

еще куда ни шло

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

	 $this->ipsclass->DB->simple_construct( array( 'select' => '*',
												  'from'   => 'sostav',
													'where'  => "id =".intval($poster['id'])
								 )	  );

$this->ipsclass->DB->simple_exec();
$row = $this->ipsclass->DB->fetch_row();

while($row = $this->ipsclass->DB->fetch_row()){

	if(intval($row["align"])){		  
		$align = '<img src="www.host/align'.$row['align'].'.gif" border=0>';			  
	}
	 else 
	{
	 	$align = '<img src="www.host/align.gif" border=0>'; 
	}
}

 

если еще надо))

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

rgaraev,

 

	$row = $this->ipsclass->DB->fetch_row();

while($row = $this->ipsclass->DB->fetch_row())

 

О_о

 

intval($poster['id'])

 

и

 

intval($row["align"]

 

Зачем интвал? Неужели ID автора поста может содержать НЕ ЧИСЛО?

Ну и интвалом обрабатывать параметр, который не требует того - зачем?

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

if(intval($row["align"])){

заменить на

if($row["align"]){

 

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

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

intval($poster['id'])

 

Да и это тоже не мешало бы, т.к. ID юзера на форуме просто не может не быть целым числом.

 

могли уж сами парню помочь код написать

 

У него по моему проблемы с осознанием, куда этот код втыкать и как ваще это должно действовать.

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

Еще раз повторюсь, для запроса к баззе нужен $poster['id'], откуда автор его берет я хз, чесно, так что это не лишнее, и работе скрипта не как не навредит.

 

терь как это сделать..

 

Открываем фаил index.php и добавляем в // Generate choice array

'test'	  => array( 'test'	   	,'test' 	   , array() ),

 

Создаем в папке sources\action_public фаил test.php с содержимым (это упращеный вариант, нехочу автора напригать с шаблонами и т.д.)

<?php

if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Некорректный адрес</h1>Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы.";
exit();
}

class test
{
var $ipsclass;

 function auto_run()
	{
		$this->base_url  = $this->ipsclass->base_url;
		$this->pagetitle = "Заголовок";
		$this->nav[] = "<a href='{$this->ipsclass->base_url}act=test'>{$this->pagetitle}</a>";
		$this->ipsclass->load_template( 'skin_global' );

		switch($this->ipsclass->input['op']) { default: $this->show_home(); break;	}

		$this->ipsclass->print->add_output("$this->output");
		$this->ipsclass->print->do_output( array( 'TITLE' => "{$this->ipsclass->vars['board_name']} - {$this->pagetitle}", 'JS' => 0, 'NAV' => $this->nav ) );
	}


 function show_home()
 {
 	  $this->output .= "<!--exec.file=\"test.php\"-->";

   }	
}

?>

 

Создаем в корне форума фаил test.php и творим в нем что хотим, сообственно туда и помещаем код

<?
$this->ipsclass->DB->simple_construct( array( 'select' => '*',
												  'from'   => 'sostav',
													'where'  => "id =".intval($poster['id'])
								 )	  );

$this->ipsclass->DB->simple_exec();
$row = $this->ipsclass->DB->fetch_row();

while($row = $this->ipsclass->DB->fetch_row()){

	if($row["align"]){		  
		$align = '<img src="www.host/align'.$row['align'].'.gif" border=0>';			  
	}
	 else
	{
		 $align = '<img src="www.host/align.gif" border=0>';
	}
}
?>

 

 

Вот и наша страничка http://_сайт_/index.php?act=test

 

Это вариант если он хочет делать свою страницу, а так достаточно просто вставить код куда он хотел, главное правильно это сделать

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

rgaraev

 

Какой феерический мазохизм, коллега!

 

для запроса к баззе нужен $poster['id'], откуда автор его берет я хз, чесно, так что это не лишнее, и работе скрипта не как не навредит.

 

Цитирую топикстартера:

 

я хочу чтобы возле ника в ответах на форуме выводилась картинка

 

 

==============

 

Теперь про мазохизм.

 

Создать чистый скрипт чтобы проинклудить в него IPB-методом другой скрипт???

Это...эээ...я теряюсь.

 

Во первых, мне кажется, лучше юзать sources/components_public/ без заморочек с index.php.

 

<?php

if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Некорректный адрес</h1>Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы.";
exit();
}

class component_public
{
var $ipsclass;

 function run_component()
	{

	   $pagetitle = "Тест мегасуперскрипта"; // названия для тайтла

	   $this->ipsclass->load_template( 'skin_global' ); // вызываем шаблон

		  $this->ipsclass->DB->simple_construct( array( 'select' => '*',
												  'from'   => 'sostav',
													'where'  => 'id ='.$poster['id']
								 )	  );

		 $this->ipsclass->DB->simple_exec();

			$this->output =  "";

			   while( $row = $this->ipsclass->DB->fetch_row() )
			   {

				 if($row['align'])
				 {		  
					$this->output .= '<img src="www.host/align'.$row['align'].'.gif" border=0>';			  
				 }
				 else
				 {
					$this->output .= '<img src="www.host/align.gif" border=0>';
				 }

			  }

			$this->ipsclass->print->add_output($this->output); // вывод
			$this->ipsclass->print->do_output( array( 'TITLE' => "{$this->ipsclass->vars['board_name']} - {$pagetitle}", 'JS' => 0, ) );

	}

}

?>

 

 

Это в код, и в указанную мной папку.

 

Вызывается по /index.php?autocom=...

Хотя, к проблеме автора темы, это, судя по всему, отношения не имеет.

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

Спасибо Всем большое за помошь, но видемо я не так обьясняюсь(((

 

Давайте так за будет что я верху написал и начнем занова...

 

Вот здесь Хост/forums/sources/action_public/topics.php

Находим строчку

//-----------------------------------------

// Fix up the membername so it links to the members profile

//-----------------------------------------

Ниже идет код который выводит НИК персонажа написавний сообщение

 

if ( $poster['id'] )

{

$poster['_members_display_name'] = "<a href='{$this->base_url}showuser={$poster['id']}'>".$this->ipsclass->make_name_formatted($poster['members_display_name_short'], $poster['mgroup'])."</a>";

}

 

Вот сюда Я хочу поставить код ( уже веду того что я Апетит свой сузил((()) чтобы он в переди ника выводил что мне требуется "Картинку"

У меня получилось Постаринке который я выложил, Вашими тоже так же работают, но вот не задача. Как я Описывал Рание даный код блокирует само сообщение (Обьясняю допустим отписалось 5 человек, мол привет как дел.... этого нечего не видно тупо чисто) и так же блокирует раскрывающее меню (Профиль пользователя при на жатии на ник не раскрывается) .. Вот и не пойму где проблема

 

Делаю это так

 

if ( $poster['id'] ) // Кто спрашивал от куда я беру Сие $poster['id']

{

 

$this->ipsclass->DB->simple_construct( array( 'select' => '*',

'from' => 'sostav',

'where' => 'id ='.$poster['id']

) );

 

$this->ipsclass->DB->simple_exec();

 

$this->output = "";

 

while( $row = $this->ipsclass->DB->fetch_row() )

{

 

if($row['align'])

{

$this->output .= '<img src="www.host/align'.$row['align'].'.gif" border=0>';

}

else

{

$this->output .= '<img src="www.host/align.gif" border=0>';

}

$poster['_members_display_name'] = "<a href='{$this->base_url}showuser={$poster['id']}'>".$this->ipsclass->make_name_formatted($poster['members_display_name_short'], $poster['mgroup'])."</a>";

}

 

}

 

Вот так я все встовляю Все норм возле ника появляется Требуемо но Не видна Сообщения оставленое этим пользователем и не раскрывается профиль..

 

Подскажите Может Опять Виду своей не расторопности Чегото забыл???

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

rgaraev

 

Какой феерический мазохизм, коллега!

 

для запроса к баззе нужен $poster['id'], откуда автор его берет я хз, чесно, так что это не лишнее, и работе скрипта не как не навредит.

 

Цитирую топикстартера:

 

я хочу чтобы возле ника в ответах на форуме выводилась картинка

 

 

==============

 

Теперь про мазохизм.

 

Создать чистый скрипт чтобы проинклудить в него IPB-методом другой скрипт???

Это...эээ...я теряюсь.

 

Во первых, мне кажется, лучше юзать sources/components_public/ без заморочек с index.php.

 

<?php

if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Некорректный адрес</h1>Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы.";
exit();
}

class component_public
{
var $ipsclass;

 function run_component()
	{

	   $pagetitle = "Тест мегасуперскрипта"; // названия для тайтла

	   $this->ipsclass->load_template( 'skin_global' ); // вызываем шаблон

		  $this->ipsclass->DB->simple_construct( array( 'select' => '*',
												  'from'   => 'sostav',
													'where'  => 'id ='.$poster['id']
								 )	  );

		 $this->ipsclass->DB->simple_exec();

			$this->output =  "";

			   while( $row = $this->ipsclass->DB->fetch_row() )
			   {

				 if($row['align'])
				 {		  
					$this->output .= '<img src="www.host/align'.$row['align'].'.gif" border=0>';			  
				 }
				 else
				 {
					$this->output .= '<img src="www.host/align.gif" border=0>';
				 }

			  }

			$this->ipsclass->print->add_output($this->output); // вывод
			$this->ipsclass->print->do_output( array( 'TITLE' => "{$this->ipsclass->vars['board_name']} - {$pagetitle}", 'JS' => 0, ) );

	}

}

?>

 

 

Это в код, и в указанную мной папку.

 

Вызывается по /index.php?autocom=...

Хотя, к проблеме автора темы, это, судя по всему, отношения не имеет.

 

Мои вариант дает больше возможностей для построения страницы, не даваясь в подробности про шаблоны и т.д., что бы не загружать автору мозг, зачем страница /index.php?autocom=... на которои будет одна лишь картинка?))

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

ТО rgaraev

Можно Уточнить. Вот Это Выводит ник ползователя с окраской в какой групе он находится

 

$poster['_members_display_name'] = "<a href='{$this->base_url}showuser={$poster['id']}'>".$this->ipsclass->make_name_formatted($poster['members_display_name_short'], $poster['mgroup'])."</a>";

 

а в твоем коде получается так что картинка стойти после ника!

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

		if ( $poster['id'] )
	{			

		$this->ipsclass->DB->simple_construct( array( 'select' => '*',
														  'from'   => 'sostav',
															'where'  => "id =".$poster['id']
										 )	  );

		$this->ipsclass->DB->simple_exec();
		$row = $this->ipsclass->DB->fetch_row();

		while($row = $this->ipsclass->DB->fetch_row()){

			if($row["align"]){		  
				$ggg = '<img src="www.host/align'.$row['align'].'.gif" border=0>';			  
			}
			 else
			{
				 $ggg = '<img src="www.host/align.gif" border=0>';
			}
		}

		$poster['_members_display_name'] = "<a href='{$this->base_url}showuser={$poster['id']}'>{$poster['members_display_name_short']} $ggg </a>";

	}

 

можно маневрировать как угодно

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

Мои вариант дает больше возможностей для построения страницы

 

Эээ...например?

Вот объясните, зачем делать один файл в action_public с ужасным ипб-инклюдом, другой в корне?

Когда все это можно уместить в ОДИН ФАЙЛ. Без заморочек в index.php. В components_public. Та-а.

Кстати не надо цитировать таки огромные посты полностью, пожалуйста :D

 

Ваш последний код - тоже пример лютого-бешеного мазохизма.

Хотя бы потому, что:

 

			$row = $this->ipsclass->DB->fetch_row();

		while($row = $this->ipsclass->DB->fetch_row())

 

Зачем два раза объявлять $row ???

 

			   if($row["align"]){		  
				$ggg = '<img src="www.host/align'.$row['align'].'.gif" border=0>';			  
			}
			 else
			{
				 $ggg = '<img src="www.host/align.gif" border=0>';
			}

 

Множество картинок просто не будет выводиться.

За пределами while'а следовало бы объявить

 

$ggg = "";

 

А уже в вайле:

 

			   if($row["align"]){		  
				$ggg .= '<img src="www.host/align'.$row['align'].'.gif" border=0>';			  
			}
			 else
			{
				 $ggg .= '<img src="www.host/align.gif" border=0>';
			}

 

Если непонятно - точечка перед знаком равенства.

 

		   $poster['_members_display_name'] = "<a href='{$this->base_url}showuser={$poster['id']}'>{$poster['members_display_name_short']} $ggg </a>";

 

Не распознает $ggg как переменную. Тупо выведет текстом.

И вообще непрактично.

 

Решение для автора:

 

if ( $poster['id'] )
{

$this->ipsclass->DB->simple_construct( array( 'select' => '*',
'from' => 'sostav',
'where' => 'id ='.$poster['id']
) );

$this->ipsclass->DB->simple_exec();

$poster['nickimage'] = "";

while( $row = $this->ipsclass->DB->fetch_row() )
{

 if($row['align'])
 { 
$poster['nickimage'] .= '<img src="www.host/align'.$row['align'].'.gif" border=0>'; 
 }
 else
 {
$poster['nickimage'] .= '<img src="www.host/align.gif" border=0>';
 }

} 

$poster['_members_display_name'] = "<a href='{$this->base_url}showuser={$poster['id']}'>".$this->ipsclass->make_name_formatted($poster['members_display_name_short'], $poster['mgroup'])."</a>"; 


}

 

Потом в админке, в шаблоне skin_topic->RenderRow ставишь

 

{$author['nickimage']}

 

Перед кодом вывода ника.

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

то doctorrrrr

 

Вопрос какая разнеца что я выложил последнем поста и твоего?

Я же описываю что у меня после всех этих манипуляций не выводит сообщения пользователя на форуме (просто пусто) и не раскрывается меню профиля((( Тоже самое и щас((( как устранить проблему?

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

Перезалей файл до всех изменений и сделай как указано у меня.

Должно пахать. Хотя мне лень делать таблицу и проверять.

 

Твой код в КОРНЕ неправильный:

 

if ( $poster['id'] ) // Кто спрашивал от куда я беру Сие $poster['id']
{

$this->ipsclass->DB->simple_construct( array( 'select' => '*',
'from' => 'sostav',
'where' => 'id ='.$poster['id']
) );

$this->ipsclass->DB->simple_exec();

$this->output = "";

while( $row = $this->ipsclass->DB->fetch_row() )
{

if($row['align'])
{ 
$this->output .= '<img src="www.host/align'.$row['align'].'.gif" border=0>'; 
}
else
{
$this->output .= '<img src="www.host/align.gif" border=0>';
}
$poster['_members_display_name'] = "<a href='{$this->base_url}showuser={$poster['id']}'>".$this->ipsclass->make_name_formatted($poster['members_display_name_short'], $poster['mgroup'])."</a>"; 
} 

}

 

Хотя бы потому, что ты суешь

 

$poster['_members_display_name'] = "<a href='{$this->base_url}showuser={$poster['id']}'>".$this->ipsclass->make_name_formatted($poster['members_display_name_short'], $poster['mgroup'])."</a>";

 

В цикл while.

 

А еще потому, что $this->output нигде самостоятельно не выводится.

Ты делаешь переменную, заполняешь ее, а вывод уходит в никуда.

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

Спасибки всем за советы, но проблема так и осталась.. все перепробывал .. так и блокирует сие.. на форуме невидно ответов пользователей хоть ты тресни((((

 

Буто бы при зопросе в таблице от крывается а не закрывеается из за этого блокирует вывод постов пользавателя((( как решить не понимаю(((

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

Посмотрите в коде, что возвращает функция simple_query, и что можно передать параметром функции fetch_row, это должно помочь.

А делать по запросу в базу для каждого поста нельзя, вас кто учил программировать??????? Проще дописать это в форумный запрос на выборку постов, незачем так изголяться.

 

:D

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

Sannis, т.е. так?

 

sources/sql/mysql_queries.php

 

	function topics_get_posts( $a )
{
	# topics.php

	return "SELECT p.*, pp.*, sostav.*,
			m.id,m.awards_cache,m.name,m.mgroup,m.mgroup_others,m.email,m.joined,m.post
s, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,
			me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.interests, me.avatar_size, m.members_display_name, 

				FROM ".SQL_PREFIX."posts p
					  LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id)
					LEFT JOIN ".SQL_PREFIX."profile_portal pp ON (m.id=pp.pp_member_id)
					  LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id)
					  LEFT JOIN ".SQL_PREFIX."sostav sostav ON (sostav.id=m.id)
				WHERE p.pid IN(".implode(',', $a['pids']).") 
				ORDER BY {$a['scol']} {$a['sord']}";
}

 

А уже из топикс.пхп преобразовывать while'ом?

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

Да, так :D

Если JOIN будет грузить базу, то можно сделать как с аттачами, в цикле по постам собирать id постов(а они и так вроде собираются там), а потом делать один запрос с id IN (список ид), и потом заменять нужные данные... Пример см. с аттачами.

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

Обьясните для Дурака((( я понимаю что надо уччить МАт часть(((

 

sources/sql/mysql_queries.php

Я вставил как у казано

 

потом в /topics.php

 

я добавляю цикл

 

if ( $poster['id'] )

{

 

while( $row = $this->ipsclass->DB->fetch_row() )

{

 

if($row['align'])

{

$this->output .= '<img src="www.host/align'.$row['align'].'.gif" border=0>';

}

else

{

$this->output .= '<img src="www.host/align.gif" border=0>';

}

$poster['_members_display_name'] = "<a href='{$this->base_url}showuser={$poster['id']}'>".$this->ipsclass->make_name_formatted($poster['members_display_name_short'], $poster['mgroup'])."</a>";

}

 

}

 

 

Или Я не так понял???

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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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

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

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