![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 31.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Staram się napisać taki niewielski skrypt który by wykonałby poniższe wyliczenie:
Przeszukanie tabeli w bazie w tabeli znajduje się 6 kolumn a użytkownik w innej części całego skryptu wpisuje sześć cyfr (tą część już mam). Dane wpisane przez użytkownika w formularzu zostają zapisane w bazie w tych wlasnie kolumnach oznaczonych L1, l2, l3 ...: przykład: L1 L2 L3 L4 L5 L6 02 12 24 33 38 41 11 13 18 28 31 44 i tak dalej dla dowolnej ilości danych wpisanych przez użytkownika ale tylko w tych 6-u kolumnach (dowolna ilość linii) teraz trik polega na tym żeby nie tylko posortować wyniki w każdej kolumnie ale żeby zwrócić wynik w stylu: Liczb 14 było 34 Liczb 28 było 12 i tak dalej dla każdej wartości znalezionej w tablicy lub może żeby ułatwić dla każdej liczby of 01 do 50. Dodatkowo chciałbym żeby powyższy wynik był zapisany w postaci zmiennej - tak żeby, mógł go użyć później czyli dla przykładu: załóżmy że skrypt posegregował i policzył wynik (ile razy występuje) liczba 10 więc chciałbym żeby istniała taka zmienna na przyklad $wynik10 która przyjęła by wartość ilości wystąpień liczby 10 w tabeli. Ma to sens? Mam nadzieję że rozumiecie o co mi chodzi. Chodzi mi tylko o kawałek skryptu który zróbiłby w skrócie następujące istrukcje: 1. posegregować zawartość tabeli 2. przypisać wyniki zmiennym o nazwach &wynik01, &wynik02, &wynik03 ... do $wynik50, gdzie wynikiem jest ilość wystąpień danej liczby w tabeli . Jesli macie jakieś pytania, bardzo chętnie wyjaśnię wiecej ale myślę że to powinno wystarczyć. Z wyświetleniem i innymi wyliczeniami sobie już poradzę - to będą działania logiczne, dlatego potrzebuję wyniki w zmiennych. Tak mi właśnie przyszło do głowy taka podpowiedź: pętla segregująca zawartość tablicy sprawdzając zawartość mogłaby porównywać każdy z wpisów z liczbami od 1 do 50 i jeśli to co jest sprawdzane dla przykładu jest równe 01 to $wynik01 = $wynik01 + 1; i wtedy na koniec dostanę 50 zmiennych z dokładną szęstością występowania każdej z liczb w pożądanej formie tylko teraz tak, z porównaniem chyba sobie poradzę ale jak sprawdzić każdy element tablicy we wszystkich sześciu kolumnach jednocześnie kończąc w momencie zakońćzenia się kolumny poszczególnej żeby pętla nie wracała do początku i nie robiła tego w nieskończoność? Zgaduję że tu którejś pętli powinienem użyć tylko jak jej użyć żeby zwracała pojedynczą wartość i porównywała ją z każdą z 50u liczb? hmmmm Może zamiast zmiennych można by z wyników zrobić tablicę składający się z 50u elementów? od 1 do 50? wydaje mi się że wtedy kod byłby krótszy , tylko wtedy jak wyświetlić zawartość tej tablicy posegregowaną od najwyższej wartości do najniższej? Coś takiego? http://php.net/manual/pl/function.uasort.php tak sobie pomyślałem że dla uproszczenia można by użyć jednej kolumny zamiast 6-u poniewaz tak czy inaczej będą dane przetważane razem ale wtedy znowu nie mogę danych wyświetlić w kolejności wprowadzania prawda? Ten skrypt jest rozwinięciem tego: Temat: PHPMySQL Sprawdzenie kodu na zapis i wyswietlenie danych z bazy danych Aktualizowałem już tego posta już chyba 10 razy, bardzo proszę o pomoc bo jestem troszkę w kropce. Ten post edytował konradkw 13.02.2012, 23:39:59 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli w tabeli będziesz miał sporo rekordów, to Twój pomysł całkowicie odpada. Do każdego wyliczenia musisz pobierać wszystkie rekordy. Proponowałbym Ci zrobić tabelę na statystyki
Teraz skoro twierdzisz, że jest maksymalnie 50 liczb, to widzę dwa wyjścia: 1. Tabela np. stats, a w niej dwie kolumny (stats_number i stats_value) i 50 rekordów dla każdej możliwej liczby. Przy dodawaniu przez użytkownika cyferek, po prostu sprawdzasz co dodał i uaktualniasz tą tabelę za każdym razem, ktoś wybrał liczbę 2 i 5? Uaktualniasz rekord w tej tabeli
2. Zrobić 50 kolumn + możesz dodatkowe, np. z datą ls_id / ls_date / ls_1 / ls_2 / ls_3 / ls_4 / ls_5 / ls_6 / ls_7 .... i tak do 50 I możesz zrobić terminowe statystyki, kiedy (np danego miesiąca, dnia) było ile liczb wybranych Oczywiście to wymaga od Ciebie więcej, bo musisz pilnować dodawania i usuwania cyferek, ale przynajmniej będzie lżej niż proponujesz (IMG:style_emoticons/default/wink.gif) Jeśli mimo to, chcesz po swojemu, to zostaje Ci wykorzystanie COUNT w zapytaniu (google it) i sprawa w sądzie za zabójstwo bazy danych w przyszłości (IMG:style_emoticons/default/wink.gif) Ten post edytował Daimos 14.02.2012, 01:51:04 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 01:30 |