Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pozycja w menu
chomiczek
post 21.02.2006, 16:00:54
Post #1





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


Mam menu, którego kolejność zależy od jednego pola w bazie, tzn. od jego wartości...
Mam w bazie:
Kod
Auto -       Nazwa       - PozMenu
404 - Meble Kuchenne - 1
405 - Meble Młodzieżowe - 2
406 - Sypialnie - 3


Jak powinno wyglądać zapytanie, które zmieni wartość odpowiedniego pola o '++' lub '--' oczywiste jest, że nie może sie powtórzyć pozycja w menu, więc musi nastąpic zmiana wszystkich oznaczeń.

Ten post edytował chomiczek 21.02.2006, 16:01:27


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
hwao
post 21.02.2006, 19:27:23
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




w mysql chyba tego nie zrobisz, chociaz.., ale 2/3 querymi ;]

jezeli podnosisz to musisz liczbe ktora jest wieksza o jeden obnizyc o jeden, jezeli obnizasz to liczbe ktora jest mniejsza o jeden musissz podniesc

W php liczysz te liczby i robisz odpowiednie update
Go to the top of the page
+Quote Post
tiraeth
post 21.02.2006, 20:44:16
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


1. Pobierasz sobie wszystkie rekordy do tablicy
2. Odpowiednio sobie podmieniasz je
3. Usuwasz wszystkie rekordy z bazy danych
3. Wysyłasz pobrane wcześniej i zmienione rekordy do bazy

Tak jest chyba najprościej smile.gif Choć przy wielkiej ilości rekordów może spowodować baardzo długie podmienianie... spróbuj pokombinować z tymi 2/3 zapytaniami smile.gif
Go to the top of the page
+Quote Post
chomiczek
post 22.02.2006, 10:07:08
Post #4





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


Hmm.. rozwiązałem.. zamieszczam na przyszłość jesli ktos by potrzebowała:
  1. <?php 
  2. if ($row['Pozycja']==1) echo 'G';
  3. else { ?>
  4. <a href="index.php?move=<?php echo $row['CategoryId']; ?>,G,<?php echo $row['Pozycja']; ?>">G</a>
  5. <?php } 
  6. if ($row['Pozycja']==$ile[0]) echo ' D';
  7. else { ?>
  8. &nbsp;<a href="index.php?move=<?php echo $row['CategoryId']; ?>,D,<?php echo $row['Pozycja']; ?>">D</a>
  9. <?php } ?>

Pokazuje je na stronie sortują wg ASC więc tak naprawdę kliknięcie w G ma podnieść na stronie o jedną pozycję, ale w bazie zmienia się na $pozycja-1.

A tym kodem robie update pozycji:
  1. <?php
  2. if ($_GET['move']) {
  3. // rozstrzelenie linku
  4. $move = explode(",",$_GET['move']);
  5. $prev = $move[2]-1;
  6. $next = $move[2]+1;
  7.  
  8. if ($move[1]=='D') $gdzie = $move[2]+1;
  9. if ($move[1]=='G') $gdzie = $move[2]-1;
  10.  
  11. $zapytanie = "SELECT * FROM `Category` WHERE `Pozycja`='".$gdzie."' OR `Pozycja`='".$move[2]."' ORDER BY `Pozycja` LIMIT 2";
  12. $odp=mysql_query($zapytanie);
  13. while($wiersz=mysql_fetch_array($odp)) {
  14. if ($wiersz['Pozycja']==$move[2]&&$wiersz['CategoryId']==$move[0]) 
  15. $update = "UPDATE `Category` SET `Pozycja`='".$gdzie."' WHERE `CategoryId`='".$move[0]."' LIMIT 1";
  16. if ($wiersz['Pozycja']==$gdzie) 
  17. $update = "UPDATE `Category` SET `Pozycja`='".$move[2]."' WHERE `CategoryId`='".$wiersz['CategoryId']."' LIMIT 1";
  18. @mysql_query($update);
  19. }
  20. }
  21. ?>


Hmm.. tak właśnie sobie myśle i jest jeden problem z tym skryptem.. jeśli zostanie skasowana jakaś pozycja.. wtedy odstep pomiędzy kolejnymi rekordami będzie np. 2 a nie 1.. póki co to wystarcza dla moich potrzeb, ale pasowałoby to zmienic na przyszlosć.

Ten post edytował chomiczek 22.02.2006, 10:31:03


--------------------
created by chomiczek
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:37