Не работает добавление ноды программно
Прислано: 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);
Заранее спасибо. Код выборки полностью рабочий. В чём проблема не знаю
?>- cmdhitman's blog
- Для комментирования войдите или зарегистрируйтесь
ENTERPRISE AS t3 превратить в ENTERPRISE
или
$node->title = $row->t3;
- Для комментирования войдите или зарегистрируйтесь
Спасибо neochief, но всё равно не работает :( Проверял через
echo $row->ENTERPRISE; Всё нормально выводится (список компаний)- а в базу залазить не хочет - пустые колонки title в node - остальное всё заполняется - что делать не знаю
- Для комментирования войдите или зарегистрируйтесь
В общем заносятся только титлы только с английской раскладкой - кодировка у базы utf8 - вот так задачка - в чём может быть дело ?
- Для комментирования войдите или зарегистрируйтесь
Да блин, проблема на 100% решается моим комментом. У вас некорректный код. Вероятно вы что-то не то поменяли.
- Для комментирования войдите или зарегистрируйтесь
слушайте, у вас что в таблице ENTERPRISE поле такое же есть - ENTERPRISE? Может стоит как-то переименовать от греха подальше что-нить одно из этого?
- Для комментирования войдите или зарегистрируйтесь
kill me
- Для комментирования войдите или зарегистрируйтесь
Хорошо - тогда попробуйте вот это сделать - результат тот же - только английская раскладка в базе (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);
?>- Для комментирования войдите или зарегистрируйтесь
SELECT title FROM `node` WHERE 1 — жирным выделенно, это что такое? Кусок явно лишний.
- Для комментирования войдите или зарегистрируйтесь
Проблема решена с помощью скрипта Химического Али - всем огромное спасибо, кто помогал
вот скрипт
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;
- Для комментирования войдите или зарегистрируйтесь
В общем проблема решается ещё более проще - нужно было всего лишь вставить 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); }
- Для комментирования войдите или зарегистрируйтесь
Программное добавление нод
http://timonweb.com/how-programmatically-create-nodes-comments-and-taxon...
- Для комментирования войдите или зарегистрируйтесь





Комментарии