![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 410 Pomógł: 5 Dołączył: 25.01.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Nie wiem czy będę umiał to wytłumaczyć, ale się postaram: Obecnie w atbeli ułożone są rekordy, które są wyświetlane w kolejności ich dodania. No i teraz tak: Cytat $query = 'INSERT INTO progsy(nazwa, prod, licz) VALUES ("'.$_POST['nazwa'].'" , "'.$_POST['prod'].'", 0)'; Tak jest teraz. Jeśli jednak zmienię (a raczej dodam) wpis na taki: Cytat $query = 'INSERT INTO progsy(nazwa, prod, licz) VALUES ("'.$_POST['nazwa'].'" , "'.$_POST['prod'].'", 0) ORDER BY licz DESC'; to niby jest OK, bo chcę mieć wartości w kolejności malejącej. Ale po lewej stronie tabeli mam kolumnę, gdzie znajduje się $id każdego rekordu. Więc wraz z sortowaniem w kolejności malejącej nie jest "poukładane" wg kolejności rosnącej tzw liczba pojedyncza (Lp.) Troche zamotalem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale chyba wiadomo o co chodzi... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Zgodnie z teorią naz danych ( i praktyką zresztą też ) fizyczna kolejnośc rekordów, a nawet pól nie ma żadnego znaczenia.
W ogóle nie jest istotne jak serwer bazy sobie to poukłada. Istotne jest to jak to potem wyjmiesz. Nie skupiaj sie na odpowiednim włożeniu do bazy bo to nie ma znaczenia. jeżeli potem będziesz chciał sortować, to posortujesz w zapytaniu SELECT i to jak chceszs - rosnąco, malejąco, wg. jednego pola, wg. dwóch ... INSERT nie ma znaczenia, SELECT owszem. Ten post edytował mike_mech 26.01.2005, 22:10:37 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 410 Pomógł: 5 Dołączył: 25.01.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat("mike_mech") Istotne jest to jak to potem wyjmiesz. Zgoda. Tylko jak to wyjąć? W tabeli mam 4 kolumny: id (auto), nazwa, prod, licz Więc moim skromnym zdaniem nie ma z czego wyjąć tego o czym mowa - sortowanie jest już wg $id (kolejność dodania), ale jak chcę w kolejności malejącej to rozsypuje się kolejność $id. Nie musi byćwyświetlane id kazdego rekordu - ważne jest, by przy każdym sortowaniu względem licz była taka sama kolejność Lp. GG 1541788 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 6.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
A to id używasz do czegoś, czy tylko ma ładnie wyglądać jako lp? Bo w tabeli, jeżeli jest dodawane automatycznie to tylko podczas sortowania po id będzie w kolejności (no i w takich przedziwnych wypadkach jak dane były dodawane celowo tak, żeby juz były w kolejnosci wg jakiegoś pola). Jeżeli ma tylko ładnie wyglądać to dodaj sobie liczbę porządkową niezależnie od id i tyle.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 24.02.2004 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
roobik - nie wiem czy dobrze Cię rozumiem, ale
Możesz wyjmować z bazy różnie sortując SELECT * FROM progsy ORDER BY id DESC //malejąco SELECT * FROM progsy ORDER BY id ASC //rosnąco zmienia sie tylko DESC i ASC. Poczytaj więcej: http://www.home.pl/support/434 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 410 Pomógł: 5 Dołączył: 25.01.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat("Arkadyjczyk") A to id używasz do czegoś, czy tylko ma ładnie wyglądać jako lp? Na razie id nie jest używane jako takie. W przyszłości będzie mi potrzebne, by sprzęgnąć ze sobą dwie (albo trzy) tabele. Cytat("Arkadyjczyk") Jeżeli ma tylko ładnie wyglądać to dodaj sobie liczbę porządkową niezależnie od id i tyle. No i w tym właśnie problem. Oto kawałek kodu:
i zamiast właśnie tej linii: Cytat .'<td width="20">'.$id['id'].'</td>' chcę zrobić Lp. Pomożecie? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) UPDATE yenk wiem już tak robiłem, ale źle mnie zrozumiałeś. OK, założmy mam taką tabelę: $id nazwa prod licz -------------------------------------- 1 progr1 prod1 22 2 progr2 prod2 31 3 progr3 prod 3 16 . . . w momencie, gdy robię SELECT * FROM progsy ORDER BY id DESC to otrzymuję właśnie to powyżej. Ale zamiarem moim jest: Lp. nazwa prod licz -------------------------------------- 1 progr2 prod2 31 2 progr1 prod1 22 3 progr3 prod 3 16 Nie musi się nawet wyswietlac $id. Codzi , żeby licz było DESC i dodatkowo wprowadzona została numeracja Lp.. Bez tej numeracji stosując sortowanie licz DESC oraz wyświetlając $id otrzymuję: $id nazwa prod licz -------------------------------------- 2 progr2 prod2 31 1 progr1 prod1 22 3 progr3 prod 3 16 Już bardziej dokładnie nie potrafię wyjaśnić... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Ten post edytował roobik 27.01.2005, 14:02:56 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 24.02.2004 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
No to muszę być inny, aby nie rozumieć. Zrób tak jak mówił Arkadyjczyk i zmień kod. Załóżmy, że dodajesz sobie kolumne o nazwie LP, w której zapisujesz zawsze nr większy od poprzedniego i po kłopocie. A później robisz tak:
.'<td width="20">'.$lp['lp'].'</td>' Zresztą, widzę, że masz problemy więc pokażę Ci jak masz zapisywać nr o 1 większy. Mam nadzieję, że już sobie poradzisz.
Powodzenia! |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 410 Pomógł: 5 Dołączył: 25.01.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
... i tu jest właśnie problem - w przypadku głosowania na któryś program również dodaje się jeden wiersz (rekord)... ale pusty! Robiłem podobnie jak mi napisałeś tyle , że marnym rezuiltatem.
Teraz mam kilka przykładowych rekordów - przy nich, nie dość, że nie ma kolejności Lp to jeszcze bez sensu dodają się rekordy przy głosowaniu. Jak widaćto nie taka prosta sprawa .... inaczej nie pisałbym na Forum... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 20:34 |