Загрузить таблицу MySql снизу вверх - PHP - PullRequest
1 голос
/ 14 ноября 2011

Сегодня мой первый день, когда я возился с PHP или MySQL ... Я пытался создать простую программу чата ..., она прекрасно работает, но сначала показывает старые чаты и самые новые чаты (которые находятся внизу таблица) последняя (внизу страницы) .. как я могу загрузить таблицу в обратном порядке? Таким образом, он отображает строки в нижней части таблицы базы данных в верхней части моей таблицы HTML?

Вот мой код ... Все в файле под названием "Chat.php"

<html><head></head><body>
<form action="chat.php" method="post">
Message: <br><textarea type="text" name="message" style="width:80%; height:300px;"></textarea><br>
<input type="submit" />
</form>

<?php

$host="****";
$user="****";
$password="****";

$cxn = mysql_pconnect ($host, $user, $password);

mysql_select_db("defaultdb", $cxn);

if (getenv(HTTP_X_FORWARDED_FOR)) {
    $ipaddress = getenv(HTTP_X_FORWARDED_FOR);
} else {
    $ipaddress = getenv(REMOTE_ADDR);
}

$message = $_POST["message"];

mysql_query("INSERT INTO ChatTest (ID, TimeStamp, Message) VALUES ('$ipaddress', NOW(), '$message')");

$data = mysql_query("SELECT * FROM ChatTest") or die(mysql_error()); 
 Print "<table border cellpadding=3>"; 
 Print "<tr>"; 
 Print "<th>ID:</th><th>TimeStamp:</th><th>Message:</th>";
 while($info = mysql_fetch_array( $data )) { 
 Print "<tr>"; 
    Print " <td>".$info['ID'] . "</td> "; 
    Print " <td>".$info['TimeStamp'] . " </td>";
    Print " <td>".$info['Message'] . "</td></tr>"; 
 } 
 Print "</table>"; 

mysql_close($cxn);


?>
</body></html>

Ответы [ 2 ]

4 голосов
/ 14 ноября 2011

То, что вы ищете, это оператор MySQL ORDER BY.Вы можете использовать его, чтобы сообщить СУБД, в каком порядке вы хотите получить результаты.

SELECT * FROM ChatTest
ORDER BY `TimeStamp` DESC

И еще одна вещь ...

Я понимаю, что это ваша первая попыткатак что понятно, что будут ошибки.Однако одна вещь, которую вы должны узнать сразу, это SQL-инъекции .

Рассмотрим пример, где сообщение пользователя -

0'); DROP TABLE ChatTest --

Внезапно ваш запрос будет выглядеть так:

INSERT INTO ChatTest (ID, TimeStamp, Message)
VALUES ('$ipaddress', NOW(), '0'); DROP TABLE ChatTest --')

Чтобы избежать этого, всегда запускайте пользовательский ввод через mysql_real_escape_string(), например:

$message = mysql_real_escape_string($_POST['message']);
2 голосов
/ 14 ноября 2011

Явно укажите ваш ключ сортировки:

$data = mysql_query("SELECT * FROM ChatTest ORDER BY PostDate DESC") or die(mysql_error()); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...