За последние 24 часа нас посетил 22161 программист и 1154 робота. Сейчас ищут 322 программиста ...

Нужно помощь с кодом PHP

Тема в разделе "PHP для новичков", создана пользователем Xaotik, 30 июн 2022.

  1. Xaotik

    Xaotik Новичок

    С нами с:
    30 июн 2022
    Сообщения:
    4
    Симпатии:
    0
    Привет всем, может найдутся эксперты которые подскажут и помогут как что к чему, пытался объеденить вывод данных из двух таблиц на одной странице, чтобы все вместе выводилось, так то вроде все выводит, но если поставить лимит 1 на вывод сколько нужно выводить будет выводить 2, если выставить 2 будет 4 выводить, как его нормально сделать?

    PHP:
    1. $res = $mysqli->query("SELECT SQL_CALC_FOUND_ROWS tb1.user_id, tb1.group_id, tb2.user_id FROM `groups_users` tb1,`groups_wall` tb2 WHERE tb1.user_id = '".$user_id."' AND tb1.group_id = tb2.wall_id");
    2. $all = $res->num_rows;
    3. $cp = ceil($all/$system['page']);
    4. $p = (isset($_GET['page']) and is_numeric($_GET['page']) and $_GET['page']>1 and $_GET['page']<=$cp) ? $_GET['page'] : 1;
    5. $start = $p*$system['page']-$system['page'];
    6. $res = $mysqli->query("SELECT SQL_CALC_FOUND_ROWS 'groups' as 'request_type', tb1.user_id, tb1.group_id, tb2.id, tb2.user_id, tb2.wall_id, tb2.from, tb2.repost_id, tb2.text, tb2.photo, tb2.video, tb2.audio, tb2.type, tb2.time, tb2.crepost, tb2.urepost
    7. FROM `groups_users` tb1,`groups_wall` tb2 WHERE tb1.user_id = '".$user_id."' AND tb1.group_id = tb2.wall_id ORDER by tb2.time
    8. DESC LIMIT $start, ".$system['page']."");
    9.  
    10. if ($res->num_rows > 0 ) {
    11. while ($news_groups_res = $res->fetch_array()){
    12. $ord++;
    13. $common_news[ $news_groups_res['time'] - $ord] = $news_groups_res;
    14. }
    15. }
    16.  
    17. $res = $mysqli->query("SELECT SQL_CALC_FOUND_ROWS DISTINCT tb1.friend_id, tb2.user_id
    18. FROM `friends` tb1,`wall` tb2
    19. WHERE         (tb1.user_id = '".$user_id."' OR tb2.user_id = '".$user_id."' )
    20. AND tb1.friend_id = tb2.user_id
    21. ");
    22.  
    23. $all = $res->num_rows;
    24. if ($all > 0){
    25. $cp = ceil($all/$system['page']);
    26. $p = (isset($_GET['page']) and is_numeric($_GET['page']) and $_GET['page']>1 and $_GET['page']<=$cp) ? $_GET['page'] : 1;
    27. $start = $p*$system['page']-$system['page'];
    28.  
    29. $res = $mysqli->query("
    30. SELECT SQL_CALC_FOUND_ROWS DISTINCT 'friends' as 'request_type', tb1.friend_id, tb1.status, tb2.id, tb2.user_id, tb2.wall_id, tb2.repost_id, tb2.text, tb2.photo, tb2.video, tb2.audio, tb2.type, tb2.time
    31. FROM `friends` tb1, `wall` tb2
    32. WHERE (
    33. ( (tb1.user_id = '".$user_id."') AND (tb1.friend_id = tb2.user_id) AND tb1.status = '1')
    34. OR
    35. ( (tb2.user_id = '".$user_id."') AND (tb1.friend_id = tb2.user_id) AND tb1.status = '1')
    36. )
    37. AND (tb2.wall_id = tb2.user_id)
    38. ORDER by tb2.time DESC LIMIT $start, ".$system['page']."");
    39.  
    40. while ($news_friends_arr = $res->fetch_array()){
    41. $ord++;
    42. $common_news[ $news_friends_arr['time'] - $ord] = $news_friends_arr;
    43. }
    44.  
    45. }
    46.  
    47. echo '<div id="load_content">';
    48. if (isset($common_news)) {
    49. krsort($common_news, SORT_NUMERIC);
    50. foreach($common_news as $news) {
    51. if ($news['request_type']=='friends') {
    52. echo wall_post($news,1,0,1,1,0);
    53. } else if ($news['request_type']=='groups') {
    54. echo group_wall_post($news,1,0,1,1,0);
    55. }
    56. }
    57. echo '</div>';
    58.  
    59. nav($p,$cp,'/modules/feed/nav/nav.php?id='.$id.'');
    60.  
    61. }else{
    62. echo '<div class="no_content border-radius"><span class="material-icons">rss_feed</span> '.$lang['no_news'].'</div>';
    63. }
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Читай доку, используй fetch_assoc() ;)
    --- Добавлено ---
    Это Шо-то древнее. Сейчас используют отдельный запрос с COUNT().
     
  3. Xaotik

    Xaotik Новичок

    С нами с:
    30 июн 2022
    Сообщения:
    4
    Симпатии:
    0
    Спрошу по другому, наверное я не понятно объяснил в чем проблема, должно выводить LIMIT 1, одну запись и бд, но запроса два и вывода два, и там и там прописано LIMIT 1, мне нужно чтоб выводило 1, а выводит 2)), собственно код

    PHP:
    1. $all_groups = $mysqli->query("SELECT SQL_CALC_FOUND_ROWS tb1.user_id, tb1.group_id, tb2.user_id FROM `groups_users` tb1,`groups_wall` tb2 WHERE tb1.user_id = '".$user_id."' AND tb1.group_id = tb2.wall_id")->num_rows;
    2. $all_users = $mysqli->query("SELECT SQL_CALC_FOUND_ROWS DISTINCT 'friends' as 'request_type', tb1.friend_id, tb1.status, tb2.id, tb2.user_id, tb2.wall_id FROM `friends` tb1, `wall` tb2 WHERE (( (tb1.user_id = '".$user_id."') AND (tb1.friend_id = tb2.user_id) AND tb1.status = '1') OR ( (tb2.user_id = '".$user_id."') AND (tb1.friend_id = tb2.user_id) AND tb1.status = '1')) AND (tb2.wall_id = tb2.user_id)")->num_rows;
    3.  
    4. $cp = ceil($all_users+$all_groups/$system['page']);
    5. $p = (isset($_GET['page']) and is_numeric($_GET['page']) and $_GET['page']>1 and $_GET['page']<=$cp) ? $_GET['page'] : 1;
    6. $start = $p*$system['page']-$system['page'];
    7.  
    8. $res = $mysqli->query("SELECT SQL_CALC_FOUND_ROWS 'groups' as 'request_type', tb1.user_id, tb1.group_id, tb2.id, tb2.user_id, tb2.wall_id, tb2.from, tb2.repost_id, tb2.text, tb2.photo, tb2.video, tb2.audio, tb2.type, tb2.time, tb2.crepost, tb2.urepost
    9. FROM `groups_users` tb1,`groups_wall` tb2 WHERE tb1.user_id = '".$user_id."' AND tb1.group_id = tb2.wall_id ORDER by tb2.time
    10. DESC LIMIT $start, ".$system['page']."");
    11.  
    12. while ($news_groups_res = $res->fetch_array()){
    13. $common_news[ $news_groups_res['time'] - $ord] = $news_groups_res;
    14. }
    15.  
    16. $res = $mysqli->query("
    17. SELECT SQL_CALC_FOUND_ROWS DISTINCT 'friends' as 'request_type', tb1.friend_id, tb1.status, tb2.id, tb2.user_id, tb2.wall_id, tb2.repost_id, tb2.text, tb2.photo, tb2.video, tb2.audio, tb2.type, tb2.time
    18. FROM `friends` tb1, `wall` tb2
    19. WHERE (
    20. ( (tb1.user_id = '".$user_id."') AND (tb1.friend_id = tb2.user_id) AND tb1.status = '1')
    21. OR
    22. ( (tb2.user_id = '".$user_id."') AND (tb1.friend_id = tb2.user_id) AND tb1.status = '1')
    23. )
    24. AND (tb2.wall_id = tb2.user_id)
    25. ORDER by tb2.time DESC LIMIT $start, ".$system['page']."");
    26.  
    27. while ($news_friends_arr = $res->fetch_array()){
    28. $common_news[ $news_friends_arr['time'] - $ord] = $news_friends_arr;
    29. }
    30.  
    31. echo '<div id="load_content">';
    32. if (isset($common_news)) {
    33. krsort($common_news, SORT_NUMERIC);
    34. foreach($common_news as $news) {
    35. if ($news['request_type']=='friends') {
    36. echo wall_post($news,1,0,1,1,0);
    37. } else if ($news['request_type']=='groups') {
    38. echo group_wall_post($news,1,0,1,1,0);
    39. }
    40. }
    41. echo '</div>';
    42.  
    43. nav($p,$cp,'/modules/feed/nav/nav.php?id='.$id.'');
    44.  
    45. }else{
    46. echo '<div class="no_content border-radius"><span class="material-icons">rss_feed</span> '.$lang['no_news'].'</div>';
    47. }