Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Skrypt rankingowy
Forum PHP.pl > Forum > Przedszkole
miooodek
Dzień dobry,

Bardzo długo nie pisałem niczego w php, a teraz mam taki oto problem,

Mam skrypcik rankingowy ale chciałbym móc zmieniać pozycje wyświetlanych wpisów by np interesujący mnie wpis był zawsze na samej górze listy, jednak nie chce zmieniać jego średniej oceny.

Takie oto coś generuje moja toplistę, doszedłem do tego jak dopisywać coś do poszczególnych wpisów wstawiając do kodu
  1. <?php if ($review['Review']['id'] == 22) echo 'Moja wiadomosc'; ?>


Oto kod generujący listę w widoku.

  1. <div class="table-d2">
  2. <?php $countTop = count($topReviews); $i = 0; ?>
  3. <?php foreach ($topReviews as $review): $i++; ?>
  4.  
  5. <a href="<?php echo 'view-review/'; echo $review['Url']['url']; ?>">
  6. <div class="section <?php echo $first ? 'first' : ''; ?>">
  7. <table border="0" cellpadding="0" cellspacing="0">
  8. <tr>
  9. <td class="ac">
  10. <div style="width:130px;height:130px;">
  11. <table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0"><tr><td align="center" valign="middle" style="padding:0px;">
  12. <?php
  13. if ($review['Review']['file_id'] != 0) {
  14. echo $html->link($html->image(array('controller' => 'tfiles', 'action' => 'serve',
  15. $review['Review']['file_id'], 'small'),
  16. array_merge(array('alt'=>$review['Review']['name']), $thumbs['review'])),
  17. array('controller' => 'reviews',
  18. 'action' => 'view',
  19. 'rurl' => $review['Url']['url']),
  20. array('escape'=>false));
  21. } else {
  22. echo $html->link($html->image("noimage.jpg"), array('controller' => 'reviews',
  23. 'action' => 'view',
  24. 'rurl' => $review['Url']['url']),
  25. array('escape'=>false));
  26. }
  27. ?>
  28. </td></tr></table></div>
  29.  
  30. </td>
  31. <td class="al">
  32. <div class="name"><?php echo $html->link($review['Review']['name'],array('controller' => 'reviews',
  33. 'action' => 'view',
  34. 'rurl' => $review['Url']['url'])); ?></div>
  35. <p><?php echo $text->truncate($review['Review']['description'], 200, array('exact' => true)) ?></p>
  36.  
  37. </td>
  38. <td>
  39. <div class="stars">
  40.  
  41. <?php
  42. $stars = Set::extract('/CommentsTopic/stars', $review['Comment']);
  43. $rating = 0;
  44. if (count($stars) > 0) {
  45. $rating = round(array_sum($stars) / count($stars));
  46. }
  47. echo $fr->stars($rating);
  48. ?>
  49.  
  50. </div>
  51. <div class="rating">
  52. <?php echo $rating ?>/5
  53. </div>
  54. <center><?php echo $html->link("opinie ({$review['Review']['comment_count']})",
  55. array('controller' => 'reviews',
  56. 'action' => 'view',
  57. 'rurl' => $review['Url']['url']),
  58. array('escape' => false)); ?></center>
  59. </td>
  60. </tr>
  61. </table>
  62. </div></a>
  63. <?php endforeach; ?>
  64. </div>
jaslanin
Dbanie o kolejność to operacja na daynch więc powinna być przeprowadzana w modelu, a nie widoku.

Jeżeli to możliwe to lepiej jest takie rzeczy oczywiście załatwiać na bazie danych. Ale jeżeli nie jest to opcją:

Jeżeli tablica $topReviews jest numeryczna, to robisz to tak:

  1. // $arr - your array
  2. $temp = $arr[15];
  3. unset($arr[15]);
  4. array_unshift($arr, $temp);


jeżeli asocjacyjna to:

  1. $temp = array($key => $array[$key]);
  2. unset($array[$key]);
  3. $array = $temp + $array;
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.