Это для vBulletin 3 или 4?
В основном я работаю с vB3, и самый быстрый способ включить все ресурсы vBulletin - это создать новый php-файл в каталоге вашего форума со следующим кодом.
<?php
error_reporting(E_ALL & ~E_NOTICE & ~8192);
require_once('./global.php');
var_dump($vbulletin);
Эта переменная $ vbulletin - это объект реестра, содержащий практически все, что вам когда-либо понадобится, включая соединение с базой данных, функции чтения и записи, данные userinfo, очищенные значения _POST и _REQUEST и многое другое (фразы , данные сеанса, кэши и т. д.).
Есть 4 функции базы данных, которые вы будете использовать чаще всего.
- $ vbulletin -> db -> query_read () // получить более одной строки
- $ vbulletin -> db -> fetch_array () // преобразует возвращенные данные query_read в массив
- $ vbulletin -> db -> query_first () // извлекает одну строку
- $ vbulletin -> db -> query_write () // обновить, вставить или удалить строки, таблицы и т. Д.
query_read - это то, что вы будете использовать, когда ожидаете более одного результата, через который вы собираетесь зацикливаться. Например, если вы хотите сосчитать все слова в одной цепочке, вам нужно будет запросить таблицу постов с идентификатором потока, просмотреть все записи в этой ветке и сосчитать все слова в сообщении.
Примечание: «TABLE_PREFIX» - это константа, заданная в config.php. Важно всегда добавлять имя таблицы к этой константе на тот случай, если другие форумы решат префикс своих таблиц.
<?php
error_reporting(E_ALL & ~E_NOTICE & ~8192);
require_once('./global.php');
$threadid = 1;
// fetch all post from a specfic thread
$posts = $vbulletin->db->query_read("
SELECT pagetext
FROM " . TABLE_PREFIX . "post
WHERE threadid = $threadid
");
/**
* Loop through each post.
*
* Here we use the "fetch_array" method to convert the MySQL data into
* a useable array. 99% of the time you'll use "fetch_array" when you
* use "query_read".
*
* $post will contains the post data for each loop. In our case, we only
* have "pagetext" avaliable to use since that's all we told MySQL we needed
* in our query. You can do SELECT * if you want ALL the table data.
*/
while ($post = $vbulletin->db->fetch_array($posts)) {
$totalWords = $totalWords + str_word_count($post['pagetext']);
}
/**
* Print the total number of words this thread contains.
*
* The "vb_number_format" is basically wrapper of php's "number_format", but
* with some vBulletin extras. You can visit the /includes/functions.php file
* for all the functions available to you. Many of them are just convenient
* functions so you don't have to repeat a lot of code. Like vBDate(), or
* is_valid_email().
*/
echo sprintf("Thread ID %i contains %s words", $threadid, vb_number_format($totalWords));
Функция query_first используется для извлечения одной строки из базы данных. Не требуется зацикливание или что-то в этом роде. Если, например, вы хотите получить информацию об одном пользователе из базы данных - для которой вам не нужен запрос, но мы сделаем это в качестве примера - вы бы использовали что-то вроде этого.
<?php
error_reporting(E_ALL & ~E_NOTICE & ~8192);
require_once('./global.php');
$userid = 1;
$user = $vbulletin->db->query_first("
SELECT *
FROM " . TABLE_PREFIX . "user
WHERE userid = $userid
");
echo sprintf("Hello, %s. Your email address is %s and you have %s posts",
$user['username'],
$user['email'],
vb_number_format($user['posts'])
);
Наконец, если вы хотите обновить что-либо в базе данных, вы должны использовать « query_write ». Эта функция довольно проста. Эта функция принимает любой запрос вставки или удаления обновления MySQL. Например, если бы мне нужно было обновить идентификатор Yahoo Yahoo, вы бы сделали.
<?php
error_reporting(E_ALL & ~E_NOTICE & ~8192);
require_once('./global.php');
$userid = 1;
$update = $vbulletin->db->query_write("
UPDATE " . TABLE_PREFIX . "user
SET yahoo = 'myYahooID@yahoo.com'
WHERE userid = $userid
");
if ($update) {
$userinfo = fetch_userinfo($userid);
echo sprintf("Updated %s yahoo ID to %s", $userinfo['username'], $userinfo['yahoo']);
}
Надеюсь, это поможет вам начать. Я бы порекомендовал использовать vBulletin 3, пока вы не освоитесь с ним. Я думаю, тебе будет легче. Большая часть этого будет переводиться в vBulletin 4 с некоторыми изменениями, но эта кодовая база не так дружелюбна для новичков.