powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вопросы по созданию своей CMS
25 сообщений из 57, страница 1 из 3
Вопросы по созданию своей CMS
    #39190805
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, решил освоить php на примере создания своей cms.
Как правильно следить за количеством сообщений пользователя?
1. Сохранять значение в БД и делать +1/-1 при создании, удалении сообщений?
2. При каждом вызове подсчитывать кол-во выборкой?

POWERED BY LOGIC AND REASON
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39190946
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотреть, как это сделано в других CMS/форумах?

В самом простом случае, если исключить из рассмотрения всякие кеширования и оптимизации, то по вашему пункту №1.
Плюс предусмотреть специальную кнопку в админке для синхронизации, чтобы можно было насильно пересчитать посты.
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39192392
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю модуль редактирования данных о пользователе.
У пользователя есть выбор фирмы, к которой он относится.
Раскрывающийся список выводится, но не пойму как автоматически сделать выбранным то поле, которое записано в базе?

таблица firms (firm_id, firm_active,...)
таблица users (uid, username, user_firm...)

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
$query = "SELECT * FROM firms WHERE firm_active='1' GROUP BY firm_name ORDER BY firm_name";
	$result = mysql_query($query) or die(mysql_error());
 
	print '<td><p>Предприятие: 
<SELECT name="user_firm" >';
	while ($row2 = mysql_fetch_array($result)) { print '<option value="'.$row2[user_firm].'">'.$row2[firm_name].'</option>'; }
	mysql_free_result($result);
	print ('</p></select></td>');
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39192438
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://htmlbook.ru/html/option/selected

атрибут option

Можно поворчать? Чтобы кмс была не слишком страшная, лучше поизучать принципы, заложенные в промышленных решениях, например

http://symfony-gu.ru/documentation/ru/html/book/from_flat_php_to_symfony2.html

без принципов - очень плохо. я пробовал, без слез на написанное не взгляну. стыдно.
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39192471
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakov,

спасибо.

сделал так:

Код: php
1.
2.
3.
4.
5.
if($row["user_firm"] == $row2["firm_id"]) {
	print '<option value="'.$row2[firm_id].'" selected >'.$row2[firm_name].'</option>'; }
	else{	
	print '<option value="'.$row2[firm_id].'">'.$row2[firm_name].'</option>'; }
	} 




Vladimir BaskakovЧтобы кмс была не слишком страшная, лучше поизучать принципы, заложенные в промышленных решенияхСпасибо за ссылку. У меня случай крайне тяжелый - постигаю азы самого PHP.
Синтаксис конечно жуть...
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39192492
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю чуть иначе. Список опций формирую без установки "selected". А нужную опцию выставляю яваскриптом.
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39192496
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
//можно короче
$selected = $row["user_firm"] == $row2["firm_id"] ? ' selected' : '';
echo '<option value="'.$row2[firm_id].'"'.$selected.'>'.$row2[firm_name].'</option>'; 
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39192560
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex721 У меня случай крайне тяжелый - постигаю азы самого PHP.
Синтаксис конечно жуть...

Друг сказал мне - "Учи питон. И руби". Он умный. а синтаксис - если! концептуально верно писать - так нормальный. Логика отдельно, представление отдельно. ООП в каком-то объеме. ничего страшного, если не смешивать логику и представление, т.е. сразу взять шаблонизатор - Smarty или Twig.

(Джаваскрипт, он тоже красив. Очень. Если смотреть как пишет Крокфорд, например).

Всего хорошего.
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193476
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чото туплю.
Как сделать тройной запрос?
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193482
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex721,

почему тройной? какая структура таблиц? В другой теме вроде было это, не?
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193483
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробую так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
$qr_result = mysql_query("SELECT p.*, f.firm_name FROM projects p LEFT JOIN firms f ON f.firm_id = p.pr_firm WHERE p.pr_active = '1' LIMIT $start,$project_per_page") or die(mysql_error());
    echo '<table class="cool">';
	echo '<thead>';
	echo '<tr>';
	echo '<th>#</th>';
	echo '<th>Название проекта</th>';
	echo '<th>Предприятие заказчик</th>';
	echo '<th>Ответственный</th>';
	
	echo '<th></th><th></th>';
	echo '</tr>';
	echo '</thead>';
	echo '<tbody>';
	
	$i=1;
	while($data = mysql_fetch_array($qr_result)){ 

	$num=$start+$i;
	$i++;
	
//Дополнительный запрос
        $query2 = "SELECT * FROM users WHERE user_active='1' AND uid=".$data['pr_lid'];
	$result = mysql_query($query2) or die(mysql_error());
	mysql_free_result($result); 
	
		echo '<tr>';
		echo '<td>'. $num.'</td>';
		echo '<td><a href="/modules/projects/project.php?id=' .$data['pr_id']. '">'. $data['pr_name'] . '</a></td>';
		echo '<td><a href="/modules/firms/firm.php?id=' .$data['pr_firm']. '">' . $data['firm_name'] . '</a></td>';
		echo '<td><a href="/modules/users/user.php?id='.$data['pr_lid']. '">q'.$result['username']. '</a></td>';
echo "<pre>";
var_dump($result);
echo "</pre>";


В дампе это:
авторresource(16) of type (Unknown)
resource(17) of type (Unknown)
resource(18) of type (Unknown)
resource(19) of type (Unknown)
resource(20) of type (Unknown)
resource(21) of type (Unknown)
resource(22) of type (Unknown)
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193490
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
структура таблиц:
Код: php
1.
2.
3.
projects (pr_id, pr_active, pr_firm(1), pr_user(2))
firms (firm_id(1), firm_name)
users (uid(2), username)
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193495
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такой вариант тоже не работает

Код: php
1.
"SELECT p.*,u.username, f.firm_name FROM projects p LEFT JOIN firms f LEFT JOIN users u ON f.firm_id = p.pr_firm AND u.uid = p.pr_lid WHERE p.pr_active = '1' LIMIT $start,$project_per_page"
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193498
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заработало.

Код: php
1.
$qr_result = mysql_query("SELECT p.*,u.username, f.firm_name FROM projects p LEFT JOIN firms f ON f.firm_id = p.pr_firm LEFT JOIN users u ON u.uid = p.pr_lid WHERE p.pr_active = '1' LIMIT $start,$project_per_page") or die(mysql_error());
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193500
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. не делать запросы в цикле
2. добавить join users в первый запрос
3. использовать mysqli_ вместо mysql_, т.к. второе устарело
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193511
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чем меньше всего написано, тем проще перестроиться на модель-представление-контроллер. Чем больше всего будет написано, тем больше будет путаницы. Возможно, более опытные коллеги помогут с простыми и понятными источниками по хорошему стилю и архитектуре php - проектов

автор. не делать запросы в цикле

а если уж делать - то подготовленные

http://php.net/manual/ru/pdo.prepare.php
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193818
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за общение.
Был бы благодарен за простые примеры правильного проектирования бд, конструктора и т.п.
Разбирать с нуля готовую профессиональную цмс могут только профи.
Что же делать тем, кто занимается РНР пару недель...
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193886
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не надо разбирать с нуля. Надо взять how to от серьезного проекта и вбить туда ====привет пхп======. И постепенно впиливать туда кусочки.

в приведенном коде - как минимум - изолировать запросы к базе от слоя представления - каждой таблице сопоставить класс. Набор строк из таблицы станет массивом экземпляров класса. Слой общения с базой должен по запросу формировать такие коллекции, а презентационный слой - их показывать.

Презентационный слой сделать на шаблонизаторе. (Смарти, твигю.....) И многое облагородится.

Если что - я не пхп-ист, могу пороть чушь.....
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193913
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.... а какая цель обучения, ближайшие и перспективные задачи? от разных целей и план изучения неодинаковый.
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193985
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача - хочу сделать CRM.
Цель - это как минимум облегчит мою работу (коммерция).
возможно, я сменю профиль работы.
Раньше я писал на Делфи, работал на скада системах, с ПЛК.
С Вебом занимался давно, но не больше html и легкого php.
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39193988
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать совсем новую crm? С нуля? Или немного допилить готовую. И почему именно на php. Так или иначе - как китайцы научились делать машины? Привезли готовую, разобрали-собрали. Пересчитали лишнее. Поехало?
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39194034
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объясните мне логику синтаксиса.
В интернете полно только базовой информации - с одним элементом конструкции.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Таблицы:
projects (pr_id, pr_active, pr_firm(1), pr_user(2), pr_author(2))
firms (firm_id(1), firm_name)
users (uid(2), username)
--------

SELECT p.*,u.username, f.firm_name 
	FROM projects p 
		LEFT JOIN firms f ON f.firm_id = p.pr_firm
		LEFT JOIN users u ON u.uid = p.pr_user
	WHERE p.pr_active = '1' LIMIT $start,$project_per_page"


Задача запроса: из таблицы PROJECTS выбрать список проектов, с активным статусом = "1", выбрать id фирмы, id автора проекта и id ответственного пользователя (pr_user). И из таблиц FIRMS и USERS по ID подставить имена пользователей и название фирмы.
В запросе выше все работает, кроме подстановки второго пользователя.

Мне нужно в выделенную строку добавить что-то типа этого AND f.firm_id = p.pr_author
Чтобы я мог получить из uid имя автора проекта (pr_author) и имя пользователя проекта (pr_user)
Не пойму как синтаксис этого должен выглядеть.

Повторюсь, в интернете подобных множественных условий я не нашел...
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39194037
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так не работает...
Код: php
1.
2.
3.
4.
5.
6.
SELECT p.*,u.username, f.firm_name 
	FROM projects p 
		LEFT JOIN firms f ON f.firm_id = p.pr_firm
		LEFT JOIN users u ON u.uid = p.pr_user
		LEFT JOIN users u ON u.uid = p.pr_author
	WHERE p.pr_active = '1' LIMIT $start,$project_per_page"
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39194044
Фотография Alex721
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir BaskakovСделать совсем новую crm? С нуля? Или немного допилить готовуюЯ с PHP вообще не знаком. С БД тоже имею дело почти впервые.
Чтобы ковырять готовую систему я считаю нужно подтянуть знание самого языка.

Столкнулся с большими сложностями с пониманием синтаксиса PHP.
Ну читать книжки это не наш метод, когда есть форум друзей :)
...
Рейтинг: 0 / 0
Вопросы по созданию своей CMS
    #39194063
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я б на вашем месте все таки почитал, хотя бы это
у таблиц должны быть разные алиасы
select u1.name AS u1_name, u2.name AS u2_name ..JOIN users u1... JOIN users u2
и если pr_firm(1), pr_user(2), pr_author(2) обязательные, то inner join, а не left
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 1 из 3
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вопросы по созданию своей CMS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]