 |
 | |
23.02.2008, 14:05
|
#1 (permalink)
| | Местный
Специализация: Дизайнер Регистрация: 22.02.2008 Адрес: Санкт-Петербург, Барселона, Мадрид Сообщений: 150 Репутация: 24 | Подключение БД Наткнулся на очень полезную статейку для меня, где 2 пунктом идет: Цитата: Пункт 2. Подключаем Базу Данных.
И тут останавливаться надолго не будем. По умолчанию вы уже должны уметь это делать, иначе дальнейшее прочтение теряет всякий смысл. Итак, вы умеете подключать БД и вы это сделали. Сразу возник вопрос: а как это? как подключить БД? |
| |
23.02.2008, 14:41
|
#2 (permalink)
| | Администратор
Специализация: Кодер Регистрация: 05.12.2007 Адрес: Москва Сообщений: 3,583 Репутация: 1671  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']
);
вообщем-то конект вот он В данных строчках можно понять что все данные для конекта к БД беруться из конфигурационного файла 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']
);
|
| |
23.02.2008, 14:48
|
#3 (permalink)
| | Местный
Специализация: Дизайнер Регистрация: 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.
|
| |
23.02.2008, 15:12
|
#4 (permalink)
| | Администратор
Специализация: Кодер Регистрация: 05.12.2007 Адрес: Москва Сообщений: 3,583 Репутация: 1671  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 за это сообщение: | |
23.02.2008, 15:16
|
#5 (permalink)
| | Администратор
Специализация: Кодер Регистрация: 05.12.2007 Адрес: Москва Сообщений: 3,583 Репутация: 1671  599613 | AnD1, а зацем ты в кавычках указал все данные когда они берутсья из конфиг файла?  |
| |
23.02.2008, 15:19
|
#6 (permalink)
| | Администратор
Специализация: Кодер Регистрация: 05.12.2007 Адрес: Москва Сообщений: 3,583 Репутация: 1671  599613 | AnD1,
вот сматри, давай разберём чё куда
вот у нас есть пример, давай смреть чё за чё отвечает PHP код: $db->connect(
$vbulletin->config['Database']['dbname'],
PHP код: ]$db->connect( - собстенно сам конект
PHP код: $vbulletin->config['Database']['dbname'] идёт обращение к файлу конфигурации config.php, и оттуда беруться данные которые обозначенны config['Database']['dbname']
. Так что в этом примере (воблоконект) ни чего писать дальше не надо  |
| | | Этот пользователь отблагодарил Devil за это сообщение: | |
23.02.2008, 15:33
|
#7 (permalink)
| | Местный
Специализация: Дизайнер Регистрация: 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>
'.$row['ftitle'].' <br>
'.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 .= (" | ");
}
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;
?> Правильно? |
| |
23.02.2008, 16:33
|
#8 (permalink)
| | Местный
Специализация: Дизайнер Регистрация: 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>
'.$row['ftitle'].' <br>
'.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 .= (" | ");
}
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 |
| |
23.02.2008, 16:40
|
#9 (permalink)
| | Администратор
Специализация: Кодер Регистрация: 10.01.2008 Адрес: Украина, Киев. Сообщений: 1,751 Репутация: 918  974909  | AnD1, не правильно прописан коннект с базой. Поэтому строчка ... Код: $result = $db->query_read(" Чтения из Бд не может быть выполнена.
Последний раз редактировалось AleX; 23.02.2008 в 16:41.
|
| |
23.02.2008, 16:42
|
#10 (permalink)
| | Местный
Специализация: Дизайнер Регистрация: 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));
?> это****** |
| | |
Здесь присутствуют: 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 |  |