Jump to content
  • 0

Вывод инфы. из БД при помощи PHP


Buzi-Vuzi
 Share

Question

Здравствуйте Уважаемые форумчани!!!

Столкнулся с проблемой при переносе сайта с joomle на DLE.

По скольку на данный момент работаю на локалке с демо версией DLE, все попытки о помощи на официальном форуме будут нулевыми.

И вот собственно в чем вопрос:

Как осуществить вывод новых комментариев ко всем новостям пользователя с помощью php на странице профиля (userinfo). Знаю что это возможно по скольку на данный момент сайт стоит на joomle и там такой метод вывода работает.

Сам вывод комментов в таб. с базы получался по принципу:

<?php

include 'data/dbconfig.php';

// Константы для подключения к СУБД
define("HOST","DBHOST");
define("USER","DBUSER");
define("PASS","DBPASS");
define("DB","DBNAME");

// Подключение к СУБД
$link = mysql_connect(DBHOST,DBUSER,DBPASS) or die (mysql_error());

// Выбираем базу данных
mysql_select_db(DBNAME, $link);

// Формируем строку для запроса к нашей базе данных
// Не забывайте обрамлять имена таблиц и полей обратными кавычками `TABLE`
$sql = "SELECT * FROM `dle_comments`";

// Скармливаем наш запрос MySQL
$result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);

/* Обратите внимание на конструкцию
or die(mysql_error() ."<br/>". $sql) она Вам поможет в случае ошибки
в Вашем SQL запросле или отсутствия соединения с Mysql

Выводим данные из таблицы в цикле WHILE(), не вкоем случае не используйте
DO WHILE() эта конструкция предназначена совсем для других действий
*/

// Рисуем табличку
$table = "<table border=0 width=100% align=center>\n";

while ($row = mysql_fetch_assoc($result))
{

$table .= "<tr>\n";

$table .= "<td>".$row['autor']."</td>\n";
$table .= "<td>".$row['text']."</td>\n";
$table .= "<td>".$row['date']."</td>\n";

$table .= "</tr>\n";
}

$table .= "</table>\n";

// Выводим заполненую таблицу на экран
echo $table;

?>

Но при этом выводятся все комменты на любых страницах любого юзера.

По скольку знаний в PHP особо никаких, по этому пришлось обратится за помощь сюда.

Буду благодарен за помощь.

Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

Нужно как минимум дамп таблиц видеть прежде чем что-то делать. Иначе философия получится. И что хочет Buzi-Vuzi делается в три строчки одним запросом.. И судя по тому что нет реакций, то не очень то и хочется получить ответ :)

Link to comment
Share on other sites

  • 0

Благодарен за инфо. Буду разбираться! По завершения поделюсь собственным решением, если знаний хватит :-).

а покажи таблицу где хранятся пользователи. и заодно таблицу комментарием.. Покажешь дамп - покажу запрос ;)

Gold Dragon Вот ссылки на сами дампы. Все поля 'id, user_name и т.д' в первой строке. Просто с моим знанием PHP я долго буду колупаться в этом. )

_http://secrets-cs.com/dle_comments.csv

_http://secrets-cs.com/dle_users.csv

Edited by Buzi-Vuzi
Link to comment
Share on other sites

  • 0

ты чем дамп делал? есть возможность сделать в нормальном формате SQL ? :)

И смотрю по структуре.. ужас... структуру нужно однозначно менять

вот например такой запрос

$sql = "SELECT `q1`.`date` AS `date`, `q1`.`text` AS `text`, `q2`.`name` AS `autor`
FROM `dle_comments` AS `q1`
LEFT JOIN `dle_users` AS `q2` ON `q1`.`user_id` = `q2`.`user_id`
WHERE `q1`.`user_id` = " . $id;

где $id - это идентификатор пользователя

Link to comment
Share on other sites

  • 0

ты чем дамп делал? есть возможность сделать в нормальном формате SQL ? :)

И смотрю по структуре.. ужас... структуру нужно однозначно менять

вот например такой запрос

$sql = "SELECT `q1`.`date` AS `date`, `q1`.`text` AS `text`, `q2`.`name` AS `autor`
FROM `dle_comments` AS `q1`
LEFT JOIN `dle_users` AS `q2` ON `q1`.`user_id` = `q2`.`user_id`
WHERE `q1`.`user_id` = " . $id;

где $id - это идентификатор пользователя

DLE-шная )) стандартная :-)

сделал _http://secrets-cs.com/dle_users.sql

_http://secrets-cs.com/dle_comments.sql

Все делаю на denwerE

Edited by Buzi-Vuzi
Link to comment
Share on other sites

  • 0

так не бывает.. Я загнал твои дампы у себя на локалку и всё прокатило

$sql = "SELECT q1.date, q1.text, q2.name
FROM dle_comments AS q1
LEFT JOIN dle_users AS q2 ON q1.user_id = q2.user_id
WHERE q1.user_id = 1";

выдаст все комментарии у который автор admin (id=1)

Тебе нужно просто менять в запросе идентификатор пользователя, т.е. здесь

q1.user_id = 1

Edited by Gold Dragon
Link to comment
Share on other sites

  • 0

так не бывает.. Я загнал твои дампы у себя на локалку и всё прокатило

$sql = "SELECT q1.date, q1.text, q2.name
FROM dle_comments AS q1
LEFT JOIN dle_users AS q2 ON q1.user_id = q2.user_id
WHERE q1.user_id = 1";

выдаст все комментарии у который автор admin (id=1)

Тебе нужно просто менять в запросе идентификатор пользователя, т.е. здесь

q1.user_id = 1

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

$query = "SELECT * FROM dle_comments";

Link to comment
Share on other sites

  • 0

вообще-то я проверяю все запросы в phpMyAdmin :) и если работает, то уже в код запихиваю. И тебе так советую делать

И смотри что я получаю, а что ты используешь. Я беру имя из таблицы пользователей, а у тебя по коду берётся автор из таблицы комментариев. Значит просто нужно поменять q2.name на q1.autor

ps

я не пользуюсь уже давно чистыми функциями для работы с базой.. Я использую разные классы для работы

Link to comment
Share on other sites

  • 0

вообще-то я проверяю все запросы в phpMyAdmin :) и если работает, то уже в код запихиваю. И тебе так советую делать

И смотри что я получаю, а что ты используешь. Я беру имя из таблицы пользователей, а у тебя по коду берётся автор из таблицы комментариев. Значит просто нужно поменять q2.name на q1.autor

ps

я не пользуюсь уже давно чистыми функциями для работы с базой.. Я использую разные классы для работы

Делаю как ты и говориш, иду в phpMyAdmin открываю базу- SQL туда запрос ты прав все фунциклирует )) как мудро сделать?

Теперь как я понимаю можно также как LEFT JOIN dle_users добавить и LEFT JOIN dle_post? для вывода новости на которую ссылается коммент. и в конце добавить сам вид вывода html иди <table>. правильно ))

Edited by Buzi-Vuzi
Link to comment
Share on other sites

  • 0

ну поменяй запрос в коде с последними правками и посмотри. должно работать... Только у тебя не понятно откуда берётся идентификатор пользователя

используй грамотно запросу и всякие JOIN ... чем больше, тем сильнее нагрузка на базу.. Т.е. нужно много параметров смотреть и проверять.. За одно посмотреть как сами таблицы индексированы...

Link to comment
Share on other sites

  • 0

ну поменяй запрос в коде с последними правками и посмотри. должно работать... Только у тебя не понятно откуда берётся идентификатор пользователя

Как я понимаю то DLE выводит инфу юзера когда идет просмотр его страницы по такому if ($member_id['user_id']

или вот

$row = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users WHERE user_id = '{$id}'" );

Edited by Buzi-Vuzi
Link to comment
Share on other sites

  • 0

в общем запрос работает, значит тема закрыта :rofl:

я не помню как это устроено в DLE.. в Джустине да и Джумле это в глобальной переменной $my->id

Edited by Gold Dragon
Link to comment
Share on other sites

  • 0

в общем запрос работает, значит тема закрыта :rofl:

я не помню как это устроено в DLE.. в Джустине да и Джумле это в глобальной переменной $my->id

Ок! благодарю, если нужна будет помощь по графике, помогу!!! Я по фотошопу выступаю ))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy