Я разрабатываю социальную сеть, и ключевой функцией является возможность публикации в профилях других пользователей. Однако мой текущий код будет показывать только одно сообщение. Кроме того, это, кажется, первое сообщение, которое показано. Я проверил это, создав новые учетные записи и написание тестового сообщения. Код действительно показывает этот первый пост, но если я попробую его снова, будет видно только первое сообщение. Код выглядит следующим образом: код для отправки сообщения в базу данных:Почему мой код показывает только одно сообщение?
$person = "profile.php?id={$id}";
$post = $_POST['post'];
if($post != "")
{
$data_added = date("Y-m-d");
$added_by = $session_username;
$user_posted_to = $id;
$post = preg_replace("#[^0-9a-z]#i", "", $post);
$sqlCommand = "INSERT INTO posts VALUES ('',
'$post',
'$data_added',
'$added_by',
'$user_posted_to')";
$commandQuery = mysql_query($sqlCommand) or die ("Couldn't send post");
}
else
{
echo "You have to fill in the post form...";
}
код для извлечения его (и отобразить его):
$getPosts = mysql_query("SELECT *
FROM posts
WHERE user_posted_to='$id'
ORDER BY id DESC LIMIT 15") or die("Couldn't find any posts");
while($row = mysql_fetch_array($getPosts))
{
$id = $row['id'];
$body = $row['body'];
$date_added = $row['date_added'];
$added_by = $row['added_by'];
$user_posted_to = $row['user_posted_to'];
$querya = mysql_query("SELECT *
FROM members
WHERE username='$added_by' LIMIT 1");
while($row = mysql_fetch_array($querya))
{
$user_added = $row['id'];
}
$user_added = "profile.php?id={$user_added}";
}
echo "
<div>
<h3><a href='$user_added'>$added_by</a> - $date_added </h3>
<p> $body</p>
</div><br />
";
Если кому-то нужен еще немного кода, как мое подключение к базе данных, просто комментарий.
Использование 'в то время как()' цикл, чтобы принести одну строку из '1' LIMIT запроса является довольно большой симптом грузов культового программирования. Вы действительно должны переписать свои два вложенных запроса в один запрос JOIN. Кроме того, вы уязвимы для SQL-инъекций ... –
Вы можете избежать двойного запроса с помощью 'SELECT p.id, p.body, p.date_added, p.added_by, p.user_posted_to, m.id FROM posts p JOIN members m ON p.added_by = m.username WHERE p.user_posted_to = '$ id' ORDER BY p.id DESC LIMIT 15'. Также у вас серьезные проблемы с SQL Injection **. – Prix
....... Удачи вам в этой социальной сети! –