Правильно ли сделана выборка из базы ?

 
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 330
Осваиваю базу данных..
Бьюсь вторую ночь, сломал всю голову, мозги кипят..
$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 | 17.9 Кб | Скачали: 375
Редактировалось: 1 раз (Последний: 12 октября 2011 в 04:08)
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 330
простую выборку сделать могу, но мне нужно обьеденение таблиц, вот это у меня не получается, userid , userlogin, usernickname, по большому счету надо выбирать из cms_users, тогда получается что надо еще из третьей таблицы cms_users выбирать эти переменные, а я тупо из второй не могу выбрать. либо синтаксис у меня страдает, либо я чего то не допонимаю.
Прошу помощи..
Реклама
cms
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4363
так суть проблемы то в чем? что не работает?
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 330
Fuze:
так суть проблемы то в чем? что не работает?
Уважаемый Fuze, конечно все работает ! Мне просто по приколу отнимать свое и Ваше время, а еще мне абсолютно в прикол просить у вас помощи.....
Знал бы по имени, обратился бы....

Да, не работает, поэтому прошу подсказать, что я делаю не так.... прошу Вас не стебаться надо мной, так как изучаю PHP кусками по инету...
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4363
Максим Шорин:
Уважаемый Fuze, конечно все работает ! Мне просто по приколу отнимать свое и Ваше время, а еще мне абсолютно в прикол просить у вас помощи.....
Да кто стебется то, я спрашиваю ЧТО не работает, запрос нормальный. Ошибка какая или что? Суть вопроса не ясна, перефразируйте, спросите иначе.

p.s. не нужно воспринимать все в штыки, а то при таких реакциях желание помочь пропадет.
Редактировалось: 1 раз (Последний: 12 октября 2011 в 10:02)
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Модератор
small user social cms
МедальКубок зрительских симпатийПочетный донор проекта
Сообщений: 964
Максим, я понимаю, что не высыпаешься smile , но Fuze задал абсолютно нормальный вопрос. Информации пусть будет больше, чем меньше. По вопросу не всё ясно. Запрос вроде бы корректен. Что именно не работает? Что хочешь получить?
Из того, что заметил, я бы не стал в таблице cms_goodboy делать лищние колонки userlogin, usernickname. Их можно получить из таблицы cms_users. Для привязки оставил бы только колонку userid. Но это просто замечание и это не влияет на работоспособность запроса.
Нет условия where в запросе. Берете всю таблицу? Попробуй сделать этот запрос в phpmyadmin, подставивь вместо переменных их значения. Или после запроса в файле php вывести массив полученный из таблицы. Только не сам $result, а после обработки fetch_assoc-ом. Примерно так:
Код PHP:
  1. print_r($массив);
Получается ли нужный массив?
И конечно же на время отладки нужно включать вывод ошибок мускул и php. И ошибки в студию. Побольше информации.
Хватит париться, живи как нравится!
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 330
Fuze, сори, действительно мозги зикипели..

Делаю топ по посещениям, за пример взял модуль mod_user_rating, все делаю по аналогии, но не получается..

Код PHP:
  1.  
  2. $sql = "SELECT u.userid, u.userlogin, u.usernickname, u.visiting as visiting, p.imageurl, p.user_id
  3. FROM cms_goodboy u
  4. LEFT JOIN cms_user_profiles p ON p.user_id = u.userid
  5. ORDER BY visiting
  6. DESC LIMIT ".$cfg['count'];
  7. $result = $inDB->query($sql);
  8.  
  9. $users = array();
  10. $is_usr = false;
  11.  
  12. if ($inDB->num_rows($result)){
  13.  
  14. $is_usr=true;
  15.  
  16. if (!function_exists('usrImageNOdb')){
  17. include_once($_SERVER['DOCUMENT_ROOT'].'/components/users/includes/usercore.php');
  18. }
  19.  
  20. while($usr = $inDB->fetch_assoc($result)){
  21. $usr['profileurl'] = cmsUser::getProfileURL($usr['userlogin']);
  22. $usr['usrimage'] = usrImageNOdb($usr['userid'], 'small', $usr['imageurl']);
  23. $users[] = $usr;
  24. }
  25. }
  26.  
  27.  
  28. $smarty = $inCore->initSmarty('modules', 'mod_topvisiting.tpl');
  29. $smarty->assign('users', $users);
  30. $smarty->assign('cfg', $cfg);
  31. $smarty->assign('is_usr', $is_usr);
  32. $smarty->display('mod_topvisiting.tpl');
  33.  
Код PHP:
  1.  
  2. {if $is_usr}
  3. <table cellspacing="5" border="0" class="mod_user_rating">
  4. <tr>
  5. <td width="20" class="avatar">{$usr.usrimage}</td>
  6. <td width="">
  7. <a href="{$usr.profileurl}" class="nickname">{$usr.usernickname}</a>
  8.  
  9. <div class="rating">{$usr.visiting}</div>
  10. </td>
  11. </tr>
  12. </table>
  13. {else}
  14. <p>Нет данных для отображения.</p>
  15. {/if}
  16.  
  17.  
Посетитель
small user social cms
Медаль
Сообщений: 479
А если вот так?
Код PHP:
  1.  
  2. "SELECT u.userid, u.userlogin, u.usernickname, u.visiting as visiting, p.imageurl, p.user_id
  3. FROM cms_goodboy u, cms_user_profiles p
  4. WHERE p.user_id = u.userid
  5. ORDER BY visiting
  6. DESC LIMIT ".$cfg['count'];
  7.  
Извините, если что.. когда имел дело с ФоксПро... 3 года имел...
InstantCMS Team
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1176
Максим Шорин, так и не написал что не получается
Вопросы и ответы
Посетитель
small user social cms
Медаль
Сообщений: 479
Администратор:
Максим Шорин, так и не написал что не получается
верно, ибо в исходном запросе ошибок вроде нет... тот что я предложил это так...
интригует наверное)
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 330
не получается то что модуль пустой, тоесть вообще ни чего не показывает..
Правильно ли сделана выборка из базы ?
Модератор
small user social cms
МедальКубок зрительских симпатийПочетный донор проекта
Сообщений: 964
Максим Шорин, в файле шаблона нужно тоже перебирать массив. Ты туда передаешь многомерный массив $users, а в файле шаблона обращаешься к массиву $usr, который является значением многомерного массива. Перебирается как то так:
Код PHP:
  1.  
  2. {if $is_usr}
  3. <table cellspacing="5" border="0" class="mod_user_rating">
  4. {foreach key=tid item=usr from=$users}
  5. <tr>
  6. <td width="20" class="avatar">{$usr.usrimage}</td>
  7. <td width="">
  8. <a href="{$usr.profileurl}" class="nickname">{$usr.usernickname}</a>
  9.  
  10. <div class="rating">{$usr.visiting}</div>
  11. </td>
  12. </tr>
  13. {/foreach}
  14. </table>
  15. {else}
  16. <p>Нет данных для отображения.</p>
  17. {/if}
  18.  
Редактировалось: 1 раз (Последний: 13 октября 2011 в 19:43)
Хватит париться, живи как нравится!
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 330
Марат, огромное спасибо !!
Всем кто откликнулся тоже спасибо, проблема решена .
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: