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 :: Версия для печати :: Вывод и сортировка записей в HTML
Форумы портала PHP.SU » » Работа с СУБД » Вывод и сортировка записей в HTML

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

1. Korsand - 28 Февраля, 2013 - 13:07:12 - перейти к сообщению
Всем привет.
Подскажите, возможно ли такое сделать? Если возможно, то как?
А именно - выборку из базы и вывод в 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. }

Заранее благодарен!
2. re_nat - 28 Февраля, 2013 - 13:43:27 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `receive_001` WHERE `id`=$id AND `secondID`=$secondID

так, может, проще будет?
3. Korsand - 28 Февраля, 2013 - 14:17:22 - перейти к сообщению
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.  
4. Object - 28 Февраля, 2013 - 15:20:55 - перейти к сообщению
Если немного подумать о нормализации БД, то по хорошему у Вас должна быть таблица с пользователями, которым эти сообщения приходят, соответсвенно $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 некуда прицепить. Подправил запрос.
5. Korsand - 28 Февраля, 2013 - 20:16:53 - перейти к сообщению
Object, спасибо, работает!
Правда "$komu", должен содержать только цифры, с буквами (латинскими) не хочет дружить. Но для меня это и не важно, т.к., мне нужны только цифры.


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


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

 

Powered by ExBB FM 1.0 RC1