Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql] Kolejność bloków menu
Lee
post 12.11.2006, 12:59:51
Post #1





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


Mam moduł bloków menu i gdy jedynie je przesuwam wszystko jest ok, ale gdy skasuje jakiś np. ze środka to już wszystko się rozwala :/

Tak przesuwam blok w górę (w doł pdobonie)
  1. <?php
  2. public function Up($id) {
  3. global $tbl_menu;
  4. $this -> query = mysql_query("SELECT * FROM $tbl_menu WHERE id='$id' LIMIT 1");
  5. while ($this -> result = mysql_fetch_assoc($this -> query)) {
  6. $up = $this -> result['order'];
  7. $position = $this -> result['position'];
  8. }
  9. $order = $up - 1;
  10. $this -> query = mysql_query("SELECT * FROM $tbl_menu WHERE `order`='$order' AND `position`='$position' LIMIT 1");
  11. while ($this -> result = mysql_fetch_assoc($this -> query)) {
  12. $down = $this -> result['order'];
  13. $id_down = $this -> result['id'];
  14. }
  15. $this -> query = mysql_query("UPDATE $tbl_menu SET `order`='$down' WHERE id='$id' LIMIT 1");
  16. $this -> query = mysql_query("UPDATE $tbl_menu SET `order`='$up' WHERE id='$id_down' LIMIT 1");
  17. header ('Location: admin.php?mod=menu');
  18. }
  19. ?>


a tak kasuję blok
  1. <?php
  2. public function Delete($id) {
  3. global $tbl_menu;
  4. echo 'Czy na pewno chcesz usunąć to menu ? (<a href="admin.php?mod=menu&act=delete&confirm=yes&id='.$id.'">Tak</a> | <a href="admin.php?mod=menu">Nie</a>)<br />';
  5. if ($_GET['confirm'] == 'yes') {
  6. @$this -> query = mysql_query("DELETE FROM $tbl_menu WHERE id='$id' LIMIT 1") or die (_MYSQL_ERROR_3 .''. mysql_error());
  7. echo 'Menu zostało usunięte ! <a href="admin.php?mod=menu">Powrót</a>';
  8. }
  9. }
  10. ?>

co powinienem zmienić/dodać ? próbowałem po skasowaniu danej pozycji pozostałe zmniejszyć ale nie działało dobrze (może coś źle robiłem, ale kodu już niestety nie mam :/)


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
wipo
post 12.11.2006, 13:45:45
Post #2





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


Nie działa poprawnie bo źle badasz poprzedni link
Ty badasz link mniejszy o 1 od poprzedniego, więc jak usuniesz jakiś to możesz go potem nie znależć.
Spróbuj where id<klikanego_id order bo id lub pozycja desc limit 0,1


--------------------
Go to the top of the page
+Quote Post
Lee
post 12.11.2006, 14:10:28
Post #3





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


A w którym momencie powinienem to wstawić ?


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
wipo
post 12.11.2006, 14:15:44
Post #4





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


Kod

<?php
public function Up($id) {
      global $tbl_menu;
          $this -> query = mysql_query("SELECT * FROM $tbl_menu WHERE id='$id' ");
          while ($this -> result = mysql_fetch_assoc($this -> query)) {
              $up = $this -> result['order'];
              $position = $this -> result['position'];
          }
          $order = $up - 1;
          $this -> query = mysql_query("SELECT * FROM $tbl_menu WHERE position<$position ORDER BY position desc limit 0,1");
          while ($this -> result = mysql_fetch_assoc($this -> query)) {
              $down = $this -> result['order'];
              $id_down = $this -> result['id'];
          }
          $this -> query = mysql_query("UPDATE $tbl_menu SET `order`='$down' WHERE id='$id' LIMIT 1");
          $this -> query = mysql_query("UPDATE $tbl_menu SET `order`='$up' WHERE id='$id_down' LIMIT 1");
          header ('Location: admin.php?mod=menu');
      }
?>


Coś takiego powinno działać


--------------------
Go to the top of the page
+Quote Post
Lee
post 12.11.2006, 14:26:48
Post #5





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


No nie zabardzo, to co chciałem do góry podnieść kolumne "order" ma pustą


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
wipo
post 12.11.2006, 14:35:32
Post #6





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


A pokaż jak masz zrobioną tabelę w bazie bo pewnie nie to zmieniam co trzeba


--------------------
Go to the top of the page
+Quote Post
Lee
post 12.11.2006, 14:37:38
Post #7





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


|id(int)|name(varchar)|content(text)|position(varchar:left/right)|order(int:1-n)|active(int0/1)|
|1|Główne|blabla|left|1|1
|2|Polecam|blabla|left|2|1


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
wipo
post 12.11.2006, 14:43:59
Post #8





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

Ostrzeżenie: (0%)
-----


Kod
$this -> query = mysql_query("SELECT * FROM $tbl_menu WHERE order<$position ORDER BY order desc limit 0,1");

To teraz powinno działać


--------------------
Go to the top of the page
+Quote Post
Lee
post 12.11.2006, 16:47:01
Post #9





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

Ostrzeżenie: (0%)
-----


ok działa, nie zauważyłem, że rodzaj kolumny order to varchar winksmiley.jpg btw. poprawny kod wygląda tak
  1. <?php
  2. $this -> query = mysql_query("SELECT * FROM $tbl_menu WHERE id='$id' LIMIT 1");
  3. while ($this -> result = mysql_fetch_assoc($this -> query)) {
  4. $up = $this -> result['order'];
  5. $position = $this -> result['position'];
  6. }
  7. $this -> query = mysql_query("SELECT * FROM $tbl_menu WHERE `order`<$up AND `position`='$position' ORDER BY `order` DESC LIMIT 1");
  8. while ($this -> result = mysql_fetch_assoc($this -> query)) {
  9. $down = $this -> result['order'];
  10. $id_down = $this -> result['id'];
  11. }
  12. $this -> query = mysql_query("UPDATE $tbl_menu SET `order`='$down' WHERE id='$id' LIMIT 1");
  13. $this -> query = mysql_query("UPDATE $tbl_menu SET `order`='$up' WHERE id='$id_down' LIMIT 1");
  14. header ('Location: admin.php?mod=menu');
  15. ?>


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 19:56