Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pomysł na przenoszenie (góra/dół) pozycji w menu na stronie?
miedzna
post
Post #1





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Witam, próbuję napisać swojego małego CMSka. Zetknąłem się z takim problemem, nie wiem jak przenosić (góra/dół) pozycji w menu? Chodzi o to, że teraz menu jest ładowane według ID, pomyślałem, że powinno być ładowane według jakiegoś innego parametru, który można zmieniać i zmieniając ten parametr można układać pozycje w menu, z tym że nie wiem do końca czy dobrze myślę oraz jak to zrealizować...

Ma ktoś pomysły?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
wipo
post
Post #2





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

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


Dodaj pozycję w tabeli nazwaną załóżmy 'pozycja' i robisz potem order by pozycja


--------------------
Go to the top of the page
+Quote Post
miedzna
post
Post #3





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Cytat(wipo @ 14.11.2006, 11:48:16 ) *
Dodaj pozycję w tabeli nazwaną załóżmy 'pozycja' i robisz potem order by pozycja


No tak, to wiem, tylko teraz pytanie, jak za pomocą jednego kliknięcia w link wykonać na bazie 3 operacje:
1. pobrać nr pozycji menu nad przenoszoną pozycją
2. zmienić tę pozycję o 1 mniej
3. zwiększyć pozycję przenoszonego menu o 1 więcej

no bo tak to by się robiło, prawda?
Go to the top of the page
+Quote Post
wipo
post
Post #4





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

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


Pobierasz pozycję klikniętego ID
Pobierasz ID i pozycję rekordu następnego
Zamienisz pozycję wymienionych ID-ków między sobą.
Nie da się tego zrobić jednym zapytaniem ale nic nie stoi na przeszkodzie aby użyć kilku - jeden po drugim


--------------------
Go to the top of the page
+Quote Post
miedzna
post
Post #5





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Jednak coś mi nie działa, może ktoś sprawdzić co robię nie tak:

kod bazy:
  1. CREATE TABLE articles (
  2. article_id INT NOT NULL AUTO_INCREMENT,
  3. position VARCHAR(3),
  4. title_menu VARCHAR(100),
  5. title_page VARCHAR(150),
  6. tresc TEXT,
  7. filename VARCHAR(100),
  8. wyrownanie CHAR(5),
  9. PRIMARY KEY(article_id)
  10. );


linkiem (link poniżej) przekazuję zmienne:
index.php?article_id=edytuj&positiont=3&article_id=3

i wykonuję na bazie zapytanie:
  1. <?php
  2. if(isset($_GET["positiont"])){
  3. // nadpisuję zmienną position w zakładce nad zakładką przenoszoną do góry
  4. UPDATE articles 
  5. SET position = '$positiont'
  6. WHERE article_id = ('$article_id' - 1)
  7. ");
  8.  
  9. // nadpisuję zmienną position w zakładce przenoszonej
  10. UPDATE articles 
  11. SET position = ('$positiont' - 1)
  12. WHERE article_id = ('$article_id' + 1)
  13. ");
  14. }
  15. ?>


i nie działa...
Aha, menu jest układane według ORDER BY position

co robię nie tak?
Go to the top of the page
+Quote Post
wipo
post
Post #6





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

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


Cytat
index.php?article_id=edytuj&positiont=3&article_id=3

Zobacz co napisałeś
Najpierw do article_id wpisałeś edytuj a potem 3
Zmień albo jedno albo drugie pole

Druga rzecz:
Nie ustawiaj +/- 1 bo jak usuniesz pole ze środka to już będzie byk.
Napisałem wyżej abyś zamieniał pozycję miejscami

Załóżmy że w $article_id jest 3 (position nie musisz przekazywać wystarczy że określisz czy do dołu czy do góry chcesz przenieść)
Kod
// przykład
$wynik=mysql_fetch_array(mysql_query("select position from articules where article_id=".$_GET['article_id']));
$wynik2=mysql_fetch_array(mysql_query("select article_id,position from articules where position<".$wynik['position']." order by position desc limit 0,1"));

mysql_query("update articules set position=".$wynik['position']." where article_id=".$wynik2['article_id']);
mysql_query("update articules set position=".$wynik2['position']." where article_id=".$wynik['article_id']);


Ten post edytował wipo 15.11.2006, 11:09:53


--------------------
Go to the top of the page
+Quote Post
miedzna
post
Post #7





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Nie wiem o co chodzi, ale nie działa sad.gif
Go to the top of the page
+Quote Post
wipo
post
Post #8





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

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


Cytat(miedzna @ 15.11.2006, 13:17:35 ) *
Nie wiem o co chodzi, ale nie działa sad.gif

A może jakieś błędy byś zaprezentował?


--------------------
Go to the top of the page
+Quote Post
miedzna
post
Post #9





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Nie ma błedów, po prostu nic się nie dzieje...
Go to the top of the page
+Quote Post
wipo
post
Post #10





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

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


index.php?article_id=edytuj&positiont=3&article_id=3
A to poprawiłeś?


--------------------
Go to the top of the page
+Quote Post
PeterBass
post
Post #11





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 7.03.2011

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


Możesz zapisywać wartości w tablicy i je sortować przy pomocy instrukcji sort, albo możesz spróbować sortowania bąbelkowego.

Pozdrawiam
PeterBass
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 Aktualny czas: 21.08.2025 - 14:44