[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP + BLOB
heroino
Здравствуйте, уже неделю в сети ищу адекватную информацию по этому вопросу, помогите пожалуйста.

У меня имеется БД в которой одно поля имеет тип 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'];
$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))
{
...
}

myContent и должен перезаписываться. это плагин для джумлы. он берет из БД материал который ему нужен, заголовок, вступление и т.д. , делает пост и снова уже со следующего материала.

а вот текст из BLOB хоть убей не получается забрать

Спустя 2 минуты, 37 секунд (7.10.2010 - 14:20) heroino написал(а):
Цитата (SlavaFr @ 7.10.2010 - 09:58)
Цитата (heroino @ 7.10.2010 - 09:38)
точнее выводится но помоему только первая строка

а я думаю только последняя и совсем не по тому,что у тебя блоб.

а тогда почему?

Спустя 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)делай
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']; я забрать не могу, берется какая-то одна строка. а мне нужно все что в этой ячейке..
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.