Привет, уважаемы форумчане Помогите разобраться - думаю это будет полезно для многих кто столкнётся с данной проблемой.
Написал код вот так - почему-то в базу в таблице 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.'
';
$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);
Заранее спасибо. Код выборки полностью рабочий. В чём проблема не знаю
?>
Комментарии
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.'
';
$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 — жирным выделенно, это что такое? Кусок явно лишний.
Проблема решена с помощью скрипта Химического Али - всем огромное спасибо, кто помогал
вот скрипт
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"); сразу же после установки соединения с базой
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...