Autor Zpráva
PePe15th
Profil
Potřebuji do tohoto kódu, který se stará o řazení zpráv v chatu podle času vložit proměnou $comment['content'], která by se vkládala mezi tyto zprávy taky podle času.
for($i=0;$i<=9;$i++){
echo $messages[$i];
}

Vím že to není jednoduché a každopádně děkuji za každou odpověď.
Spectator
Profil
PePe15th:
Tomu nějak moc nerozumim. Jak tento kod řadí podle času? Odkud se bere ta zpráva a ten comment?
Jinak na řazení můžeš používat funkci sort()
PePe15th
Profil
Všechno je uložené v databázi na exgames.cz, chat je hned na hlavní stránce.
Spectator
Profil
a ten comment bude reakce na message?
Spectator
Profil
Když vybíráš data z databáze tak můžeš rovnou řadit.

SELECT ..... ORDER BY cas ASC/DESC
PePe15th
Profil
Bude se zobrazovat stejně jako nová zpráva z chatu.
//zkusím, díky
Spectator
Profil
v tom případě nechápu proč je to comment, když se zobrazí stejně jako zpráva. To bych pak ani nedělal
PePe15th
Profil
Špatně jsem to napsal, comment zobrazuje komentáře z her a bude se řadit mezi zprávy chatu podle času přidání.
Spectator
Profil
Tak bych u komentu dal v db ještě sloupek např. reakce, kam by se ukládalo id zprávy, na kterou reaguje. potom při výpisu zpráv bych při každé zprávě kouknul do databáze, zda tam neni nějaký komentář, který má v reakce stejné jako právě vypisaná zpráva, pokud ano, vypsal bych jí a také dal do selectu řazení. Pak budeš mít zprávu, pod nimi komenty a vše podle času.
PePe15th
Profil
Všiml jsem si, že jsem zde dal špatný kus kódu, tady je celý kód:
<?php
//Connect to MySQL
mysql_connect('localhost','...','...');
//Select database
mysql_select_db('exgamescz') or die(2);
//Get the first 10 messages ordered by time
$result = mysql_query("select * from chat order by time desc limit 0,10");
$messages = array();
//Loop and get in an array all the rows until there are not more to get
while($row = mysql_fetch_array($result)){
//Put the messages in divs and then in an array
$messages[] = "<div class='message'><div class='messagehead'>" . $row[name] . " - " . date('g:i A M, d Y',$row[time]) . "</div><div class='messagecontent'>" . $row[message] . "</div></div>";
//The last posts date
$old = $row[time];
}
//Display the messages in an ascending order, so the newest message will be at the bottom
for($i=0;$i<=9;$i++){
echo $messages[$i];
}
//This is the more important line, this deletes each message older then the 10th message ordered by time is deleted, so the table will never have to store more than 10 messages.
mysql_query("delete from chat where time < " . $old);
?>
Jde teda něco vykouzlit s tímhle?
Spectator
Profil
1) mi přijde nepraktické to mazání zpráv po deseti zobrazených
2) rovnou bych vypisoval zprávy v tom while

neni to zrovna moc prakticky udělaný, ani ozkoušený, ale jako úprava toho tvého by to snad mohlo fungovat. Ovšem nebude to vypisovat pouze 0-10 zpráv
mysql_connect('localhost','...','...'); 
mysql_select_db('exgamescz') or die(2); 
$result = mysql_query("select * from chat where reakce=0 order by time desc");//musíš mít sloupec reakce v tabulce messages 
$resultCOMMENTY = mysql_query("select * from chat where reakce<>0 order by time desc"); //musíš mít sloupec reakce v tabulce messages 
while($row = mysql_fetch_array($result)){ 
    echo "<div class='message'><div class='messagehead'>" . $row[name] . " - " . date('g:i A M, d Y',$row[time]) . "</div><div class='messagecontent'>" . $row[message] . "</div></div>"; 
    
    while ($rowCOMMENTY = mysql_fetch_array($resultCOMMENTY)){
        if ($rowCOMMENTY['reakce']==$row['id']){}
            echo "<div class='message'><div class='messagehead'>" . $rowCOMMENTY[name] . " - " . date('g:i A M, d Y',$rowCOMMENTY[time]) . "</div><div class='messagecontent'>" . $rowCOMMENTY[message] . "</div></div>";
        }
    }
} 

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: