Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyświetlenie najnowszych postów a potem tematów.
Forum PHP.pl > Forum > Przedszkole
Weles
Witam!
Od jakiegoś czasu próbuję uporać się z problemem wyświetlenia w pierwszej kolejności wątków w których ostatni był najnowszy post, a potem dopiero najnowszych wątków, nie wiem czy to dobrze opisałem - ale chodzi mi po prostu o taki sam efekt jak na różnych gotowych skryptach for, np. tego i sortowanie tematów w działach - Dokładnie o identyczny efekt mi chodzi.

Mój obecny kod wygląda tak:

  1. $wszystkie_tematy_query = mysql_query("SELECT * FROM $baza_forum.tematy WHERE dzial='$d' ORDER by data DESC");
  2.  
  3. while($tematy_array = mysql_fetch_array($wszystkie_tematy_query)) {
  4. $autor_array = mysql_fetch_array(mysql_query("SELECT * FROM $baza_forum.account WHERE id='$tematy_array[autor]'"));
  5. $odpowiedzi_query = mysql_query("SELECT * FROM $baza_forum.posty WHERE temat='$tematy_array[id]'");
  6. $odpowiedzi_rows = mysql_num_rows($odpowiedzi_query);
  7. $ostatnie_odpowiedzi_array = mysql_fetch_array(mysql_query("SELECT * FROM $baza_forum.posty WHERE temat='$tematy_array[id]' ORDER BY data DESC"));
  8. $autor_postu = mysql_fetch_array(mysql_query("SELECT * FROM $baza_forum.account WHERE id='$ostatnie_odpowiedzi_array[autor]'"));
  9. $autor_tematu = mysql_fetch_array(mysql_query("SELECT * FROM $baza_forum.account WHERE id='$tematy_array[autor]'"));
  10. $tematy_data = $tematy_array[data];
  11. $tematy_data = explode(" ", $tematy_data);
  12. $tematy_godz = substr($tematy_array[data], 10);
  13.  
  14. $odpowiedzi_data = $ostatnie_odpowiedzi_array[data];
  15. $odpowiedzi_data = explode(" ", $odpowiedzi_data);
  16. $odpowiedzi_godz = substr($ostatnie_odpowiedzi_array[data], 10);
  17.  
  18. echo'<div class="tematy">
  19. <table style="width: 100%;">
  20. <tr>
  21. <td style="width: 0.001%;"><a href="?t='.$tematy_array['id'].'"><img src="grafika/tematy_znaczek.png" alt="Znak Postów"></a></td>
  22. <td style="width: 60%; vertical-align: top;">
  23. <div class="title3">
  24. <b><a href="?t='.$tematy_array['id'].'">'.$tematy_array['nazwa'].'</a></b></div>
  25. <span class="tematy_tekst1">Napisany przez <a title="Przejdź do profilu użytkownika '.$autor_array['nick'].'" href="?profil='.$autor_array['id'].'">'.$autor_array['login'].'</a>,
  26. ';
  27.  
  28. echo zamien_date($tematy_data[0]);
  29.  
  30. if(zamien_date($tematy_data[0]) == $zamien_date1) {
  31. echo ' o '.$tematy_godz;
  32. } elseif(zamien_date($tematy_data[0]) == $zamien_date2) {
  33. echo ' o '.$tematy_godz;
  34. }
  35.  
  36. echo'</span></td>';
  37.  
  38. echo'<td style="width: 15%;">Odpowiedzi: '.$odpowiedzi_rows.'<br>Wyświetlenia: '.$tematy_array['wyswietlenia'].'</td>';
  39.  
  40. if($ostatnie_odpowiedzi_array['autor'] > 0) {
  41. <td style="width: 20%;"><a title="Przejdź do profilu tego użytkownika." href="?profil='.$autor_postu[id].'">'.$autor_postu[login].'</a><br>
  42. ';
  43. echo zamien_date($odpowiedzi_data[0]);
  44. if(zamien_date($odpowiedzi_data[0]) == $zamien_date1) {
  45. echo ' o '.$odpowiedzi_godz;
  46. } elseif(zamien_date($odpowiedzi_data[0]) == $zamien_date2) {
  47. echo ' o '.$odpowiedzi_godz;
  48. }
  49. echo'</td>';
  50.  
  51. } elseif($tematy_array['autor'] > 0) {
  52. echo'<td style="width: 20%;"><a title="Przejdź do profilu tego użytkownika." href="?profil='.$autor_tematu[id].'">'.$autor_tematu[login].'</a>'; br();
  53. echo zamien_date($tematy_data[0]);
  54.  
  55. if(zamien_date($tematy_data[0]) == $zamien_date1) {
  56. echo ' o '.$tematy_godz;
  57. } elseif(zamien_date($tematy_data[0]) == $zamien_date2) {
  58. echo ' o '.$tematy_godz;
  59. }
  60. }
  61.  
  62. </tr>
  63. </table>
  64. </div>
  65. ';
  66. }


Proszę o pomoc!
Pozdrawiam.
redeemer
Nie zagłębiałem się za bardzo w kod, ale domyślam się, żę kolumna data to data utworzenia tematu. Do tabeli tematy dodaj kolumnę ostatnia_aktualizacja, aktualizuj ją jeśli trzeba i zamiast
  1. SELECT * FROM $baza_forum.tematy WHERE dzial='$d' ORDER BY DATA DESC
zrób
  1. SELECT * FROM $baza_forum.tematy WHERE dzial='$d' ORDER BY ostatnia_aktualizacja DESC
PS. Nie da się tych zapytań jakoś poJOINować?
Weles
Dzięki za pomoc, bardzo się przydało - Żałuję tylko że na to nie wpadłem tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.