Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomysł na przenoszenie (góra/dół) pozycji w menu na stronie?
Forum PHP.pl > Forum > PHP
miedzna
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?
wipo
Dodaj pozycję w tabeli nazwaną załóżmy 'pozycja' i robisz potem order by pozycja
miedzna
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?
wipo
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
miedzna
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?
wipo
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']);
miedzna
Nie wiem o co chodzi, ale nie działa sad.gif
wipo
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ł?
miedzna
Nie ma błedów, po prostu nic się nie dzieje...
wipo
index.php?article_id=edytuj&positiont=3&article_id=3
A to poprawiłeś?
PeterBass
Możesz zapisywać wartości w tablicy i je sortować przy pomocy instrukcji sort, albo możesz spróbować sortowania bąbelkowego.

Pozdrawiam
PeterBass
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.