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

Прислано: cmdhitman

чт, 15/01/2009 - 20:44

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

Написал код вот так - почему-то в базу в таблице title выводит пустые значения - а остальные заполняются автоматом - что делать - тепреь точно не знаю :(

<?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.'<br>';
$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);
Заранее спасибоКод выборки полностью рабочийВ чём проблема не знаю
 
 
?>

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано neochief в чт, 15/01/2009 - 23:03.

ENTERPRISE AS t3 превратить в ENTERPRISE
или
$node->title = $row->t3;


Опубликовано cmdhitman в пт, 16/01/2009 - 07:59.

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


Опубликовано cmdhitman в пт, 16/01/2009 - 08:37.

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


Опубликовано neochief в пт, 16/01/2009 - 09:14.

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


Опубликовано jsv в пт, 16/01/2009 - 09:19.

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


Опубликовано Химический Али в пт, 16/01/2009 - 09:55.

kill me


Опубликовано cmdhitman в пт, 16/01/2009 - 10: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.'<br>';
$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);


?>


Опубликовано neochief в пт, 16/01/2009 - 12:43.

SELECT title FROM `node` WHERE 1 — жирным выделенно, это что такое? Кусок явно лишний.


Опубликовано cmdhitman в пт, 16/01/2009 - 12: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 в вс, 18/01/2009 - 12: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);      
 
}


Опубликовано dimmduh в пт, 24/06/2011 - 08:58.

Программное добавление нод
http://timonweb.com/how-programmatically-create-nodes-comments-and-taxon...


Ссылки партнёров