Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql]Edycja kolejności linków
Mefiuu
post
Post #1





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

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


Witam. Mam problem. Otóż mam dostępną z panelu administracyjnego opcję przesuwania podstron na stronie (kolejność). Odpowiada za to taki kod:

  1. if (isset($_GET['moveup'])) {
  2.  
  3. if ($_GET['moveup']=='1') {
  4. header('Location: admin.php?menu=yes&view=yes');
  5. }
  6. else {
  7. $order = $_GET['moveup'];
  8. $order2 = $order-1;
  9. $link = mysql_query("SELECT id, order_link FROM menu WHERE order_link='$order'");
  10. $link2 = mysql_query("SELECT id, order_link FROM menu WHERE order_link='$order2'");
  11.  
  12. $link = mysql_fetch_assoc($link);
  13. $link2 = mysql_fetch_assoc($link2);
  14.  
  15. $up = $link['order_link']-1;
  16. $down = $link2['order_link']+1;
  17.  
  18. $up2 = mysql_query("UPDATE menu SET order_link='$up' WHERE id='".$link['id']."'");
  19. $down2 = mysql_query("UPDATE menu SET order_link='$down' WHERE id='".$link2['id']."'");
  20.  
  21. if($up2 && $down2) {
  22. header('Location: admin.php?menu=yes&view=yes');
  23. }
  24. else {
  25. header('Location: admin.php?menu=yes&view=yes');
  26. }
  27. }
  28. }
  29. elseif ((isset($_GET['movedown']))) {
  30. $order = $_GET['movedown'];
  31. $order2 = $order+1;
  32. $link = mysql_query("SELECT id, order_link FROM menu WHERE order_link='$order'");
  33. $link2 = mysql_query("SELECT id, order_link FROM menu WHERE order_link='$order2'");
  34.  
  35. $link = mysql_fetch_assoc($link);
  36. $link2 = mysql_fetch_assoc($link2);
  37.  
  38. $up = $link['order_link']+1;
  39. $down = $link2['order_link']-1;
  40.  
  41. $up2 = mysql_query("UPDATE menu SET order_link='$up' WHERE id='".$link['id']."'");
  42. $down2 = mysql_query("UPDATE menu SET order_link='$down' WHERE id='".$link2['id']."'");
  43.  
  44. if($up2 && $down2) {
  45. header('Location: admin.php?menu=yes&view=yes');
  46. }
  47. else {
  48. header('Location: admin.php?menu=yes&view=yes');
  49. }
  50. }


W każdym razie to działa. Chciałem dodać sobie inną funkcjonalność. Otóż zakładając, że mam np 20 podstron usuwam podstronę o order_link=9 i chcę aby podstrony, które mają większe order_link zostały przeniesione o poziom do góry, tj. np. 10 na 9, 11 na 10, 12 na 11 itd. Skleciłem taki kod:

  1. <?php
  2.  
  3. $order_link = $_GET['delete'];
  4. $delete = mysql_query("DELETE FROM menu WHERE order_link='$order_link'");
  5. $wieksze = mysql_query("SELECT order_link, id FROM menu WHERE order_link>'$order_link'");
  6.  
  7. while($row2 = mysql_fetch_assoc($wieksze)) {
  8. $upd = mysql_query("UPDATE menu SET order_link=order_link-1 WHERE order_link='".$row2['order_link']."'");
  9. }
  10.  
  11. ?>
  12.  


No i tu zaczynają się jaja. Niby raz pisze że usunęło i usuwa a nie przesuwa pozostałych podstron, to drugim razem wyskakuje błąd, a na końcu mam np. 3 podstrony o order_link=5. Nie wiem dlaczego tak się dzieje. Może błąd w kodzie którego nie dostrzegłem ? Proszę o porady.
Go to the top of the page
+Quote Post
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


podmien to
$upd = mysql_query("UPDATE menu SET order_link=order_link-1 WHERE order_link='".$row2['order_link']."'");
na to
$upd = mysql_query("UPDATE menu SET order_link=order_link-1 WHERE id='".$row2['id']."'");
Go to the top of the page
+Quote Post
ADeM
post
Post #3





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


Nie lepiej zrobić:
  1. $aktualizujWieksze = mysql_query("UPDATE menu SET order_link=order_link-1 WHERE order_link > '$order_link'");

Wydaje mi się, że powinno działać ;-)

Ten post edytował ADeM 29.11.2010, 00:33:44


--------------------
Go to the top of the page
+Quote Post
Mefiuu
post
Post #4





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

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


tak więc działa, wycinek kodu CuteOne działa dobrze, tak jak ma działać. Z tym, że już taki kod wcześniej próbowałem i nie hulało ... Ale to może jakaś literówka się wdarła i porzuciłem tą koncepcję. Niemniej jednak dziękuję smile.gif
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 - 20:44