ďťż

[PHP][MySQL] Pozcyje w menu

       

Podstrony


telcocafe

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:

ID | NAZWA | LINK | POZYCJA 1 | home | index | 1 2 | forum | forum | 2 3 | kontakt | contac | 3

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???

Albo jak zrobić tak, i czy to będzie działało (zamienić się pozycjami)?
UPDATE tabela SET Pozycja=2 WHERE ID=1; UPDATE tabela SET Pozycja=1 WHERE ID=2;



tak, w takim przypadku "zamieniasz" niejako pozycję miejscami. Jeżeli pozycje mogą być nie kolejnymi liczbami np. 1 3 4 to warto by było pozycję wyższą lub niższą do zmiany nie "zgadywać" lecz pobierać (np. "SELECT ..... WHERE id > id_do_zmiany LIMIT 1")

A jakiś praktyczny kod? :/

No przecież już masz kod :-)

Jeszcze tylko zostało Ci to w PHP uporządkować wg pozycji, czyli pobierasz wartość Pozycja wszystkich rekordów i pętlą for wypisujesz Nazwa WHERE Pozycja = $i, gdzie $i to zmienna sterująca w pętli for.




No przecież już masz kod :-)

Jeszcze tylko zostało Ci to w PHP uporządkować wg pozycji, czyli pobierasz wartość Pozycja wszystkich rekordów i pętlą for wypisujesz Nazwa WHERE Pozycja = $i, gdzie $i to zmienna sterująca w pętli for.

przeciez softowanie lepiej zrobic w mysql

Riklaunim, ale z tego co wiem, jak zamienie to sie zamienią... ale co będzie jak usunę???

Capellini po co to sortować?

Ktoś mi podpowiedział, że przy przenoszeniu np. w górę wyciągnąć największe id nie większe od przesuwanego i tak to zamienić... (chyba to tak szło xDD )
Skrypt wywołuje linkiem:
<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>

Mam taki skrypt, ale coś jest źle i nie działa :/ :
if ( $co == "move" ) { $id = intval( $_GET['id'] ); baza_polacz(); $query = mysql_query("SELECT pozycja FROM menu WHERE ( id = $id )"); while ( $rowek = mysql_fetch_assoc($query)){ $pozycja_stara = $rowek['pozycja']; } if ( $gdzie == "up" ) { baza_polacz(); $query_up = mysql_query("SELECT MAX( pozycja ) AS pozycja_2 FROM menu WHERE ( pozycja < $pozycja_stara )"); if( $pozycja_2 === null ) { echo "Pozycja jest na górze"; } else { $query1 = "UPDATE menu SET pozycja = $pozycja_stara WHERE ( pozycja = $pozycja_2 )"; $query2 = "UPDATE menu SET pozycja = $pozycja_2 WHERE ( id = $id )"; } } if ( $gdzie = "down" ) { baza_polacz(); $query_down = mysql_query("SELECT MIN( pozycja ) AS pozycja_2 FROM menu WHERE ( pozycja < $pozycja_stara )"); if( $pozycja_2 === null ) { echo "Pozycja jest na dole"; } else { $query1b = "UPDATE menu SET pozycja = $pozycja_stara WHERE ( pozycja = $pozycja_2 )"; $query2b = "UPDATE menu SET pozycja = $pozycja_2 WHERE ( id = $id )"; } }}

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.