Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: вывод части строки из таблицы mysql в php
Форумы портала PHP.SU » » Работа с СУБД » вывод части строки из таблицы mysql в php

Страниц (1): [1]
 

1. ArhiPS - 10 Марта, 2015 - 08:56:32 - перейти к сообщению
добрый день. подскажите куда копать.
есть скрипт, который ищет в базе данных строки, заканчивающиеся на "Authenticated"
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $sdd_db_host='localhost';
  3. $sdd_db_name='base';
  4. $sdd_db_user='user';
  5. $sdd_db_pass='password';
  6.  
  7. @mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);
  8. @mysql_select_db($sdd_db_name);
  9.  
  10. $result=mysql_query('SELECT * FROM `table` WHERE `msg` LIKE "%Authenticated" ORDER BY msgtime DESC');
  11.  
  12. // берем результаты из каждой строки
  13. while($row=mysql_fetch_array($result))
  14.  
  15. { // выводим данные
  16. echo '<p> '.$row['msgtime'].' ... '.$row['msg'].'</p>';
  17. }// /while
  18. ?>


результат выводит в виде:
2015-03-07 01:26:10 ... <User2(1)> Authenticated
2015-03-05 16:15:46 ... <User1(2)> Authenticated
2015-03-03 20:30:54 ... <User1(1)> Authenticated

Подскажите, как убрать из вывода ненужный текст, в данном случае "Authenticated"
2. exlant - 10 Марта, 2015 - 13:58:21 - перейти к сообщению
ну как один из вариантов:
PHP:
скопировать код в буфер обмена
  1.  
  2. while($row=mysql_fetch_assoc($result))
  3.  
  4. { // выводим данные
  5. $row['msg'] = str_replace('Authenticated','',$row['msg']);
  6. echo '<p> '.$row['msgtime'].' ... '.$row['msg'].'</p>';
  7. }
  8.  


А для чего искать Authenticated, что бы его потом не выводить?
может лучше сделать другую логику:
создать в бд еще одно поле Authenticated, задать ему значения: 0 - выводится msg, 1 - не выводится msg
а с полей msg поубирать подстроку Authenticated!

запрос к базе

PHP:
скопировать код в буфер обмена
  1. $result=mysql_query('SELECT * FROM `table` WHERE `Authenticated` = 1 ORDER BY msgtime DESC');
3. ArhiPS - 10 Марта, 2015 - 14:06:37 - перейти к сообщению
exlant пишет:
А для чего искать Authenticated, что бы его потом не выводить?

Эта таблица является логом, содержащим кучу записей, мне нужны только те строки, которые заканчиваются на Authenticated, в данном случае они обозначают кто и когда подключился.
А убрать Authenticated хочу для того, чтобы на сайте скрипт выводил только время и логин подключившегося...

(Добавление)
exlant пишет:
ну как один из вариантов:
PHP:
скопировать код в буфер обмена

while($row=mysql_fetch_assoc($result))

{ // выводим данные
$row['msg'] = str_replace('Authenticated','',$row['msg']);
echo '<p> '.$row['msgtime'].' ... '.$row['msg'].'</p>';
}



Белый экран Недовольство, огорчение
4. exlant - 10 Марта, 2015 - 14:41:54 - перейти к сообщению
а вот так?
PHP:
скопировать код в буфер обмена
  1. $text = explode('Authenticated',$row['msg']);
  2. $row['msg'] = $text[0];
5. ArhiPS - 10 Марта, 2015 - 15:03:47 - перейти к сообщению
Получилось убрать Authenticated
Спасибо.

Правда я хотел немного другой принцип, например как substring_index, чтобы была возможность убрать текст до определенного символа ":", и после "(" включая эти символы

выделено жирным цветом
<1:User1(1)> Authenticated

цифры выделенные жирным цветом могут быть разными
6. exlant - 10 Марта, 2015 - 15:09:16 - перейти к сообщению
так надо было сразу это описать...
в таком случаи уместнее регулярку было использовать
7. ArhiPS - 10 Марта, 2015 - 15:13:59 - перейти к сообщению
exlant пишет:
так надо было сразу это описать...
в таком случаи уместнее регулярку было использовать


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

 

Powered by ExBB FM 1.0 RC1