Осваиваю базу данных..
Бьюсь вторую ночь, сломал всю голову, мозги кипят..
$sql = "SELECT u.userid, u.userlogin, u.usernickname, u.visiting as visiting, p.imageurl, p.user_id
FROM cms_goodboy u
LEFT JOIN cms_user_profiles p ON p.user_id = u.userid
ORDER BY visiting
DESC LIMIT ".$cfg['count'];
Правильно ли сделана выборка из базы ?
ЕСТЬ РЕШЕНИЕ
ЗАКРЫТО
Прикрепленный файл
goodboy_e6a2b.jpg
18 Кб
#2
12 октября 2011 в 06:35
простую выборку сделать могу, но мне нужно обьеденение таблиц, вот это у меня не получается, userid, userlogin, usernickname, по большому счету надо выбирать из cms_users, тогда получается что надо еще из третьей таблицы cms_users выбирать эти переменные, а я тупо из второй не могу выбрать. либо синтаксис у меня страдает, либо я чего то не допонимаю.
Прошу помощи…
Прошу помощи…
#3
12 октября 2011 в 08:11
так суть проблемы то в чем? что не работает?
Сегодня в 05:16
#4
12 октября 2011 в 09:30
Уважаемый Fuze, конечно все работает! Мне просто по приколу отнимать свое и Ваше время, а еще мне абсолютно в прикол просить у вас помощи.....так суть проблемы то в чем? что не работает?
Знал бы по имени, обратился бы....
Да, не работает, поэтому прошу подсказать, что я делаю не так… прошу Вас не стебаться надо мной, так как изучаю PHP кусками по инету…
Да кто стебется то, я спрашиваю ЧТО не работает, запрос нормальный. Ошибка какая или что? Суть вопроса не ясна, перефразируйте, спросите иначе.Уважаемый Fuze, конечно все работает! Мне просто по приколу отнимать свое и Ваше время, а еще мне абсолютно в прикол просить у вас помощи.....
p.s. не нужно воспринимать все в штыки, а то при таких реакциях желание помочь пропадет.
#6
12 октября 2011 в 11:41
Максим, я понимаю, что не высыпаешься , но Fuze задал абсолютно нормальный вопрос. Информации пусть будет больше, чем меньше. По вопросу не всё ясно. Запрос вроде бы корректен. Что именно не работает? Что хочешь получить?
Из того, что заметил, я бы не стал в таблице cms_goodboy делать лищние колонки userlogin, usernickname. Их можно получить из таблицы cms_users. Для привязки оставил бы только колонку userid. Но это просто замечание и это не влияет на работоспособность запроса.
Нет условия where в запросе. Берете всю таблицу? Попробуй сделать этот запрос в phpmyadmin, подставивь вместо переменных их значения. Или после запроса в файле php вывести массив полученный из таблицы. Только не сам $result, а после обработки fetch_assoc-ом. Примерно так:
Получается ли нужный массив?
И конечно же на время отладки нужно включать вывод ошибок мускул и php. И ошибки в студию. Побольше информации.
Из того, что заметил, я бы не стал в таблице cms_goodboy делать лищние колонки userlogin, usernickname. Их можно получить из таблицы cms_users. Для привязки оставил бы только колонку userid. Но это просто замечание и это не влияет на работоспособность запроса.
Нет условия where в запросе. Берете всю таблицу? Попробуй сделать этот запрос в phpmyadmin, подставивь вместо переменных их значения. Или после запроса в файле php вывести массив полученный из таблицы. Только не сам $result, а после обработки fetch_assoc-ом. Примерно так:
И конечно же на время отладки нужно включать вывод ошибок мускул и php. И ошибки в студию. Побольше информации.
#7
13 октября 2011 в 13:46
Fuze, сори, действительно мозги зикипели..
Делаю топ по посещениям, за пример взял модуль mod_user_rating, все делаю по аналогии, но не получается..
Делаю топ по посещениям, за пример взял модуль mod_user_rating, все делаю по аналогии, но не получается..
$sql = "SELECT u.userid, u.userlogin, u.usernickname, u.visiting as visiting, p.imageurl, p.user_id FROM cms_goodboy u LEFT JOIN cms_user_profiles p ON p.user_id = u.userid ORDER BY visiting DESC LIMIT ".$cfg['count']; $result = $inDB->query($sql); $is_usr = false; if ($inDB->num_rows($result)){ $is_usr=true; include_once($_SERVER['DOCUMENT_ROOT'].'/components/users/includes/usercore.php'); } while($usr = $inDB->fetch_assoc($result)){ $usr['profileurl'] = cmsUser::getProfileURL($usr['userlogin']); $usr['usrimage'] = usrImageNOdb($usr['userid'], 'small', $usr['imageurl']); $users[] = $usr; } } $smarty = $inCore->initSmarty('modules', 'mod_topvisiting.tpl'); $smarty->assign('users', $users); $smarty->assign('cfg', $cfg); $smarty->assign('is_usr', $is_usr); $smarty->display('mod_topvisiting.tpl');
{if $is_usr} <table cellspacing="5" border="0" class="mod_user_rating"> <tr> <td width="20" class="avatar">{$usr.usrimage}</td> <td width=""> <a href="{$usr.profileurl}" class="nickname">{$usr.usernickname}</a> <div class="rating">{$usr.visiting}</div> </td> </tr> </table> {else} <p>Нет данных для отображения.</p> {/if}
#8
13 октября 2011 в 14:33
А если вот так?
Извините, если что… когда имел дело с ФоксПро… 3 года имел…
"SELECT u.userid, u.userlogin, u.usernickname, u.visiting as visiting, p.imageurl, p.user_id FROM cms_goodboy u, cms_user_profiles p WHERE p.user_id = u.userid ORDER BY visiting DESC LIMIT ".$cfg['count'];
#9
13 октября 2011 в 14:53
Максим Шорин, так и не написал что не получается
#10
13 октября 2011 в 16:13
верно, ибо в исходном запросе ошибок вроде нет… тот что я предложил это так...Максим Шорин, так и не написал что не получается
интригует наверное)
#11
13 октября 2011 в 17:30
не получается то что модуль пустой, тоесть вообще ни чего не показывает..
Максим Шорин, в файле шаблона нужно тоже перебирать массив. Ты туда передаешь многомерный массив $users, а в файле шаблона обращаешься к массиву $usr, который является значением многомерного массива. Перебирается как то так:
{if $is_usr} <table cellspacing="5" border="0" class="mod_user_rating"> <tr> <td width="20" class="avatar">{$usr.usrimage}</td> <td width=""> <a href="{$usr.profileurl}" class="nickname">{$usr.usernickname}</a> <div class="rating">{$usr.visiting}</div> </td> </tr> {/foreach} </table> {else} <p>Нет данных для отображения.</p> {/if}
#13
13 октября 2011 в 22:26
Марат, огромное спасибо!!!
Всем кто откликнулся тоже спасибо, проблема решена.
Всем кто откликнулся тоже спасибо, проблема решена.