Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Zmiana pozycji w menu, z poziomu php
Mefiuu
post
Post #1





Grupa: Zarejestrowani
Postów: 371
Pomógł: 18
Dołączył: 23.11.2008

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


Witam. Usprawniając sobie moją stronę natknąłem się na problem. Otóż chciałem sobie zrobić tak jak jest np. w PHP-Fusion w panelu admina zmianę kolejności wyświetlania podstron. Wzorując się właśnie na PHP-Fusion skleciłem kod, choć go do końca nie rozumiem. Działa tak, że przenosi w górę/dół, ale nie chce "wymienić" pozycji, czyli jeśli mam pole o id='7' a pod nim pole o id='8' i dam "w dół" to nie zamieni mi ich. Kod jest taki (napiszę od razu jak ja go rozumiem).

  1. if (isset($_GET['moveup'])) {
  2. $id = $_GET['moveup']; // 1
  3. $link = mysql_query("SELECT id FROM menu WHERE id='$id'"); // 2
  4. $up = mysql_query("UPDATE menu SET id=id+1 WHERE id='".$link['id']."'"); // 3
  5. $up = mysql_query("UPDATE menu SET id=id-1 WHERE id='$id'"); // 4
  6. }
  7. elseif ((isset($_GET['movedown']))) {
  8. $id = $_GET['movedown']; //5
  9. $link = mysql_query("SELECT id FROM menu WHERE id='$id'"); //6
  10. $up = mysql_query("UPDATE menu SET id=id-1 WHERE id='".$link['id']."'"); //7
  11. $up = mysql_query("UPDATE menu SET id=id+1 WHERE id='$id'"); //8
  12. }


1. Pobieram sobie id z $_GET['moveup'] (przykładowo weźmy 8),
2. W zmiennej link przechowuję pobrane id z bazy danych gdzie id='$id' (czyli tutaj też jest wartość 8),
3. Zmienna up edytuje pole menu na zasadzie dodania do niego 1 w polu o id równym $link['id'] czyli w naszym przypadku 8 (a więc 8+1=9 czyli w sumie na dobrą sprawę to mi powinno przenosić w dół, bo po dodaniu mam większe id),
4. Znów zmienna up edytuje pole menu na zasadzie odjęcia 1 w polu o id równym $id czyli u mnie 8 (a więc 8-1=7).


Dlatego otrzymujemy z id=8 dwa id, id=7 i id=9. W żadnej możliwości nie będą koło siebie, a pole o id=8 zostanie puste. Dlaczego tak się dzieje i jak to poprawić ? Z pewnością źle robię kod i źle go interpretuję ale niestety nie wiem gdzie leży błąd. Mam nadzieję że wytłumaczyłem dość dobrze. Pozdrawiam i dziękuję za pomoc.


edit: zapomniałem dodać punktów 6, 7 i 8 ale to analogicznie jak moveup.

Ten post edytował Mefiuu 1.10.2010, 18:52:14
Go to the top of the page
+Quote Post

Posty w temacie


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 - 06:37