Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sortowanie kategorii
Forum PHP.pl > Forum > Przedszkole
devdev
Witam nie mam pomysłu jak napisać sortowanie kategorii


W bazie mam tabele categories i wniej id /name /sort

prosiłbym o pomoc chciałbym żeby jak się kliknie w gore to kategoria wiadomo idzie w gore a jak kliknie W dol -1 pozycja na dol ale żeby pozycja która była niżej znalazła się wyżej.

Bardzo proszę o pomoc
Pilsener
  1. $pytek = "UPDATE tabela SET order = IF (order = $stary_order, $nowy_order, order + SIGN($stary_order - $nowy_order)) WHERE order >= LEAST($nowy_order, $stary_order) AND order <= GREATEST($nowy_order, $stary_order)";
- wystarczy podstawić odpowiedne zmienne i nazwy pól/tabel do zapytania.
devdev
Ok działa prawie...


nie działa jak jest pozycja np 55 a gdy najbliższa ma numer np 5

  1. <?php
  2. include "mysql.class.php";
  3. $dbconfig = array('server' => 'localhost' , 'user' => 'root' , 'pass' => '' ,'dbname' => 'catsort');
  4. $db = new mysql($dbconfig);
  5.  
  6.  
  7.  
  8. if(isset($_GET['act']) && $_GET['act'] == 'sort')
  9. {
  10. $nowy_order = $_GET['nowy'];
  11. $stary_order = $_GET['stary'];
  12. $pytek = "UPDATE categories SET position = IF (position = $stary_order, $nowy_order, position + SIGN($stary_order - $nowy_order)) WHERE position >= LEAST($nowy_order, $stary_order) AND position <= GREATEST($nowy_order, $stary_order)";
  13. $db->query($pytek);
  14. }
  15.  
  16.  
  17.  
  18. $query = $db->query_fetch('SELECT * FROM categories order by position ASC');
  19. echo '<Table width="300px">';
  20. echo '<tr><td>text</td><td>AKCJA</td></tr>';
  21. foreach($query as $row){
  22.  
  23.  
  24. if($row['position'] == '1') echo $gore = ''; else $gore = 'W gore';
  25. $nowyplus = $row['position']+1;
  26. $nowyminus = $row['position']-1;
  27.  
  28. echo '<tr><td>'.$row['text'].'</td><td>
  29.  
  30. <a href="sort.php?act=sort&nowy='.$nowyminus.'&stary='.$row['position'].'">'.$gore.'</a> &nbsp;&nbsp;
  31. <a href="sort.php?act=sort&nowy='.$row['position'].'&stary='.$nowyplus.'">DOL</a></td></tr>';
  32.  
  33. }
  34. echo '</table';
  35.  
  36. ?>

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.