• DONATE to NULLED!
    Вы можете помочь Форуму и команде, поддержать финансово.
    starwanderer - модератор этого раздела будет Вам благодарен!

Помощь Выод записей в wp из другой бд, но на том же сервере.

Статус
В этой теме нельзя размещать новые ответы.

r0nin

Постоялец
Регистрация
12 Апр 2010
Сообщения
78
Реакции
4
Доброго дня всем. Подскажите запрос с помощью которого выводились бы записи из другой базы данных, которая распологается на том же серваке. Вообщем конечно можно было бы придумать отдельный файл с sql запрсом типа SELECT FROM и т.д. , но вроде бы в wordpress есть метод вывода данных из другой бд и это более выгодно по ряду причин.
 
В сети есть методы реализации данной функции, но они какие-то неполные. В некоторых отображаются только заголовки и при клике на неё идёт на 404-ый. Также не получается сделать pagination. Итак.
Например вот один из методов :
PHP:
$mydb = new wpdb('username','password','database','localhost');
$rows = $mydb->get_results("select Name from my_table");
echo "<ul>";
 
foreach ($rows as $obj) :
  echo "<li>".$obj->Name."</li>";
endforeach;
echo "</ul>";

Вот ещё один :
PHP:
/**
* Instantiate the wpdb class to connect to your second database, $database_name
*/
$second_db = new wpdb(DB_USER, DB_PASSWORD, $database_name, DB_HOST);
/**
* Use the new database object just like you would use $wpdb
*/
$results = $second_db->get_results($your_query);

Также:
PHP:
$db1 = mysql_connect( 'localhost', 'db_username', 'db_password' ) or die( mysql_error() ); 
 $sel1 = mysql_select_db( 'db_name' ) or die( mysql_error() ); 
 $query = "SELECT something FROM some_table";
 $res1 = mysql_query( $query, $db1 );
 while ( $array = mysql_fetch_array( $res1 ) ){
 print_r( $array );
 }
 
            while($row = mysql_fetch_array($result)){
 
            echo '<br />'.$row['result1'];
 
            echo '<br />'.$row['result2'];
 
            echo '<br />'.$row['result3'];
 
            echo '<br />'.$row['result4'];
 
            echo '<hr />';
 
            }

Ещё один вроде:
PHP:
<?php
include('/path/to/database/connection.php');
?>
 
and that file looked like:
 
 
<?php
function runSQL($rsql) {
$rootpasswd='yourPasswordHere';
$user='yourUserHere';
$db='yourDBhere';
$dbcnx = @mysql_connect('localhost',$user,$rootpasswd,true);
if (!$dbcnx) {
echo '<p>Unable to connect to the database server at this time.</p>';
exit();
}
mysql_select_db($db, $dbcnx);
$result = mysql_query($rsql) or die ('test');
return $result;
mysql_close($connect);
}
?>
 
Then to loop through the results:
 
 
$sql = "Your SQL statement goes here";
$result = runSQL($sql);
while ($row = mysql_fetch_array($result)) {
Do stuff;
}

PHP:
<?php
function get_other_posts(){
    $wpdb_old = wp_clone($GLOBALS['wpdb']);
    $wpdb_new = &$GLOBALS['wpdb'];   
      // All you have to care about following two lines
    $wpdb_new = new wpdb('your_db_username','db_password','new_db_name','localhost');
    $wpdb_new->set_prefix('wp_');
 
        //Now whatever function you'll call, it will use new database
    $posts = get_posts('numberposts=5');
       
        //We are done so lets take the old wpdb back on its position
    $wpdb_new = $wpdb_old;   
}


Также был вариант насчёт HyperDb - но он пока что у меня на рассмотрении, так как этот вариант может конфликтовать с mysql кешированием (w3 total cache).
Вообщем головоломка :).
 
Каким образом связаны запросы к другой базе и встроенная пагинация ВП? Если нужно выводить эти данные, то можно написать шаблон темы и добавить свои правила в $rewrite_rules
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху