2013-04-25 2 views
0

나는 데이터베이스를 사용하는 채팅을하고 있습니다. 메시지를 표시 할 때 이전 메시지가 맨 위에오고 새 메시지가 맨 아래에옵니다. 새 메시지가 맨 위에 올 수 있도록 어떻게 만들 수 있습니까? 나는 이미 ORDER BY Username DESC을 시도했지만 알파벳 순서로만 만들었다.PHP & SQL의 아래에서 위로 읽으십시오

이것은 당신은 당신의 chatterdata 테이블에 타임 스탬프 필드를 추가해야 내 전체 코드

<html> 
<head> 
    <title>Jetup</title> 
</head> 
<body> 
<form name="chatform" action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> 
    <input type="text" name="chatuser"/> 
<input type="text" name="chatinput"/> 
<input type="image" name="send" value="Verzenden"/> 
<br/> 
<?php 
    $connection = mysql_connect("localhost","root","usbw") or die ("Kon geen verbinding maken"); 
    mysql_select_db("chat") or die("Kan geen database selecteren"); 

    if(isset($_POST['chatinput']) && isset($_POST['chatuser'])){ 
     $input = $_POST['chatinput']; 
     $user = $_POST['chatuser']; 


     $query = "INSERT INTO chatterdata (Username, Message) VALUES ('".$user."', '" .$input."')"; 
     mysql_query($query) or die(mysql_error()); 
    } 
    $display = mysql_query("SELECT * FROM chatterdata ORDER BY Username DESC, Message DESC"); 
    while($row = mysql_fetch_array($display)){ 
     echo($row['Username'] . " : " .$row['Message'] . "<br/>"); 
    } 
?> 
</form> 
</body> 

+1

메시지의 datetime에 의한 정렬. INSERT INTO chatterdata (Username, Message, created_at) VALUES (... NOW())' – Waygood

+0

사용자 이름으로 주문하는 대신 날짜순으로 주문하십시오. 또는 날짜순으로 주문한 다음 사용자 이름순으로 주문할 수도 있습니다. '주문 날짜 DESC, 사용자 이름 DESC' –

+0

Google에서 임의의 솔루션을 검색했습니다 ... –

답변

1

입니다. 당신이 만들 때 데이터베이스에 다른 작업을 삽입 할 필요가 없습니다

당신은,이 새 메시지를 추가 할 때 자동으로 업데이트됩니다 예를 들어 필드입니다

`added` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 

이 분야에서 주문할 수 있습니다 메세지.

당신은 다음과 같이 선택할 수 있습니다

SELECT * FROM chatterdata ORDER BY added DESC 

확실히 데이터베이스에 valuues를 삽입하기 전에 적어도는 mysql_real_escape_string에서 PDO를 사용하여 보거나 것이다,이 :-)

일에 큰 보안 문제를 거기로
+0

감사합니다. : D 캔트 +1 당신은, 그냥 내 명성을 잃었 xD –

+0

아 절대 신경 쓰지 마 :) – Andrew

1

SentDate 필드를 만들고 SentDate 필드로 정렬하여이 작업을 수행 할 수 있습니다.

INSERT INTO chatterdata(Username, Message, SentDate) VALUES ($user, $message, NOW()) 

새로운 날짜와 시간이 이전 메시지보다 커질수록 최신 메시지가 맨 위에 표시됩니다.

+0

고마워요 fot 대답 !! –

관련 문제