Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » php, mysql: вопросы по оптимизации

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
ну я думал сделать проверку примерно так...
 

Код:
if(в $user содержится "19|") {....}

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 02:58 30-12-2013 | Исправлено: Sutar, 02:59 30-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
www.php.net/strpos
но можно искать сразу в базе - указал выше как.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:59 30-12-2013 | Исправлено: Cheery, 03:02 30-12-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Спасибо, я просто забыл как функция называется)

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 03:02 30-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
быстрее будет искать сразу в базе
 

Цитата:
if(в $user содержится "19|")

не пойдет, так как попадут и 119, 219 и так далее..
только |19|

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:31 30-12-2013
CodeKeeper

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я не знаю что тут можно обсуждать две страницы, но все решается с перевязанной таблицей, со столбцами theme_id, user_id, is_read; Все.
 
При заходе пользователя, выбираются все темы по user_id и is_read. При клике на ссылку обнуляем is_read, для пользователя в данной теме. При добавлении сообщения в тему, обновляем is_read для всех theme_id.

Всего записей: 24 | Зарегистр. 28-12-2013 | Отправлено: 09:17 30-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CodeKeeper
ну это один из вариантов.. вопрос только в том, сколько всего будет тем и юзверей и как это повлияет на скорость запроса.
 
правда я забыл спросить автора темы о том, по чему ему нужно делать выборку - по теме или по id пользователя. если потребуется по пользователю, то первый вариант, конечно, плохой.
 
а насчет двух страниц - вы просто пока не знаете местной специфики.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 09:30 30-12-2013
CodeKeeper

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну какая будет скорость запроса к перевязанной таблице где хранятся только id'шники?
 
Нет ну если автор хочет хранить в базе пары ключ-значение, то это уже совершенно другой подход.
 
 

Всего записей: 24 | Зарегистр. 28-12-2013 | Отправлено: 09:52 30-12-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
правда я забыл спросить автора темы о том, по чему ему нужно делать выборку - по теме или по id пользователя. если потребуется по пользователю, то первый вариант, конечно, плохой.  

Ну по сути будет проверка в виде "select .... WHERE id_форум = 'id_который мы просматриваем или выводим сейчас на страницу (вдруг это список всех тем)' и id_пользователя = id'"
ну примерно так...
 
т.е. по идее яж проверяю пользователя к определённой теме, правильно?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 13:50 30-12-2013
CodeKeeper

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Давай внесем немного ясности.
 
Форум на движке построен или самописный?

Всего записей: 24 | Зарегистр. 28-12-2013 | Отправлено: 14:26 30-12-2013 | Исправлено: CodeKeeper, 14:26 30-12-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CodeKeeper
Естественно самопис. Если движок былбы, я думаю там бы была такая функция)

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:24 30-12-2013 | Исправлено: Sutar, 21:02 31-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
т.е. по идее яж проверяю пользователя к определённой теме, правильно?

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

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:38 30-12-2013
CodeKeeper

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Естественно самопис. Если движок булбы, я думаю там бы была такая функция)

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

Всего записей: 24 | Зарегистр. 28-12-2013 | Отправлено: 01:43 31-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CodeKeeper
я же говорю - вы пока не знаете специфики )
 

Цитата:
такое булба

был бы, очевидно..
 

Цитата:
Посмотри как реализовано в движке и не парь мозг. У тебя что кастомный проект или для себя велосипед изобретаешь

ТС, как заметно, не очень хорошо владеет данными средствами программирования.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:59 31-12-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
ТС, как заметно, не очень хорошо владеет данными средствами программирования.

Владею довольно не из худших, просто совет спрашиваю)
 
CodeKeeper

Цитата:
Посмотри как реализовано в движке и не парь мозг.

я думал над этим, но сидеть и разбирать чужие работы, ну както не очень... а если ещё и движок...

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:05 31-12-2013
CodeKeeper

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
я думал над этим, но сидеть и разбирать чужие работы, ну както не очень... а если ещё и движок...

 
Во первых хороший движок !== индусский код.
 
Во вторых, а как ты думаешь веб разработчики работают?!
 
ТС, не изобретай велосипед.

Всего записей: 24 | Зарегистр. 28-12-2013 | Отправлено: 21:29 31-12-2013
LordMicro



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
По поводу последних прочтённых сообщений лучше по другому поступать...
 
Самый лучший способ - экономично по объёму данных и не требует лишних телодвижений с новой таблицей при добавлении постов.
 
Таблица с полями: topic_id, user_id, last_read (дата последнего прочтения), last_count (последнее кол-во постов в топике)
 
По умолчанию записи в таблице нет. То есть отсутствие записи значит что тема этим юзером не прочитана. Кнопку "прочитать всё" можно сделать обновлением last_read до текущего времени и last_count до текущего кол-ва.
 
Работать с ней просто - когда пользователь нажимает кнопку "показать непрочитанные", то ты записываешь в last_read время последнего показанного сообщения (нужно, если в теме для человека новых сообщений больше одной страницы) и к last_count прибавляешь кол-во показанных новых сообщений.
 
Last_count нужно для того, чтобы быстро подсчитывать кол-во непрочитанных сообщений (нужно ввести поле post_count в таблице topics).
 
Можно сделать ещё более экономичную систему. Можно ввести такую же таблицу для уровня выше: forum_id, user_id, last_read, last_count.
 
В общем всё просто. Только надо помнить, что удаление данных в таблице не приводит к уменьшению занимаемого ею места.

Всего записей: 141 | Зарегистр. 17-02-2006 | Отправлено: 18:53 15-01-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LordMicro
Спасибо)

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:05 17-01-2014
entelexiya77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята подскажите что неправильного в этой строке?

Код:
 
$qr_result = mysql_query('SELECT * FROM  ostatok WHERE Kontragent =' .$Kontragent);
$qr_result = mysql_query('SELECT * FROM  aent_ostatok WHERE Kontragent' =.$Kontragent);
 

И вместо одинарных кавычек ставил двойные но не работает.

Всего записей: 73 | Зарегистр. 20-05-2012 | Отправлено: 20:24 20-01-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
entelexiya77
 

Цитата:
$qr_result = mysql_query('SELECT * FROM  ostatok WHERE Kontragent = "' . mysql_real_escape_string($Kontragent) . '"');



----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:53 20-01-2014
entelexiya77



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Cheery

Я извиняюсь конечно.
Мне кажеться, что я только с вами общаюсь
 
У меня еще вопрос
Код не работает, не выводит данные из таблицы, как переделать его?

Код:
 
$Kontragent = $_POST['Name'];
      $qr_result = mysql_query('SELECT * FROM  aent_ostatok WHERE Kontragent = "' . mysql_real_escape_string($Kontragent) . '"');  
        //if(!$qr_result) {
 //{ echo( '<center><p><b>По '.$Kontragent.' данных не найдено.</b></p></center>');
 //exit();  }
 
          //or die(mysql_error());
      
        // выводим на страницу сайта заголовки HTML-таблицы
        echo '<table border="1">';
       echo '<thead>';
       echo '<tr>';
       echo '<th>Имя</th>';
       echo '<th>Телефон</th>';
       echo '<th>E-Mail</th>';
       echo '</tr>';
       echo '</thead>';
       echo '<tbody>';
        
       // выводим в HTML-таблицу все данные клиентов из таблицы MySQL
       while($row = mysql_fetch_assoc($qr_result)){  // ставил даже mysql_fetch_array($qr_result)  
          echo '<tr>';
          echo '<td>' . $row['Name'] . '</td>';
          echo '<td>' .$row['Kontragent']. '</td>';
          echo '<td>' .$row['Dogovor']. '</td>';
          echo '</tr>';
       }
        
        echo '</tbody>';
       echo '</table>';
      
        // закрываем соединение с сервером  базы данных
        mysql_close($connect_to_db);
 

Всего записей: 73 | Зарегистр. 20-05-2012 | Отправлено: 09:40 21-01-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Интернет » Web-программирование » php, mysql: вопросы по оптимизации


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru