Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pozycje menu
danielv13
post 23.07.2007, 19:16:28
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.12.2006

Ostrzeżenie: (10%)
X----


Jak zrobić, aby można było ustawiać pozycje w menu (przesuwać je w górę i w dół)...
Próbowałem kilku metod ale nie działają sad.gif

Moja tabela z menu wygląda mniej więcej tak:

  1. <?php
  2. ID | NAZWA  | LINK  | POZYCJA
  3. 1 | home | index | 1
  4. 2 | forum  | forum | 2
  5. 3 | kontakt | contac | 3
  6. ?>


Jak mogę zamienić np. pozycje 1 z pozycją 2, aby wszystko się nie posypało??
Ma ktoś jakiś prosty kod, ale miał ktoś już taki problem?questionmark.gif

Ten post edytował danielv13 23.07.2007, 19:19:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
TomASS
post 23.07.2007, 20:07:52
Post #2





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


A nie możesz zrobić:
  1. UPDATE tabela SET Pozycja=2 WHERE ID=1;
  2. UPDATE tabela SET Pozycja=1 WHERE ID=2;

?


--------------------
Go to the top of the page
+Quote Post
danielv13
post 23.07.2007, 20:12:31
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.12.2006

Ostrzeżenie: (10%)
X----


TomASS robiłeś już coś takiego?
Bo muszę to zrobić szybko a nie mam żadnego pomysłu dry.gif
Aha i jeszcze bym zrobił z tym update, ale... skąd mam wziąć id elementu wyżej czy niżej?
Beka ze mnie to wiem haha.gif
Go to the top of the page
+Quote Post
tsharek
post 23.07.2007, 20:59:57
Post #4





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

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


Pomyśl. Nie będe pisać gotowego rozwiązania, ale kierunek postępowania (jednego z możliwych):

Mniejsze `id`:
1. Wybieraz `pozycje` z `tabela` o zadanym `id`
2. Wybierasz `idy` mniejsze od danej `pozycji` z kroku 1, sortujesz od maxymalnych i ucinasz limit 1

Pozdrawiam,
tsharek


--------------------
Go to the top of the page
+Quote Post
danielv13
post 23.07.2007, 21:14:43
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.12.2006

Ostrzeżenie: (10%)
X----


tsharek jaśniej się nie da? blink.gif

Może to ktoś napisać, albo podrzucić gotowy skrypt?? PLZ...
sad.gif
Go to the top of the page
+Quote Post
Kicok
post 24.07.2007, 08:01:40
Post #6





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


1. Musisz znać ID linku, który chcesz przemieścić, czyli odnośniki tworzysz mniej więcej w ten sposób:
Cytat
<a href="plik.php?action=move&amp;id=3&amp;direction=up"><img src="strzaleczka_w_gore.gif" alt="up" /></a>
i odczytujesz sobie ID z tablicy $_GET


2. Jeśli przesuwasz link do góry to:
- Pobierasz ID linku który ma największą liczbę w polu pozycja, ale nie większą niż pozycja przesuwanego linku.
Jeśli nie znaleziono nic, to znaczy że przesuwany link jest na samej górze i już z nim nic nie musisz robić
3. Jeśli przesuwasz link na dół to:
- Pobierasz ID linku który ma najmniejszą liczbę w polu pozycja, ale nie mniejszą niż pozycja przesuwanego linku.
Jeśli nie znaleziono nic, to znaczy że przesuwany link jest na samym dole i już z nim nic nie musisz robić


4. Gdy masz już ID linku przesuwanego oraz ID sąsiedniego linku to po prostu zamieniasz ich wartości w polu pozycja


Będą ci potrzebne: MIN(), MAX(), ORDER BY więc http://google.pl i piszesz sobie gotowca ;]

Ten post edytował Kicok 24.07.2007, 08:02:47


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
danielv13
post 24.07.2007, 09:42:56
Post #7





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.12.2006

Ostrzeżenie: (10%)
X----


Cytat(Kicok @ 24.07.2007, 09:01:40 ) *
- Pobierasz ID linku który ma największą liczbę w polu pozycja, ale nie większą niż pozycja przesuwanego linku.
Jeśli nie znaleziono nic, to znaczy że przesuwany link jest na samej górze i już z nim nic nie musisz robić


I już problem sad.gif


Mam pętelke i tak są ustawione linki:
  1. <?php
  2. while ( $row = mysql_fetch_assoc($w) ) {
  3.  
  4. $id = $row['id'];
  5. $title = $row['nazwa'];
  6. $pozycja = $row['pozycja'];
  7.  
  8. echo (" $title <a href='menu.php?co=move&id=$id&gdzie=up'>W góre</a> <a href='menu.php?co=move&id=$id&gdzie=down'>W dól</a> | 
  9. <a href='menu.php?co=del&id=$id'>Usun</a> <a href='menu.php?co=edit&id=$id'>Edytuj</a><br>");
  10. }
  11. ?>


Przykład przesuniecia w góre:

  1. <?php
  2. if ( $co == "move" ) {
  3.  
  4. $id = $_GET['id'];
  5.  
  6. if ( $gdzie == "up" ) {
  7.  
  8. baza_polacz();
  9.  
  10. $w = mysql_query("SELECT MAX(pozcyja)<$id AS poz FROM menu");
  11. ?>

Jak ma wygladac to zapytanie bo w google to sie ch** dowiedziałem sadsmiley02.gif ?
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: 31.07.2025 - 10:55