Не работает добавление ноды программно

Главные вкладки

Аватар пользователя cmdhitman cmdhitman 15 января 2009 в 23:44

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

Написал код вот так - почему-то в базу в таблице title выводит пустые значения - а остальные заполняются автоматом - что делать - тепреь точно не знаю Sad
<?php
// Bootstrap Drupal
require 'includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

$link = mysql_connect("localhost", "admin", "");
if(!$link) {echo "bad";}
mysql_select_db("furgan");
$result = mysql_query("SELECT DISTINCT t3.ENTERPRISE
FROM ENTERP__RUBRIKA AS t1, PARTITION__RUBRIKA AS t2, ENTERPRISE AS t3
WHERE t1.RUBRIKA_ID = t2.RUBRIKA_ID
AND t1.ENTERPRISE_ID = t3.ENTERPRISE_ID
AND t2.PARTITION_ID =9484");
if(!result) {echo "bad";}
while ($row = mysql_fetch_object($result)){

$node = new stdClass();

// Your script will probably pull this information from a database.
$node->title = $row->ENTERPRISE;
echo $row->ENTERPRISE.'
';
$node->body = "The body of my imported node.\n\nAdditional Information";
$node->type = 'katalog'; // Your specified content type
$node->created = time();
$node->changed = $node->created;
$node->status = 1;
$node->promote = 1;
$node->sticky = 0;
$node->format = 1; // Filtered HTML
$node->uid = 1; // UID of content owner
$node->language = 'en';
// If known, the taxonomy TID values can be added as an array.

node_save($node);

}

mysql_close($link);
Заранее спасибо. Код выборки полностью рабочий. В чём проблема не знаю

?>

Комментарии

Аватар пользователя cmdhitman cmdhitman 16 января 2009 в 10:59

Спасибо neochief, но всё равно не работает Sad Проверял через
echo $row->ENTERPRISE; Всё нормально выводится (список компаний)- а в базу залазить не хочет - пустые колонки title в node - остальное всё заполняется - что делать не знаю

Аватар пользователя cmdhitman cmdhitman 16 января 2009 в 11:37

В общем заносятся только титлы только с английской раскладкой - кодировка у базы utf8 - вот так задачка - в чём может быть дело ?

Аватар пользователя neochief neochief 16 января 2009 в 12:14

Да блин, проблема на 100% решается моим комментом. У вас некорректный код. Вероятно вы что-то не то поменяли.

Аватар пользователя jsv jsv 16 января 2009 в 12:19

слушайте, у вас что в таблице ENTERPRISE поле такое же есть - ENTERPRISE? Может стоит как-то переименовать от греха подальше что-нить одно из этого?

Аватар пользователя cmdhitman cmdhitman 16 января 2009 в 13:11

Хорошо - тогда попробуйте вот это сделать - результат тот же - только английская раскладка в базе (db "kursor") - база drupal - извините за настойчивость - но сильно охото проблему решить
<?php
// Bootstrap Drupal
require 'includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

$link = mysql_connect("localhost", "admin", "89091790608");
if(!$link) {echo "bad";}
mysql_select_db("kursor");
$result = mysql_query("SELECT title FROM `node` WHERE 1");
if(!result) {echo "bad";}
while ($row = mysql_fetch_object($result)){
$node = new stdClass();

// Your script will probably pull this information from a database.
$node->title = $row->title;
echo $row->title.'
';
$node->body = "The body of my imported node.\n\nAdditional Information";
$node->type = 'katalog'; // Your specified content type
$node->created = time();
$node->changed = $node->created;
$node->status = 1;
$node->promote = 1;
$node->sticky = 0;
$node->format = 1; // Filtered HTML
$node->uid = 1; // UID of content owner
$node->language = 'en';
// If known, the taxonomy TID values can be added as an array.

node_save($node);

}

mysql_close($link);

?>

Аватар пользователя cmdhitman cmdhitman 16 января 2009 в 15:57

Проблема решена с помощью скрипта Химического Али - всем огромное спасибо, кто помогал
вот скрипт

require 'includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 
function cp1251_to_utf8_recursive(/*mixed*/ $data)  
{  
    if (is_array($data))  
    {  
        $d = array();  
        foreach ($data as $k => &$v)  
        {  
            $d[cp1251_to_utf8_recursive($k)] = cp1251_to_utf8_recursive($v);  
        }  
        return $d;  
    }  
    if (is_string($data)) return iconv('cp1251', 'utf-8//IGNORE//TRANSLIT', $data);  
    if (is_scalar($data) or is_null($data)) return $data;  
    #throw warning, if the $data is resource or object:  
    trigger_error('An array, scalar or null type expected, ' . gettype($data) . ' given!', E_USER_WARNING);  
    return $data;  
}  
 
$link = mysql_connect("localhost", "user", "pass");
mysql_select_db("dnk73");
 
mysql_query("SET NAMES UTF8");
$result = mysql_query("SELECT * FROM table_News ORDER BY Id");
 
while ($row = mysql_fetch_array($result)){
        // Construct the new node object.
        $node = new stdClass();
        // Your script will probably pull this information from a database.
        $node->title = $row['nTitle'];
        $content = cp1251_to_utf8_recursive($row['nContent']);
        $node->teaser = substr ($content, 0, strpos($content, '</P>')+4);
        $node->body = $content;
Аватар пользователя cmdhitman cmdhitman 18 января 2009 в 15:58

В общем проблема решается ещё более проще - нужно было всего лишь вставить mysql_query("SET NAMES utf8"); сразу же после установки соединения с базой

<?php
 require 'includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 
 $link = mysql_connect("localhost", "username", "password");
mysql_query("SET NAMES utf8");
mysql_select_db("furgan");
$result = mysql_query("SELECT DISTINCT t3.ENTERPRISE
FROM ENTERP__RUBRIKA AS t1, PARTITION__RUBRIKA AS t2, ENTERPRISE AS t3
WHERE t1.RUBRIKA_ID = t2.RUBRIKA_ID
AND t1.ENTERPRISE_ID = t3.ENTERPRISE_ID
AND t2.PARTITION_ID =9484"
);
 
while ($row = mysql_fetch_array($result)){
        // Construct the new node object.

        $node = new stdClass();
        // Your script will probably pull this information from a database.
       
$node->title = $row['ENTERPRISE'];
echo $row['ENTERPRISE'];
$node->created = time();
$node->type = "katalog"
$node->changed = $node->created;
$node->status = 1;
$node->promote = 1;
$node->sticky = 0;
$node->format = 1;       // Filtered HTML
$node->uid = 1;          // UID of content owner
$node->language = 'en';

node_save($node);      

}