Witam, mam troszkę mały problem, tworzę tzw. message system, czyli coś podobnego co można zobaczyć na facebooku w postaci wysyłania wiadomości do znajomych przy użyciu np. messengera. Mam problem z sformułowaniem zapytania do bazy danych.
Tak wygląda mój kod:
public function showMessages($idToSent)
{
$sql = "SELECT u.name, u.surname, m.text, m.data, m.fromUser, m.toUser FROM messages as m, users as u WHERE ((m.fromUser=:id AND m.toUser=:idToSent) OR (m.toUser=:idToSent AND m.fromUser=:id)) AND u.id=(m.toUser OR m.fromUser)";
$question = \Connect\Connect::connect()->prepare($sql);
$question->bindValue(':id', $_SESSION['iduser'], PDO::PARAM_STR);
$question->bindValue(':idToSent', $idToSent, PDO::PARAM_STR);
$question->execute();
foreach ($question as $value) {
$name = $value['name'];
$text = $value['text'];
$data = $value['data'];
if($value['toUser'] == $_SESSION['iduser']) {
echo '<div class="alert alert-success">
'.$text.'
</div>';
} else {
echo '<div class="alert alert-info">
<strong>'.$name.': </strong>'.$text.'
</div>';
}
}
}
Dla lepszego zrozumienia oznaczmy sobie :id 1 czyli usera zalogowanego(wysyła wiadomość), :idToSent czyli usera(otrzymuje wiadomość). Gdy wysyła user wiadomość wszystko jest okej. Gdy user który odbiera wiadomość to jej nie widzi. Działa to wzajemnie
Users as u - tabela usery z której wyciągam id usera, imie i nazwisko.
fromUser - to osoba która wysyła
toUser - osoba która dostaje wiadomość
W razie wyjaśnienia proszę pytać! Z góry dzięki za pomoc