Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Edycja kolejności linków
Forum PHP.pl > Forum > Przedszkole
Mefiuu
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.
CuteOne
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']."'");
ADeM
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ć ;-)
Mefiuu
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
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.