ďťż

[php/mysql]przesuwanie pozycji menu [php/mysql]

       

Podstrony


telcocafe

Witam

moje menu (nawigacja na stronie) opiera się na tabeli. Nazwa linka i ścieżka do jakiej się odnosi przetrzymywane są w tabeli i wyświetlane na stronie. Teraz mam pytanie...jak mogę zmienić kolejność wyświetlania.
Wyświetlam je w ten sposób:
$query = "SELECT * FROM nawigacja "; $wynik = mysql_query($query); while($rekord = mysql_fetch_array($wynik)) { echo "<li><a href='".$rekord['nav_adres']."'>".$rekord[' nav_title']."</a></li>"; }

nie mogę operować na samych ID bo nie są po kolei ze względu na możliwość usuwania i dodawania nowych łączy. Więc jak?



yyy może dodaj do tabeli jeszcze jedno pole, zawierające wyświetlaną kolejność i wedle niego sortuj :P
Ta metoda będzie o tyle dobra, że możesz później spod strony modyfikować wartość i będziesz sobie mógł klikaniem zmieniać kolejność :P

ale jak?

ALTER TABLE `nazwa_tabeli` ADD `nazwa_pola` CHAR(2) NOT NULL;a później tylko
SELECT * FROM `nazwa_tabeli` ORDER BY `nazwa_pola` DESC :)
Użytkownik DJ_ProG edytował ten post 21 luty 2007, 21:01


ale ja się nie pytam jak dodać pole...tylko jak wykorzystać je...no dobra posegreguje sobie i wyświetle wg. pola...ale jak będe chciał przesunąć to co?

Zmieniasz wartość owego dodanego pola.
To, co ma być pierwsze, daj wartość "1", drugiemu "2" itd...
UPDATE `nazwa_tabeli` SET `nazwa_pola`=nowa_pozycja WHERE `ID`=numer_pola_do_edycji

IMO winno chodzić :)
Użytkownik DJ_ProG edytował ten post 21 luty 2007, 21:29
no przeszła mi taka myśl...ale myślałem, że to jak walenie głową w ściane ale skoro nie tylko moja jest to myśl to coś musi w tym być :D
dzięki i pozdrawiam

ponawiam temat bo jest jeden problem...
pole ID to AUTO_INCREMENT....więc jeżeli usuniemy nawigacje potem dodamy i tak kilka razy to może być że w końcu nowe łącze ma id = 35...wiec jak użytkownik sobie poda na którym miejscu ma być dany link to to sie nie zda bo jak wpisze np. 5 to nie porówna to z id...więc nie widze za bardzo rozwiazania do końca

Jeśli chodzi o porównywanie z ID, to zapewne chodzi Ci o edycję wartości spod poziomu strony.
Chyba nie widzisz, jak to można zrobić. Najpierw pobierasz wszystkie wartości, by wyświetlić je na stronie, ale tak, by zawierały id.
Przypuśćmy masz plik zmieniający pozycję, który bierze parametry z GETa. Np. changePos.php?pos=5&id=35
Więc pobierasz z bazy wszystkie wartości i formatujesz je tak, by (np.) link odnosił się do pliku z parametrem ID do zmiany.
Kurcze nie wiem jak wytłumaczyć Ci prościej... Poprostu bieresz z bazy wszystko, ale uwagę kładziesz na ID i używasz go do zmiany pozycji.

hmm kombinuje troche inaczej:

addKolejnosc.php
$zapytanie = mysql_query('SET CHARSET utf8'); $query = "SELECT * FROM nawigacja "; $wynik = mysql_query($query); while($rekord = mysql_fetch_array($wynik)) { echo "<li>".$rekord['nav_title']."<input type='text' name='".$i."' /></li>"; $i++; }

W ten sposob wypisuje inputy zeby podac kolejność...wpisuje się cyfry i tak ustala kolejnosć...przesyłane to jest do kolejnosc.php
$query = "SELECT * FROM nawigacja"; $result = mysql_query($query); $ilosc = mysql_num_rows($result); $item = mysql_fetch_array($result); for($j=1; $j<=$ilosc; $j++) { $query = "UPDATE nawigacja SET nav_sort='$j' WHERE nav_adres=".$item['nav_adres'].""; echo $query; $result = mysql_query($query); }

Problem w tym jest że $item['nav_adres'] daje mi ciagle ta sama wartosc (index.php) a chce żeby z każdym $j przeskakiwał na następny adres z tabeli

edit/ DOBRA ten mój pomysł jest bez sansu...wracam do poczatku

edit2/ Pytanie: Jak pobierac automatycznie nazwy wszystkich inputow niezaleznie od ich nazwa?
Użytkownik Dawid-San edytował ten post 22 luty 2007, 23:13

Jak pobierac automatycznie nazwy wszystkich inputow niezaleznie od ich nazwa?
Poproszę trochę jaśniej ;) Jakoś nie rozumiem...

A co do problemu, podczas pobierania wartości do inputów, w name nie dawaj kolejnej liczby tylko ID :P
I przesuwanie może zrób jak linki.
Kurcze, zobacz jak to jest zrobione w PHP-Fusionie: http://demo.trycms.o.../site_links.php (admin/password) - masz tutaj takie zielone strzałeczki czy pozycjach menu. :)

DJ wpadłem na to własnie wczoraj

siedziałem i zmontowałem

musze go tylko podrasować i porpawić, ale działa w 100% tylko troche wygode poprawić :) np. wstawić <select> zamiast <input> i będzie znacznie wygodniej

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

  • Sitedesign by AltusUmbrae.