Всем привет. Столкнулся с одной проблемой: Есть главная страница, на которой отображены пользователи, список новостей и список, пускай будет, дуэлей. В дуэли участвуют две стороны, левая и правая. На каждой стороне по одному пользователю. Таблица дуэлей состоит исключительно из цифр: ID, member_left_id, member_right_id, season_id, project_id и т.д. И есть таблица members. Как понятно из названия, таблица пользователей. Мне нужно вывести список дуэлей с именами участников и их фотографиями, но при попытке достать значения member_l_one_id и member_r_one_id из одной таблицы members, sql выдает ошибку: Код (Text): Warning: mysql_fetch_array() expects parameter 1 to be long, resource given in D:\Web\OpenServer\domains\battle.dev\index.php on line 74 Вот код программы Код (Text): $sql=mysql_query("SELECT battles.*, projects.title AS project_title, branches.title AS branch_title, seasons.title AS season_title, members.nickname AS mc_left_nickname, members.nickname AS mc_right_nickname FROM battles, projects, branches, seasons, members WHERE battles.project_id = projects.id AND battles.branch_id = branches.id AND battles.season_id = seasons.id AND battles.member_l_one_id = members.id AND battles.member_r_one_id = member.id"); while($result = mysql_fetch_array($sql)) { $battle_id = $result['battle_id']; $project_id = $result['project_id']; $project_title = $result['project_title']; $branch_id = $result['branch_id']; $branch_title = $result['branch_title']; $season_id = $result['season_id']; $season_title = $result['season_title']; $mc_left_nickname = $result['mc_left_nickname']; $mc_left_photo = $result['mc_left_photo']; $mc_right_nickname = $result['mc_right_nickname']; $mc_right_photo = $result['mc_right_photo']; $select_query = "SELECT * FROM members WHERE id = " . $member_l_one_id; $member = mysql_query($select_query); printf( '<a href="battle.php?id='. $battle_id .'"><div class="double_tabloR twoSt" style="padding-left: 0px;"> <div class="sport_board line soccer doubleBoard"> <div class="board_div"> <div class="top_line"> <span class="cur-time line" id="timeGame">' . $project_title ." ". $branch_title .'</span> </div> <table class="teamsDiv"> <tbody> <tr class="teams_img"> <td> <div class="team_logo"> <img src="'. $member_l_photo .'"> </div> </td> <td class="team_logo_con"> <div class="team"><span>' . $mc_left_nickname . '</span></div> </td> <td class="score_div"> <div class="time"> <div class="cl">VS</div> </div> </td> <td class="team_logo_con"> <div class="team"><span>' . $mc_right_nickname . '</span></div> </td> <td> <div class="team_logo"> <img src="' . $member_r_photo . '"> </div> </td> </tr> </tbody> </table> </div> </div> </div> </a> <br>'); } Подскажите, пожалуйста, как реализовать это? Одно имя участника выводится нормально, а когда я пытаюсь достать два, вылетает ошибка.
походу переменная $sql у тебя пустая. напиши Код (Text): var_dump($sql); после строки: $sql=mysql_query("SELECT battles.*, projects.title AS project_title, branches.title AS branch_title, seasons.title AS season_title, members.nickname AS mc_left_nickname, members.nickname AS mc_right_nickname FROM battles, projects, branches, seasons, members WHERE battles.project_id = projects.id AND battles.branch_id = branches.id AND battles.season_id = seasons.id AND battles.member_l_one_id = members.id AND battles.member_r_one_id = member.id");
Тут двойной join нужен с одной таблицей нужен. Весь твой жуткий запрос лень разбирать, да и ты не объясняешь, как у тебя все эти таблицы связаны, но если только битву с двумя участниками, то должно быть примерно следующее Код (Text): select b.*, m1.nickname mc_left_nickname, m2.nickname mc_right_nickname from battles b join members m1 on (m1.id=b.member_l_one_id) join members m2 on (m2.id=b.member_r_one_id) where b.id = 25 where взял от балды, но join должен так выглядеть
Помогло, спасибо, но у меня теперь каждая дуэль выводится по 4 раза, то есть у меня всего 4 их в базе и в сумме выводит 16.