PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (3): [1] 2 3 »
Найдено сообщений: 40
hanns-g
Отправлено: 30 Мая, 2014 - 15:07:22 • Тема: Помогите разбить текст на массив • Форум: Хранение данных, их вывод и обработка
Ответов: 2 Просмотров: 1048
Добрый день!
есть текст который загружается из БД
в виде:
show_title=
link_titles=
show_intro=
language=
key=
то есть каждый параметр это новая строка
вот каждую строку надо разделить на элементы массива
вот пробовал разными вариантами заменить перенос на пробел - не получается
echo $my_string; - это что бы видеть меняет оно или нет - не меняет
подскажите пожалуйста что я не так сделал
hanns-g
Отправлено: 12 Февраля, 2014 - 01:50:46 • Тема: Перенос контента из одной одной таблицы в другую • Форум: Работа с СУБД
Ответов: 2 Просмотров: 965
Разобрался с экранированием ячейки:
caballero пишет: обычно полагается проставлять слеши функциями типа mysql_real_escape_string
Большое спасибо!
caballero пишет: и нафига вы каждый раз делаете alter table
УРА!!!
Заработало!!!
если кому надо будет, может вспомнит хорошим словом )))
напоминаю для тех кто в танке (как и я пару часов назад):
1. надо правильно указывать имена таблиц
2. я новую и старую джумлу ставил на одну БД с разными префиксами
3. материалы не переносятся все, а только из нужных категорий,
ИД которой(из старой джумла) прописан в коде (смотрите коментарий)
Вот правильные код:
CODE (
htmlphp ):
скопировать код в буфер обмена
<? php
// Подключение к БД
// вводим свои данные
$host = "localhost" ;
$user = "root" ;
$pass = "" ;
$db = "gorod2" ;
/* меняем кодировку с 1251 на утф 8
*/
ALTER TABLE `gorod2`.`s_content` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
" ) ;
/* Категория материалы которой копируем
и категория новой джумла, в которую копируем
*/
$cat_id = 12 ;
$newcat_id = 9 ;
/* Собираем инфу со старой таблицы
тут надо указать имя таблицы с правильным префиксом
*/
$sql = "
SELECT *
FROM s_content
WHERE catid = " . $cat_id . "
" ;
// Переребираем элементы таблицы
{
echo $row -> id ;
echo "<br />" ;
echo $row -> title ;
if ( $row -> id != 0)
{
if ( $row -> introtext == "" ) { $row -> introtext = "" ; } else { $row -> introtext = "" . mysql_escape_string ( $row -> introtext ) . "" ; } if ( $row -> fulltext == "" ) { $row -> fulltext = "" ; } else { $row -> fulltext = "" . mysql_escape_string ( $row -> fulltext ) . "" ; } $row -> access = 1 ;
// Не забываем прописать имя таблицы джумла 2.5 с правильным префиксом
$sql = "INSERT INTO `st_content` VALUES ('" . $row -> id . "', '', '" . $row -> title . "', '" . $row -> title_alias . "', '" . $row -> title_alias . "', '" . $row -> introtext . "', '" . $row -> fulltext . "', '" . $row -> state . "', 0, 0, '" . $newcat_id . "', '" . $row -> created . "', 6, '', '" . $row -> modified . "', 6, 0, '" . $row -> checked_out_time . "', '" . $row -> publish_up . "', '" . $row -> publish_down . "', '{\" image_intro\" :\" \" ,\" float_intro\" :\" \" ,\" image_intro_alt\" :\" \" ,\" image_intro_caption\" :\" \" ,\" image_fulltext\" :\" \" ,\" float_fulltext\" :\" \" ,\" image_fulltext_alt\" :\" \" ,\" image_fulltext_caption\" :\" \" }', '{\" urla\" :null,\" urlatext\" :\" \" ,\" targeta\" :\" \" ,\" urlb\" :null,\" urlbtext\" :\" \" ,\" targetb\" :\" \" ,\" urlc\" :null,\" urlctext\" :\" \" ,\" targetc\" :\" \" }', '{\" show_title\" :\" \" ,\" link_titles\" :\" \" ,\" show_intro\" :\" \" ,\" show_category\" :\" \" ,\" link_category\" :\" \" ,\" show_parent_category\" :\" \" ,\" link_parent_category\" :\" \" ,\" show_author\" :\" \" ,\" link_author\" :\" \" ,\" show_create_date\" :\" \" ,\" show_modify_date\" :\" \" ,\" show_publish_date\" :\" \" ,\" show_item_navigation\" :\" \" ,\" show_icons\" :\" \" ,\" show_print_icon\" :\" \" ,\" show_email_icon\" :\" \" ,\" show_vote\" :\" \" ,\" show_hits\" :\" \" ,\" show_noauth\" :\" \" ,\" urls_position\" :\" \" ,\" alternative_readmore\" :\" \" ,\" article_layout\" :\" \" ,\" show_publishing_options\" :\" \" ,\" show_article_options\" :\" \" ,\" show_urls_images_backend\" :\" \" ,\" show_urls_images_frontend\" :\" \" }', '" . $row -> version . "', 0, '" . $row -> ordering . "', '', '', '" . $row -> access . "', '" . $row -> hits . "', '{\" robots\" :\" \" ,\" author\" :\" \" ,\" rights\" :\" \" ,\" xreference\" :\" \" }', 0, '*', '')" ;
echo $sql . '<br /><br />' ;
echo "<br />=======================================================<br /><br />" ;
}
}
/**/
echo "<hr />" ;
?>
hanns-g
Отправлено: 12 Февраля, 2014 - 00:41:16 • Тема: Перенос контента из одной одной таблицы в другую • Форум: Работа с СУБД
Ответов: 2 Просмотров: 965
Надо перенести контент из одной таблицы БД(старая джумла 1.0) в другую (джумла 2.5)
написал код:
CODE (
htmlphp ):
скопировать код в буфер обмена
mysql_query("
ALTER TABLE `gorod2`.`s_content` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
");
mysql_query("SET CHARACTER SET 'utf-8'");
mysql_query("SET NAMES 'utf-8'");
mysql_set_charset('utf8');
$cat_id = 9;
$sql = "
SELECT *
FROM s_content
WHERE catid = ".$cat_id."
";
echo "< hr /> ";
$res = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_object($res))
{
if ($row->id != 0)
{
echo "< br /> ";
$sql = "INSERT INTO `st_content` VALUES ('".$row->id."', NULL, '".$row->title."', '".$row->title_alias."', NULL, '".$row->introtext."', '".$row->fulltext."', '".$row->state."', '0', '0', '".$cat_id."', '".$row->created."', '6', NULL, '".$row->modified."', '6', '0', '".$row->checked_out_time."', '".$row->publish_up."', '".$row->publish_down."', '{\"image_intro\":\"\",\"float_intro\":\"\",\"image_intro_alt\":\"\",\"image_intro_caption\":\"\",\"image_fulltext\":\"\",\"float_fulltext\":\"\",\"image_fulltext_alt\":\"\",\"image_fulltext_caption\":\"\"}', '{\"urla\":null,\"urlatext\":\"\",\"targeta\":\"\",\"urlb\":null,\"urlbtext\":\"\",\"targetb\":\"\",\"urlc\":null,\"urlctext\":\"\",\"targetc\":\"\"}', '{\"show_title\":\"\",\"link_titles\":\"\",\"show_intro\":\"\",\"show_category\":\"\",\"link_category\":\"\",\"show_parent_category\":\"\",\"link_parent_category\":\"\",\"show_author\":\"\",\"link_author\":\"\",\"show_create_date\":\"\",\"show_modify_date\":\"\",\"show_publish_date\":\"\",\"show_item_navigation\":\"\",\"show_icons\":\"\",\"show_print_icon\":\"\",\"show_email_icon\":\"\",\"show_vote\":\"\",\"show_hits\":\"\",\"show_noauth\":\"\",\"urls_position\":\"\",\"alternative_readmore\":\"\",\"article_layout\":\"\",\"show_publishing_options\":\"\",\"show_article_options\":\"\",\"show_urls_images_backend\":\"\",\"show_urls_images_frontend\":\"\"}', '".$row->version."', '0', '".$row->ordering."', NULL, NULL, '".$row->access."', '".$row->hits."', '{\"robots\":\"\",\"author\":\"\",\"rights\":\"\",\"xreference\":\"\"}', '0', '*', NULL";
echo $sql;
mysql_query($sql) or die(mysql_error());
echo "< br /> =======================================================< br />< br /> ";
}
}
mysql_close();
Первый запрос проходит на ура, то есть данные с таблицы формирует хорошо,
ну а второй запрос, где идет уже само наполнение новой таблицы - пишет:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
немогу понять чего оно хочет, вроде все правильно
посмотрите пожалуйста новым взглядом
(Добавление)
Я так понимаю оно ругается на пустое значение ячейки - ''
но если оно пустое и в оригинале тогда как сделать?
(Добавление)
сделал проверку на заполнение
if ($row->title_alias=='') {$row->title_alias='NULL';}
if ($row->introtext=='') {$row->introtext='NULL';}
if ($row->fulltext=='') {$row->fulltext='NULL';}
ничего не поменялось, люди подскажите пожалуйста!
(Добавление)
пробовал убирать поля с параметрами - ничего не дало (те которые с "")
--------------------
вот результат выполнения скрипта:
INSERT INTO `st_content` VALUES ('23', NULL, 'Канское медицинское училище', 'NULL', NULL, '
63600, г. Канск, ул. Революции, 20
Ермухометов Николай Иванович
телефон: 4-31-58
факс: 3-31-58
', 'NULL', '1', 0, 0, '9', '2009-08-11 23:23:51', 6, NULL, '2009-08-11 23:51:14', 6, 0, '0000-00-00 00:00:00', '2009-08-11 23:22:14', '0000-00-00 00:00:00', '{"image_intro":"","float_intro":"","image_intro_alt":"", ..., 0, '*', NULL
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
================================ ====
Кажись нашел проблему, в ячейке интротекст и фултекст есть теги и символы,
а вот как сделать чтобы запрос понимал что это текст из одной ячейки,
а не какието спец. символы ?
hanns-g
Отправлено: 02 Февраля, 2014 - 18:29:39 • Тема: Как в чпу добавить слово через htaccess • Форум: Apache и другие веб-серверы
Ответов: 0 Просмотров: 212
Помогите пож. прописать правило в htaccess
Ситуация такая - перенес контент со старой джумла на новую
но теперь надо сохранить урлы
их там много и прописывать каждую - нереально
старые ссылки такого вида
http://justice/ru/uslugi
а новые http://justice/uslugi
при этом главная должна так и остаться
http://justice
то есть вариант перенести джумла в папку ru - отпадает
надо как то через штаксесс добавить ru
c штаксесс я сталкиваюсь очень редко
и сейчас разобраться с этими перенаправлениями никак не получается
на сколько я понял
RewriteRule .* index.php [L]
- эта строчка уберает index.php
а как сделать чтобы она заменяла его на ru/
???
(Добавление)
нашел другой способ
настроил через sh404sef
hanns-g
Отправлено: 27 Сентября, 2011 - 21:43:26 • Тема: Подскажите, пож., как сделать выборку mySQL: • Форум: SQL и Архитектура БД
Ответов: 7 Просмотров: 80
Добрый день.
есть БД(таблица) с записями и датой добавления
как выдрать только те записи, которые соответствуют сегодняшнему числу и месяцу
(не зависимо от года и времени)
это должно быть что то типа календаря событий
сделал так:
$d = date(d);
$m = date(m);
$where = 'AND DAYOFYEAR(a.created = '.$d.') AND MONTH(a.created ='.$m.')'
формат даты в таблице: ГГГГ-ММ-ДД ЧЧ-ММ-СС
но оно почему то не работает
вот весь запрос:
PHP:
скопировать код в буфер обмена
$query = 'SELECT a.*, ' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,' .
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug' .
' FROM #__content AS a' .
( $show_front == '0' ? ' LEFT JOIN #__content_frontpage AS f ON f.content_id = a.id' : '' ) .
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
' INNER JOIN #__sections AS s ON s.id = a.sectionid' .
' WHERE ' . $where . ' AND s.id > 0' .
( $access ? ' AND a.access <= ' . ( int) $aid . ' AND cc.access <= ' . ( int) $aid . ' AND s.access <= ' . ( int) $aid : '' ) .
( $catid ? $catCondition : '' ) .
( $secid ? $secCondition : '' ) .
( $show_front == '0' ? ' AND f.content_id IS NULL ' : '' ) .
' AND s.published = 1' .
' AND cc.published = 1' .
' ORDER BY ' . $ordering ;
Огромное спасибо!!!
hanns-g
Отправлено: 27 Сентября, 2011 - 11:53:53 • Тема: Подскажите, пож., как сделать выборку mySQL: • Форум: Работа с СУБД
Ответов: 6 Просмотров: 2369
Добрый день
Огромное спасибо за ответ!!! Сейчас попробую, ато вчера лег в 5 утра...
Это не так даже к новостям - как, что то типа календаря
даты всякие - праздники...
(Добавление)
Мелкий пишет: White, меня несколько (т.е. совсем) смущает запрос, выбирается из бд a, таблицы created по условию поля created в таблице a. Сходи не знаю куда, принеси неизвестно что?
ну это часть запроса, мен надо сделать саму выборку
(Добавление)
если вставляю эту часть кода - не выводит вобще ничего
пробовал по разному - ничего
AND DAYOFYEAR(a.created = '.$d.') AND MONTH( a.created ='.$m.')
помогите плиз рзобраться, это код из джумловского модуля, вот весь листинг:
PHP:
скопировать код в буфер обмена
class modNewsBoxHelper
{
function getList( & $params )
{
global $mainframe ;
$db =& JFactory:: getDBO ( ) ;
$user =& JFactory:: getUser ( ) ;
$userId = ( int) $user -> get ( 'id' ) ;
$count = ( int) $params -> get ( 'count' , 5) ;
$catid = trim ( $params -> get ( 'catid' ) ) ; $secid = trim ( $params -> get ( 'secid' ) ) ; $show_front = $params -> get ( 'show_front' , 1) ;
$aid = $user -> get ( 'aid' , 0) ;
$contentConfig = & JComponentHelper:: getParams ( 'com_content' ) ;
$access = ! $contentConfig -> get ( 'show_noauth' ) ;
$nullDate = $db -> getNullDate ( ) ;
$now = $date -> toMySQL ( ) ;
$where = 'a.state = 1'
. ' AND ( a.publish_up = ' . $db -> Quote ( $nullDate ) . ' OR a.publish_up <= ' . $db -> Quote ( $now ) . ' )'
. ' AND ( a.publish_down = ' . $db -> Quote ( $nullDate ) . ' OR a.publish_down >= ' . $db -> Quote ( $now ) . ' )'
. ' AND DAYOFYEAR(a.created = ' . $d . ') AND MONTH( a.created =' . $m . ')'
/*
. 'AND ( a.created = '.date(Y.'-'.m.'-'.d.' '.H.':'.i.':'.s).')'
*/
;
// User Filter
switch ( $params -> get ( 'user_id' ) )
{
case 'by_me' :
$where .= ' AND (created_by = ' . ( int) $userId . ' OR modified_by = ' . ( int) $userId . ')' ;
break ;
case 'not_me' :
$where .= ' AND (created_by <> ' . ( int) $userId . ' AND modified_by <> ' . ( int) $userId . ')' ;
break ;
}
// Ordering
switch ( $params -> get ( 'ordering' ) )
{
case 'm_dsc' :
$ordering = 'a.modified DESC, a.created DESC' ;
break ;
case 'c_dsc' :
default :
$ordering = 'a.created DESC' ;
break ;
}
if ( $catid )
{
JArrayHelper:: toInteger ( $ids ) ;
$catCondition = ' AND (cc.id=' . implode ( ' OR cc.id=' , $ids ) . ')' ; }
if ( $secid )
{
JArrayHelper:: toInteger ( $ids ) ;
$secCondition = ' AND (s.id=' . implode ( ' OR s.id=' , $ids ) . ')' ; }
// Content Items only
$query = 'SELECT a.*, ' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,' .
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug' .
' FROM #__content AS a' .
( $show_front == '0' ? ' LEFT JOIN #__content_frontpage AS f ON f.content_id = a.id' : '' ) .
' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
' INNER JOIN #__sections AS s ON s.id = a.sectionid' .
' WHERE ' . $where . ' AND s.id > 0' .
( $access ? ' AND a.access <= ' . ( int) $aid . ' AND cc.access <= ' . ( int) $aid . ' AND s.access <= ' . ( int) $aid : '' ) .
( $catid ? $catCondition : '' ) .
( $secid ? $secCondition : '' ) .
( $show_front == '0' ? ' AND f.content_id IS NULL ' : '' ) .
' AND s.published = 1' .
' AND cc.published = 1' .
' ORDER BY ' . $ordering ;
$db -> setQuery ( $query , 0, $count ) ;
$rows = $db -> loadObjectList ( ) ;
$i = 0 ;
foreach ( $rows as $row )
{
if ( $row -> access <= $aid )
{
$lists [ $i ] -> link = JRoute:: _( ContentHelperRoute:: getArticleRoute ( $row -> slug , $row -> catslug , $row -> sectionid ) ) ;
} else {
$lists [ $i ] -> link = JRoute:: _( 'index.php?option=com_user&view=login' ) ;
}
$lists [ $i ] -> text = preg_replace ( '/{([a-zA-Z0-9\-_]*)\s*(.*?)}/i' , '' , $row -> introtext ) ;
$lists [ $i ] -> text = str_replace ( ' ' , '' , $lists [ $i ] -> text ) ;
$lists [ $i ] -> created = JHTML:: _( 'date' , $row -> created ) ;
$i ++;
}
return $lists ;
}
}
(Добавление)
32 строка
(Добавление)
без этой строчки выводит последнюю запись
(Добавление)
Люди помогите пож.
hanns-g
Отправлено: 27 Сентября, 2011 - 01:42:50 • Тема: Подскажите, пож., как сделать выборку mySQL: • Форум: Работа с СУБД
Ответов: 6 Просмотров: 2369
Добрый вечер.
В БД есть столбцы с записями и столбец с датой добавления
формат даты:
ГГГГ-ММ-ДД ЧЧ:ММ:СС
мне надо отобрать только те записи, которие соответствуют сегодняшнему дню,
при этом чтобы не учитывался год и время создания
то есть, отобрать только по числу и месяцу: ММ-ДД
'WHERE ( a.created = '. date(*.'-'.m.'-'.d.' '.*.':'.*.':'.*) .')';
* - не учитываются
можно как то это организовать ?
извените, если это глупый вопрос, но у меня действительно не получается,
уже два дня мучаюсь
hanns-g
Отправлено: 24 Марта, 2011 - 13:15:27 • Тема: Простой запрос к БД • Форум: Программирование на PHP
Ответов: 5 Просмотров: 473
я честно говоря в php и Mysql не селен, так поверхностно
сделал так:
$db =& JFactory::getDBO();
$userid = $name->userid;
$mavatars = mysql_query("SELECT image FROM s_k2_users WHERE userID='$userid'");
echo "ERROR ".mysql_errno()." ".mysql_error()."\n";
echo $mavatars;
по поводу $name->userid; - тут просто модуль выводит листинг пользователей
вот я и пыаюсь добавить в этот листингт аватар с другой таблицы по userid
hanns-g
Отправлено: 24 Марта, 2011 - 11:36:15 • Тема: Простой запрос к БД • Форум: Программирование на PHP
Ответов: 5 Просмотров: 473
кратко:
система joomla, компонент К2
пытаюсь к модулю "пользователи онлайн" добавить аватар пользователя К2
есть таблица пользователей К2
есть колонка с ID пользователя и колонка с именем картинки(аватара)
вот что я пытался сделать:
PHP:
скопировать код в буфер обмена
<a href="index.php?option=com_k2&view=itemlist&task=user&id=<?PHP echo $name -> userid ; ?> ">
<img src="media/k2/users/<?PHP
$db =& JFactory:: getDBO ( ) ;
$userid = $name -> userid ;
$mavatars = null ;
$mavatars = mysql_query ( "SELECT * FROM s_k2_users WHERE userID='$userid '" ) ;
//$query = 'SELECT * FROM #__k2_users WHERE userID="$userid"';
//$db->setQuery($query);
//$mavatars = $db->loadObjectList();
foreach ( $mavatars as $mavatar ) {
echo $mavatar -> image ;
}
//$userObject->items = null;
?> " alt="<?PHP echo $name -> username ; ?> ">
</a>
в поле имени картинки - текстовое с именем файла, чтото типа: "imegename.jpg"
кака я его только не крутил уже - или пусто, или ошибка
подскажите плиз
Страниц (3): [1] 2 3 »
Powered by ExBB FM 1.0 RC1. InvisionExBB