Добрый всем день. Есть база. В ней есть таблица s_messages. В ней есть поля: id // понятно // message // тоже понятно // beginner // id отправителя // follower // id получателя // date; Мне нужно, что бы на странице отображались Сообщения с именами, id которых (beginner или follower) не совпадают с id, который я вытаскиваю из базы с помощью сессии. Только один раз на каждое имя(то есть id). Реализовано тут: http://bytenet.seapps.ru/index.php?page=3 Я нуб и знаю это, (пожалуйста) не надо меня ругать за кривой код. Только конструктив) Сам код: PHP: if($_SESSION['access'] == 10){ $res = mysqli_query($dbConnect, "SELECT * FROM `s_users` WHERE pin = ".$_SESSION['pin'].""); if ($res) { while($row = mysqli_fetch_assoc($res)){ $id = $row['id']; $result = mysqli_query($dbConnect, "SELECT * FROM `s_messages` WHERE (beginner = ".$row['id']." OR follower = ".$row['id'].") GROUP BY follower desc"); }} if ($result) { while($rower = mysqli_fetch_assoc($result)){ if($rower['beginner']!= $id){ $resultic = mysqli_query($dbConnect, "SELECT * FROM `s_users` WHERE id = ".$rower['beginner'].""); } else { $resultic = mysqli_query($dbConnect, "SELECT * FROM `s_users` WHERE id = ".$rower['follower'].""); } if ($resultic) { while($roweric = mysqli_fetch_assoc($resultic)){ echo '<div class="persMes"> <a href="index.php?page=4&mes='.$roweric['id'].'&name2='.$roweric['name'].'"> <div>'.$roweric['name'].'</div> <div>'; // $result3 = mysqli_query($dbConnect, "SELECT * FROM `s_messages` WHERE (beginner = ".$id." AND follower = ".$roweric['id'].") OR (beginner = ".$roweric['id']." AND follower = ".$id.") ORDER BY id DESC LIMIT 1"); if ($result3) { while($rower3 = mysqli_fetch_assoc($result3)){ echo $rower3['message']; }} // echo '</div> <div>'.$rower['date'].'</div> </a> </div>'; $nameMes = $roweric['name']; } } } }
Скачай себе программу heidisql и играйся с запросами, нет ни чего сложного в этом. У тебя 4 запроса есть стало быть шаришь. И вообще тыкать через пхп базу, не до конца разобравшись это тяжко, сложно что то понять.
выполнение запросов в цикле - большое зло вот это: Код (Text): while($rower = mysqli_fetch_assoc($result)){ if($rower['beginner']!= $id){ $resultic = mysqli_query($dbConnect, "SELECT * FROM `s_users` WHERE id = ".$rower['beginner']."") А вообще лучше обрисуй конкретнее задачу и таблицы которые связаны .... все это делается одним запросом
Нужно, что бы на странице были только те сообщения, у которых разные имена. Помимо того, в выведенных сообщениях нужно указать ячейки поля сообщения. Про зло) Я понимаю. Не можете сказать, как правильно?
правильная постановка вопроса - 50% решения (с) я спрашиваю про ВСЮ задачу. .а не про ту е часть , которую как вы думаете нужно сделать для решения ВСЕЙ задачи вот что у вас за таблица пользователей? зачем вы ее в цикле пробегаете? Грубо гворя - что вы хотите видеть на странице вообще? - историю переписки конкретного пользователя, все диалоги, что?
Диалоги. Не всю переписку, а разные переписки от разных людей, где будут сведения о последнем сообщении, отправленном конкретному пользователю.
используй команду SELECT DISTINCT указываешь поле пользователя и параметр DESC с полем сообщения. Таким образом ты получишь список всех пользователей без дуближа а DESC позволит тебе отобразить последнею запись переписки.