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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод и сортировка записей в HTML

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Вывод и сортировка записей в HTML
Korsand
Отправлено: 28 Февраля, 2013 - 13:07:12
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2013  
Откуда: UA Donbass


Помог: 0 раз(а)




Всем привет.
Подскажите, возможно ли такое сделать? Если возможно, то как?
А именно - выборку из базы и вывод в html, сделать не только по id, но и по второму критерию. Попытаюсь изложить свою мыслю:
1 - в базе содержится куча разных сообщений;
2 - все эти сообщения от разных отправителей, но они адресованы всего лишь трём разным получателям;
Можно ли вывеси на страницу последние 10 сообщений, которые адресованы конкретному получателю, а не выводить сообщения для всех получателей? На данный момент, у меня кучей выводятся все сообщения (последние 10), которые адресованы разным получателям.

Если всё же моя фантазия осуществима, то не могли бы конкретно написать, какую строчку на какую поменять (дописать)?

Вот мой код для вбития записей в базу:
PHP:
скопировать код в буфер обмена
  1. if ($_GET) { // Принимаем новые записи
  2.  
  3.     $ot_kogo = $GLOBALS['MySQL']->escape(strip_tags($_GET['ot_kogo']));   // от кого получено
  4.     $komu = $GLOBALS['MySQL']->escape(strip_tags($_GET['komu']));   // кому адресовано
  5.     $message = $GLOBALS['MySQL']->escape(strip_tags($_GET['message']));   // текст сообщения
  6.        
  7.     // Добавляем записи в БД
  8.     $GLOBALS['MySQL']->res("INSERT INTO `receive_001` SET `ot_kogo` = '{$ot_kogo}', `komu` = '{$komu}', `message` = '{$message}', `when` = UNIX_TIMESTAMP()");
  9.  
  10.     echo 1;
  11.     exit;
  12. }
  13. $sRecords = getLastRecords();
  14.  

А этим я вытягиваю инфу из базы на страницу:
PHP:
скопировать код в буфер обмена
  1. // Получаем последние записи из БД
  2. function getLastRecords() {
  3.     $sRecords = '';
  4.         $aRecords = $GLOBALS['MySQL']->getAll("SELECT * FROM `receive_001` ORDER BY `id` DESC LIMIT 10");
  5.     foreach ($aRecords as $i => $aInfo) {
  6.         $aInfo['ot_kogo'] = substr($aInfo['ot_kogo'], 0, strlen($aInfo['ot_kogo'])-4).'XXXХ';
  7.         $kogda_polucheno = date($aInfo['when']);
  8.         $proshlo_vremeni = showDate($kogda_polucheno);
  9.                
  10.         $ttt = $aInfo['text'];
  11.         $ttt = preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a href=\"$3\" >$3</a>", $ttt);               // для http
  12.         $ttt = preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "$1$2<a href=\"http://$3\" >$3</a>", $ttt);                   // для www
  13.         $ttt = preg_replace("/(^|[\n ])([\w]*?)([\w\-]+\.([\w\-\.\/]+)+)/is", "$1$2<a href=\"http://$3\">$3</a>", $ttt);                                // для domen.ua и domen.ua/tut
  14.         $ttt = preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1<a href=\"mailto:$2@$3\">$2@$3</a>", $ttt);    // для емайла
  15.  
  16.         $sRecords .= <<<EOF
  17.         <div class="record" id="{$aInfo['id']}">
  18.         <div id="otpravitel">{$aInfo['ot_kogo']}</div>
  19.         <div id="kogka">{$proshlo_vremeni}</div>
  20.         <div id="pustota"></div>
  21.         <div id="soderganie">{$ttt}</div>
  22.         </div>
  23. EOF;
  24.     }
  25.     return $sRecords;
  26. }

Заранее благодарен!
 
 Top
re_nat
Отправлено: 28 Февраля, 2013 - 13:43:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012  


Помог: 5 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `receive_001` WHERE `id`=$id AND `secondID`=$secondID

так, может, проще будет?

(Отредактировано автором: 28 Февраля, 2013 - 13:43:59)

 
 Top
Korsand
Отправлено: 28 Февраля, 2013 - 14:17:22
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2013  
Откуда: UA Donbass


Помог: 0 раз(а)




re_nat пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `receive_001` WHERE `id`=$id AND `secondID`=$secondID

так, может, проще будет?

Что-то я не пойму как? Если так, то оно не работает.
PHP:
скопировать код в буфер обмена
  1.  
  2. // Получаем последние записи из БД
  3. function getLastRecords() {
  4.    $id = '';
  5.    $komu = 'vova';
  6.    $sRecords = '';
  7.    $aRecords = $GLOBALS['MySQL']->getAll("SELECT * FROM `receive_001` WHERE `id`=$id AND `komu`=$komu DESC LIMIT 10");
  8.    foreach ($aRecords as $i => $aInfo) {........
  9.  

(Отредактировано автором: 28 Февраля, 2013 - 14:21:18)

 
 Top
Object
Отправлено: 28 Февраля, 2013 - 15:20:55
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Авг. 2010  


Помог: 3 раз(а)




Если немного подумать о нормализации БД, то по хорошему у Вас должна быть таблица с пользователями, которым эти сообщения приходят, соответсвенно $komu будет не 'vova', а ID этого Вовы из таблицы юзеров. А вытягиваться будет так:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `receive_001` WHERE `id`=$id ORDER BY `when` DESC LIMIT 10


Если оставить так как есть сейчас то нужно:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `receive_001` WHERE `komu`=$komu ORDER BY `when` DESC LIMIT 10


П.С. Да кстати, нужно еще по какому-то полю их упорядочить, а то DESC некуда прицепить. Подправил запрос.

(Отредактировано автором: 28 Февраля, 2013 - 15:30:43)

 
 Top
Korsand
Отправлено: 28 Февраля, 2013 - 20:16:53
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2013  
Откуда: UA Donbass


Помог: 0 раз(а)




Object, спасибо, работает!
Правда "$komu", должен содержать только цифры, с буквами (латинскими) не хочет дружить. Но для меня это и не важно, т.к., мне нужны только цифры.


UPDATE!
Оказывается, для поддержки букавак нужно писать вот так:
PHP:
скопировать код в буфер обмена
  1. SELECT * FROM `receive_001` WHERE `komu` LIKE 'zzz' ORDER BY `when` DESC LIMIT 10


PS А узнал я случайно. Полез регаться куда-то и чтоб не светить свой реальный емайл, решил воспользоваться временным ящиком, который 1 час живёт. А этот сервис, с временными ящиками, глюканул и выплюнул мне кусок своего кода, в котором это и написано Радость

(Отредактировано автором: 03 Марта, 2013 - 03:47:45)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB