Старый 23.02.2008, 14:05   #1 (permalink)
Местный
 
Аватар для AnD1
 
Специализация: Дизайнер
Регистрация: 22.02.2008
Адрес: Санкт-Петербург, Барселона, Мадрид
Сообщений: 150
Репутация: 24
По умолчанию Подключение БД

Наткнулся на очень полезную статейку для меня, где 2 пунктом идет:
Цитата:
Пункт 2. Подключаем Базу Данных.
И тут останавливаться надолго не будем. По умолчанию вы уже должны уметь это делать, иначе дальнейшее прочтение теряет всякий смысл. Итак, вы умеете подключать БД и вы это сделали.

Сразу возник вопрос: а как это? как подключить БД?
AnD1 вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Старый 23.02.2008, 14:41   #2 (permalink)
Администратор
 
Аватар для Devil
 
Специализация: Кодер
Регистрация: 05.12.2007
Адрес: Москва
Сообщений: 3,583
Репутация: 1671
Номер ICQ 599613
По умолчанию

AnD1, народ Вот взять воблу, открыть папку includes и найти там файл init.php ни кто не догадался? В файле же указанны строчки конекта к БД вот они
// make database connection
PHP код:
$db->connect(
    
$vbulletin->config['Database']['dbname'],
    
$vbulletin->config['MasterServer']['servername'],
    
$vbulletin->config['MasterServer']['port'],
    
$vbulletin->config['MasterServer']['username'],
    
$vbulletin->config['MasterServer']['password'],
    
$vbulletin->config['MasterServer']['usepconnect'],
    
$vbulletin->config['SlaveServer']['servername'],
    
$vbulletin->config['SlaveServer']['port'],
    
$vbulletin->config['SlaveServer']['username'],
    
$vbulletin->config['SlaveServer']['password'],
    
$vbulletin->config['SlaveServer']['usepconnect'],
    
$vbulletin->config['Mysqli']['ini_file'],
    
$vbulletin->config['Mysqli']['charset']
); 
вообщем-то конект вот он
PHP код:
$db->connect 
В данных строчках можно понять что все данные для конекта к БД беруться из конфигурационного файла config.php из той же папки includes
Если расматреть отдельно каждую строку то вот что за что отвечает (хоть и так из названий всё ясно, но тем нимение вот)
PHP код:
$db->connect(
    
$vbulletin->config['Database']['dbname'],   - имя базы
    $vbulletin
->config['MasterServer']['servername'], адрес хоста с базой
    $vbulletin
->config['MasterServer']['port'],   порт конекта к базе
    $vbulletin
->config['MasterServer']['username'], имя пльзователя для конекта к бд
    $vbulletin
->config['MasterServer']['password'],  пароль для конекта
    $vbulletin
->config['MasterServer']['usepconnect'],  коннект
    $vbulletin
->config['SlaveServer']['servername'], адрес хоста с базой (доп сервака если есть такой)
    
$vbulletin->config['SlaveServer']['port'], порт конекта к базе  (доп сервака если есть такой)
    
$vbulletin->config['SlaveServer']['username'], имя пльзователя для конекта к бд (доп сервака если есть такой)
    
$vbulletin->config['SlaveServer']['password'],   пароль для конекта (доп сервака если есть такой)
    
$vbulletin->config['SlaveServer']['usepconnect'],  коннект (доп сервака если есть такой)
    
$vbulletin->config['Mysqli']['ini_file'],  - ну тут всё ясно
    $vbulletin
->config['Mysqli']['charset']  - и ессесно кодировка которая указанна в конфиге
); 
по факту, если нада присобачить БД то как мне кажеться вот таким макаром должен выглядеть код
PHP код:
$db->connect(
    
$vbulletin->config['Database']['dbname'],
    
$vbulletin->config['MasterServer']['servername'],
    
$vbulletin->config['MasterServer']['port'],
    
$vbulletin->config['MasterServer']['username'],
    
$vbulletin->config['MasterServer']['password'],
    
$vbulletin->config['MasterServer']['usepconnect'],
    
$vbulletin->config['Mysqli']['ini_file'],
    
$vbulletin->config['Mysqli']['charset']
); 
__________________
Мы те, кто мы есть
Мой личный блог
Devil вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Старый 23.02.2008, 14:48   #3 (permalink)
Местный
 
Аватар для AnD1
 
Специализация: Дизайнер
Регистрация: 22.02.2008
Адрес: Санкт-Петербург, Барселона, Мадрид
Сообщений: 150
Репутация: 24
По умолчанию

Devil, т.е. перед скриптом, в indexовой странице я прописываю:
Код:
<?php
$db->connect(
    $vbulletin->config['Database']['dbname'] = 'site';
    $vbulletin->config['MasterServer']['servername'] = 'localhost';
    $vbulletin->config['MasterServer']['port'] = '3306';
    $vbulletin->config['MasterServer']['username'] = 'root';
    $vbulletin->config['MasterServer']['password'] = '';
    $vbulletin->config['MasterServer']['usepconnect'] = '0';
    $vbulletin->config['Mysqli']['ini_file'] = '/home/localhost/www/forum/includes/';
    $vbulletin->config['Mysqli']['charset'] = 'utf8'
);
?>
Так?

Последний раз редактировалось AnD1; 23.02.2008 в 15:01.
AnD1 вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Старый 23.02.2008, 15:12   #4 (permalink)
Администратор
 
Аватар для Devil
 
Специализация: Кодер
Регистрация: 05.12.2007
Адрес: Москва
Сообщений: 3,583
Репутация: 1671
Номер ICQ 599613
По умолчанию

AnD1, нет
Я еже привёл самый последний пример. зачем тебе конекты к слайвсерверу?
по идее если уж быть совсем правельными, то по стандарту конект вот
PHP код:
<?php
$link 
mysql_connect("localhost""ИМЯ_ПОЛЬЗОВАТЕЛЯ""пароль");
?>
или вот старый и борадатый способ конекта
PHP код:
<?php
$sdb_name 
"localhost";
$user_name "root";
$user_password "";
$db_name "test_db";
if (!
$link mysql_connect($sdb_name$user_name$user_password));
?>
Так что как видишь дело вкуса
__________________
Мы те, кто мы есть
Мой личный блог
Devil вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Этот пользователь отблагодарил Devil за это сообщение:
AnD1 (23.02.2008)
Старый 23.02.2008, 15:16   #5 (permalink)
Администратор
 
Аватар для Devil
 
Специализация: Кодер
Регистрация: 05.12.2007
Адрес: Москва
Сообщений: 3,583
Репутация: 1671
Номер ICQ 599613
По умолчанию

AnD1, а зацем ты в кавычках указал все данные когда они берутсья из конфиг файла?
__________________
Мы те, кто мы есть
Мой личный блог
Devil вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Старый 23.02.2008, 15:19   #6 (permalink)
Администратор
 
Аватар для Devil
 
Специализация: Кодер
Регистрация: 05.12.2007
Адрес: Москва
Сообщений: 3,583
Репутация: 1671
Номер ICQ 599613
По умолчанию

AnD1,
вот сматри, давай разберём чё куда
вот у нас есть пример, давай смреть чё за чё отвечает
PHP код:
$db->connect
    
$vbulletin->config['Database']['dbname'], 
PHP код:
]$db->connect( - собстенно сам конект 
PHP код:
 $vbulletin->config['Database']['dbname'идёт обращение к файлу конфигурации config.phpи оттуда беруться данные которые обозначенны config['Database']['dbname'
. Так что в этом примере (воблоконект) ни чего писать дальше не надо
__________________
Мы те, кто мы есть
Мой личный блог
Devil вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Этот пользователь отблагодарил Devil за это сообщение:
AnD1 (23.02.2008)
Старый 23.02.2008, 15:33   #7 (permalink)
Местный
 
Аватар для AnD1
 
Специализация: Дизайнер
Регистрация: 22.02.2008
Адрес: Санкт-Петербург, Барселона, Мадрид
Сообщений: 150
Репутация: 24
По умолчанию

Devil, спасибо большое.
В результате у меня должно получиться следующее:
Код:
<?php
$sdb_name = "localhost";
$user_name = "root";
$user_password = "";
$db_name = "site";
if (!$link = mysql_connect($sdb_name, $user_name, $user_password));
?> 


<?php


$forum_ids = "2"; // номер(а) раздела(ов), из которого(ых) выводятся темы. Разделять 

запятыми

$pagenum = htmlspecialchars(intval($_GET['page']));
$pp = htmlspecialchars(intval($_GET['perpage']));

function check_int($inpval,$retval)
{
 if ($inpval)
 {
  $len = strlen($inpval);
  for($i=0; $i<$len; $i++)
  {
   if($inpval[$i] < '0' && $inpval[$i] > '9')
   {
    return $retval;
    exit;
   }
  }
  return $inpval;
 }
 else
 {
  return $retval;
 }
}

$pagenum = check_int($pagenum,1);
$pp = check_int($pp,5);
if ($pp > 100)
{
 $pp = 5;
}
$start_pt = ($pagenum - 1)*$pp; 

$result = $vbulletin->db->query_read("
                           SELECT T.threadid, T.postusername, T.title as title, T.replycount, 

T.postuserid as userid, F.description as ftitle, P.pagetext, P.dateline, T.lastpostid, T.views
                           FROM " . TABLE_PREFIX . "thread T
                           LEFT JOIN " . TABLE_PREFIX . "user U ON (T.lastposter = 

U.username)
                           INNER JOIN " . TABLE_PREFIX . "forum F ON (T.forumid = 

F.forumid)
                           INNER JOIN " . TABLE_PREFIX . "post P on P.postid = T.firstpostid
               WHERE T.forumid in (".$forum_ids.") and T.visible = 1
                           ORDER BY T.threadid desc
                           LIMIT ".intval($start_pt).", ".intval($pp)
);

$all_news = $vbulletin->db->query_first("
    SELECT COUNT(`threadid`) AS all_cnt
    FROM thread
    WHERE forumid in (".$forum_ids.")
");

require_once(DIR . '/includes/class_bbcode.php');
$bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
while ($row = $db->fetch_array($result))
{
$obrez = false;
 if (strlen($row['pagetext']) > 1200)
 {
  $row['pagetext'] = substr($row['pagetext'], 0, 1000);
  $obrez = true;
 }
 $row['pagetext'] = $bbcode_parser->do_parse($row['pagetext'],'0','1','1','1');

echo '<strong> <font size="2">'.$row['title'].'</font> </strong><font size="-2" 

face="Tahoma" color="#999999">- <a 

href="'.$forumdir.'/member.php?u='.$row['userid'].'" 

id="nodecor">'.$row['postusername'].'</a> <br>
&nbsp;&nbsp;&nbsp;&nbsp;'.$row['ftitle'].' <br>
&nbsp;&nbsp;&nbsp;&nbsp;'.vbdate("d.m - H:i", $row['dateline']).'<br><br></font>
<div align="justify">'.$row['pagetext'].'';
if ($obrez)
{
 echo'... <a href="'.$forumdir.'/showthread.php?t='.$row['threadid'].'"><font size="-2" 

face="Tahoma">[дальше]</div></font></a>';
}
echo '

<p align="right"><font size="-2" face="Tahoma"><a 

href="'.$forumdir.'/newreply.php?do=newreply&noquote=1&p='.$row['lastpostid'].'"><b>

комментировать</b></a> <br>
<a href="'.$forumdir.'/showthread.php?goto=newpost&t='.$row['threadid'].'"  

id="nodecor">ответов: <strong>'.$row['replycount'].'</strong> | просмотров: 

<b>'.$row['views'].'</b></a></font></p><br><br>';

}

if ((($pp > 20) || ($pp < 10)) && (($pp % 10 > 1) && ($pp % 10 <5)))
{
 $news_end = "и";
}
elseif ((($pp > 20) || ($pp < 10)) && ($pp % 10 == 1))
{
 $news_end = "ь";
}
elseif ($pp != 0)
{ $news_end = "ей";
}

$pageslink = "";
if ($all_news['all_cnt'] > ($start_pt + $pp))
{
 $pageslink = '<div align="right"><a href="index.php?page='.($pagenum + 

1).'&pp='.$pp.'"><b>на '.$pp.' новост'.$news_end.' назад</div>';
 if ($start_pt)
 {
  $pageslink .= ("&nbsp;|&nbsp;");
 }
 else
 {
  $pageslink .= "</p>";
 }
}
if ($start_pt)
{
if ($pageslink == "")
{
 $pageslink = '<div align="right">';
}
 $pageslink .= '<a href="index.php?page='.($pagenum - 1).'&pp='.$pp.'"><b>на '.$pp.' 

новост'.$news_end.' вперёд</b></div>';
}
echo $pageslink;
?>
Правильно?
AnD1 вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Старый 23.02.2008, 16:33   #8 (permalink)
Местный
 
Аватар для AnD1
 
Специализация: Дизайнер
Регистрация: 22.02.2008
Адрес: Санкт-Петербург, Барселона, Мадрид
Сообщений: 150
Репутация: 24
По умолчанию

Написал так:
Код:
<?php
$sdb_name = "localhost";
$user_name = "root";
$user_password = "";
$db_name = "site";
if (!$link = mysql_connect($sdb_name, $user_name, $user_password));
?> 


<?php

$forum_ids = "2"; // номер(а) раздела(ов), из которого(ых) выводятся темы. Разделять запятыми

$pagenum = htmlspecialchars(intval($_GET['page']));
$pp = htmlspecialchars(intval($_GET['perpage']));

function check_int($inpval,$retval)
{
 if ($inpval)
 {
  $len = strlen($inpval);
  for($i=0; $i<$len; $i++)
  {
   if($inpval[$i] < '0' && $inpval[$i] > '9')
   {
    return $retval;
    exit;
   }
  }
  return $inpval;
 }
 else
 {
  return $retval;
 }
}

$pagenum = check_int($pagenum,1);
$pp = check_int($pp,5);
if ($pp > 100)
{
 $pp = 5;
}
$start_pt = ($pagenum - 1)*$pp; 
$result = $db->query_read("
                           SELECT T.threadid, T.postusername, T.title as title, T.replycount, T.postuserid as userid, F.description as ftitle, P.pagetext, P.dateline, T.lastpostid, T.views
                           FROM " . TABLE_PREFIX . "thread T
                           LEFT JOIN " . TABLE_PREFIX . "user U ON (T.lastposter = U.username)
                           INNER JOIN " . TABLE_PREFIX . "forum F ON (T.forumid = F.forumid)
                           INNER JOIN " . TABLE_PREFIX . "post P on P.postid = T.firstpostid
               WHERE T.forumid in (".$forum_ids.") and T.visible = 1
                           ORDER BY T.threadid desc
                           LIMIT ".intval($start_pt).", ".intval($pp)
);


$all_news = $vbulletin->db->query_first("
SELECT COUNT(`threadid`) AS all_cnt
FROM " . TABLE_PREFIX . "thread
WHERE forumid in (".$forum_ids.")
");

require_once(DIR . '/includes/class_bbcode.php');
$bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
while ($row = $db->fetch_array($result))
{
$obrez = false;
 if (strlen($row['pagetext']) > 1200)
 {
  $row['pagetext'] = substr($row['pagetext'], 0, 1000);
  $obrez = true;
 }
 $row['pagetext'] = $bbcode_parser->do_parse($row['pagetext'],'0','1','1','1');

echo '<strong> <font size="2">'.$row['title'].'</font> </strong><font size="-2" face="Tahoma" color="#999999">- <a href="'.$forumdir.'/member.php?u='.$row['userid'].'" id="nodecor">'.$row['postusername'].'</a> <br>
&nbsp;&nbsp;&nbsp;&nbsp;'.$row['ftitle'].' <br>
&nbsp;&nbsp;&nbsp;&nbsp;'.vbdate("d.m - H:i", $row['dateline']).'<br><br></font>
<div align="justify">'.$row['pagetext'].'';
if ($obrez)
{
 echo'... <a href="'.$forumdir.'/showthread.php?t='.$row['threadid'].'"><font size="-2" face="Tahoma">[дальше]</div></font></a>';
}
echo '

<p align="right"><font size="-2" face="Tahoma"><a href="'.$forumdir.'/newreply.php?do=newreply&noquote=1&p='.$row['lastpostid'].'"><b>комментировать</b></a> <br>
<a href="'.$forumdir.'/showthread.php?goto=newpost&t='.$row['threadid'].'"  id="nodecor">ответов: <strong>'.$row['replycount'].'</strong> | просмотров: <b>'.$row['views'].'</b></a></font></p><br><br>';

}

if ((($pp > 20) || ($pp < 10)) && (($pp % 10 > 1) && ($pp % 10 <5)))
{
 $news_end = "и";
}
elseif ((($pp > 20) || ($pp < 10)) && ($pp % 10 == 1))
{
 $news_end = "ь";
}
elseif ($pp != 0)
{ $news_end = "ей";
}

$pageslink = "";
if ($all_news['all_cnt'] > ($start_pt + $pp))
{
 $pageslink = '<div align="right"><a href="index.php?page='.($pagenum + 1).'&pp='.$pp.'"><b>на '.$pp.' новост'.$news_end.' назад</div>';
 if ($start_pt)
 {
  $pageslink .= ("&nbsp;|&nbsp;");
 }
 else
 {
  $pageslink .= "</p>";
 }
}
if ($start_pt)
{
if ($pageslink == "")
{
 $pageslink = '<div align="right">';
}
 $pageslink .= '<a href="index.php?page='.($pagenum - 1).'&pp='.$pp.'"><b>на '.$pp.' новост'.$news_end.' вперёд</b></div>';
}
echo $pageslink;
?>
Выдает ошибку:

Fatal error:
Call to a member function query_read() on a non-object in Z:\home\localhost\www\index.php on line 45
AnD1 вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Старый 23.02.2008, 16:40   #9 (permalink)
Администратор
 
Аватар для AleX
 
Специализация: Кодер
Регистрация: 10.01.2008
Адрес: Украина, Киев.
Сообщений: 1,751
Репутация: 918
Номер ICQ 974909
Отправить сообщение для AleX с помощью Skype™
По умолчанию

AnD1, не правильно прописан коннект с базой. Поэтому строчка ...
Код:
$result = $db->query_read("
Чтения из Бд не может быть выполнена.
__________________
AleX's Blog

Последний раз редактировалось AleX; 23.02.2008 в 16:41.
AleX вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Старый 23.02.2008, 16:42   #10 (permalink)
Местный
 
Аватар для AnD1
 
Специализация: Дизайнер
Регистрация: 22.02.2008
Адрес: Санкт-Петербург, Барселона, Мадрид
Сообщений: 150
Репутация: 24
По умолчанию

AleX, а как же
Код:
<?php
$sdb_name = "localhost";
$user_name = "root";
$user_password = "";
$db_name = "site";
if (!$link = mysql_connect($sdb_name, $user_name, $user_password));
?>
это******
AnD1 вне форума  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post! Добавить в закладки Google
Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения



Часовой пояс GMT +4, время: 16:35.
Powered by vBulletin® Version 7.51.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Web Mastering By Devil Art