У меня имеется БД в которой одно поля имеет тип BLOB и в нём хранится текст. Мне его нужно прочесть и вывести на сайт. Так вот, никак не могу разобраться как же это сделать, с обычными текстовыми полями все было намного проще
$myContent->title = "$r[title]";
а с BLOBом просто беда.
Подскажите пожалуйста, заранее спасибо.
Спустя 5 минут, 18 секунд (7.10.2010 - 12:26) linker написал(а):
$myContent->title = $r['title'];
Спустя 7 минут, 45 секунд (7.10.2010 - 12:34) heroino написал(а):
Цитата (linker @ 7.10.2010 - 09:26) |
$myContent->title = $r['title']; |
Пробовал так, почему то не получается, нет текста.
вот такой у меня код:
<?php
$link = mysql_connect("adr", "bduser", "111111") or die("Нет соединение с базой<br>"); // установили соединение с БД
mysql_query("SET NAMES 'utf8'"); // кодировка - возможны проблемы. необходимо проверить кдировку БД
print ("Успешное подключение к БД<br>");
mysql_select_db('db_gaz', $link) or die ('База данных не выбрана<br>'); //выбираем базу данных
print ("База данных выбрана<br>");
$query = "SELECT * FROM articles ORDER BY id ASC"; // сортировка по убыванию, что бы последняя новость стала первой
$result=mysql_query($query);
while($r=mysql_fetch_array($result)) {
$myContent = & JTable::getInstance('content');
$myContent->id = 0;
$myContent->title = "$r[title]";
$myContent->alias = 'tour_' . date('Y-m-d-H-i-s', time());
$myContent->introtext = "$r[decsription]";
[b]$myContent->fulltext = $r['text'];[/b]
$myContent->state = 1;
$myContent->publish_down = date('Y-m-d', strtotime('2011-12-31'));
$myContent->created = date('Y-m-d H:i:s', time());
$user =& JFactory::getUser();
$myContent->created_by = $user->id;
$myContent->modified_by = $user->id;
$myContent->hits = 1;
$myContent->catid = 38;
$myContent->sectionid = 7; //раздел с указанием идентификатора (важно!)
$myContent->parentid = 0;
$myContent->access = 0;
if(!$myContent->store())
{
return false;
}
$db = & JFactory::getDBO();
if ($db)
{
$query = "UPDATE #__content_frontpage SET ordering = ordering + 1";
$db->setQuery( $query );
$db->query();
$query = "INSERT INTO #__content_frontpage (content_id, ordering) VALUES (" . $myContent->id . ", 1)";
$db->setQuery( $query );
$db->query();
}
}
mysql_close($link); // закрыли БД
?>
Спустя 4 минуты, 22 секунды (7.10.2010 - 12:38) heroino написал(а):
точнее выводится но помоему только первая строка
Спустя 5 минут, 3 секунды (7.10.2010 - 12:43) linker написал(а):
Оффтоп, только так
$myContent->title = $r['title'];и никак иначе. Так
$myContent->introtext = $r['decsription'];
$myContent->fulltext = $r['text']
$query = "SELECT * FROM articles ORDER BY id ASC"сортировка по возрастанию, а вот так
$query = "SELECT * FROM articles ORDER BY id DESC"по убыванию.
while($r = mysql_fetch_assoc($result))Плюс данный цикл не имеет никакого смысла ибо $myContent с каждой итерацией перезаписывается новыми данными. Видимо имелся ввиду запрос вида
{
...
}
$query = "SELECT * FROM articles ORDER BY id DESC LIMIT 1";
if ($r = mysql_fetch_assoc($result))
{
...
}
Спустя 14 минут, 54 секунды (7.10.2010 - 12:58) SlavaFr написал(а):
Цитата (heroino @ 7.10.2010 - 09:38) |
точнее выводится но помоему только первая строка |
а я думаю только последняя и совсем не по тому,что у тебя блоб.
Спустя 1 час, 19 минут, 38 секунд (7.10.2010 - 14:18) heroino написал(а):
Цитата (linker @ 7.10.2010 - 09:43) |
Оффтоп, только так$myContent->title = $r['title'];и никак иначе. Так $query = "SELECT * FROM articles ORDER BY id ASC"сортировка по возрастанию, а вот так $query = "SELECT * FROM articles ORDER BY id DESC"по убыванию. while($r = mysql_fetch_assoc($result))Плюс данный цикл не имеет никакого смысла ибо $myContent с каждой итерацией перезаписывается новыми данными. Видимо имелся ввиду запрос вида $query = "SELECT * FROM articles ORDER BY id DESC LIMIT 1"; |
myContent и должен перезаписываться. это плагин для джумлы. он берет из БД материал который ему нужен, заголовок, вступление и т.д. , делает пост и снова уже со следующего материала.
а вот текст из BLOB хоть убей не получается забрать
Спустя 2 минуты, 37 секунд (7.10.2010 - 14:20) heroino написал(а):
Цитата (SlavaFr @ 7.10.2010 - 09:58) | ||
а я думаю только последняя и совсем не по тому,что у тебя блоб. |
а тогда почему?
Спустя 52 секунды (7.10.2010 - 14:21) linker написал(а):
Мда, не заметил из-за плохого форматирования кода.
Спустя 1 минута, 54 секунды (7.10.2010 - 14:23) heroino написал(а):
Цитата (linker @ 7.10.2010 - 11:21) |
Мда, не заметил из-за плохого форматирования кода. |
извините). учусь только
Спустя 1 час, 7 минут, 18 секунд (7.10.2010 - 15:30) SlavaFr написал(а):
какой тип у поля content.`fulltext` ?
Спустя 4 минуты, 11 секунд (7.10.2010 - 15:34) heroino написал(а):
Цитата (SlavaFr @ 7.10.2010 - 12:30) |
какой тип у поля content.`fulltext` ? |
поле 'text' тип BLOB , binar
Спустя 14 минут, 49 секунд (7.10.2010 - 15:49) SlavaFr написал(а):
вопросы:
1)
ты уверен, что скрипт в этом месте не соскакивает, так как ты
if(!$myContent->store())
{
return false;
}
2)ты делаеш все время
$myContent->id = 0;
и если это клуч, то ты переписываеш возможни все время только строчку с id=0.
принудительные Советы:
3)$myContent =JTable::getInstance('content'),
$user=JFactory::getUser() и $db=JFactory::getDBO(); делай только один раз перед циклом while.
4)делай
1)
ты уверен, что скрипт в этом месте не соскакивает, так как ты
if(!$myContent->store())
{
return false;
}
2)ты делаеш все время
$myContent->id = 0;
и если это клуч, то ты переписываеш возможни все время только строчку с id=0.
принудительные Советы:
3)$myContent =JTable::getInstance('content'),
$user=JFactory::getUser() и $db=JFactory::getDBO(); делай только один раз перед циклом while.
4)делай
UPDATE #__content_frontpage SET ordering = ordering + $iодин раз и после цикла ($i это counter который ты будеш в цикле увеличивать)
Спустя 31 минута, 28 секунд (7.10.2010 - 16:21) heroino написал(а):
Цитата (SlavaFr @ 7.10.2010 - 12:49) |
вопросы: 1) ты уверен, что скрипт в этом месте не соскакивает, так как ты if(!$myContent->store()) { return false; } 2)ты делаеш все время $myContent->id = 0; и если это клуч, то ты переписываеш возможни все время только строчку с id=0. принудительные Советы: 3)$myContent =JTable::getInstance('content'), $user=JFactory::getUser() и $db=JFactory::getDBO(); делай только один раз перед циклом while. 4)делай UPDATE #__content_frontpage SET ordering = ordering + $iодин раз и после цикла ($i это counter который ты будеш в цикле увеличивать) |
Да там всё правильно работает как надо.
я прохожу по БД , считывая из обычных полей TINYTEXT инфу, заношу в переменную, после эта инфа попадает в статью на сайт.
затем переменные такие как Description, Title обновляются новыми значениями из таблиц и снова в новую статью вставляются.
проблема в том что теперь помимо TINYTEXT появилась одна ячейка с BLOB и из нее обычным $myContent->fulltext = $r['text']; я забрать не могу, берется какая-то одна строка. а мне нужно все что в этой ячейке..