![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 0 Dołączył: 19.09.2003 Skąd: Białystok Ostrzeżenie: (10%) ![]() ![]() |
Mam taki problem. Piszę skrypt głosowania. Użytkownicy dodają wartości, które są dopisywane do tablicy do pliku txt. Mam problem z nadawaniem unikalnego ID dla każdej wartosci dodanej przez uzytkownikow. Wymyśliłem taki sposób, żeby $id w tablicy był zapisywany na końcu. Wygląda to tak:
jakis tekst|autor|godzina|punkty|input_radio|id jakis tekst|autor|godzina|punkty|input_radio|id jakis tekst|autor|godzina|punkty|input_radio|id jakis tekst|autor|godzina|punkty|input_radio|id itd. jak ktoś coś dodaje. Wymyslilem sobie ze tablica jest wczytywana i wyswietlana na stronie. input_radio to oczywiscie takie koleczko ![]()
Nie działało...wyskakiwał error a id zawsze wynosil 1 (bo dalej mam tak, ze jezeli ostatni id = 0 to nadaj mu wartosc 1 i idz dalej). To zrobiłem w ten sposób:
Teraz $id dziala...cos takiego istnieje w ogole, ale zawsze ma wartosc 1. Czyli skrypt nie moze znalezc ostatniego IDa dlatego nadaje mu wartosc 1. Wklejam tu caly kod...moze ktos zauwazy jakas nieprawidlowosc razaca ![]() Probuje te glosowanie zrobic od tygodnia, ale nic nie dam rady zmienic. O co chodzi? ![]()
Prymitywne, ale jestem poczatkujacy. |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
1. Błędy, które "wypluwa" php są bardzo często nieocenioną podpowiedzią. Radzę je czytać. I nie tłumić ich za pomocą @ (usuń to).
2. Cytat(hub3rt @ 2005-09-24 22:14:33)
![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 0 Dołączył: 19.09.2003 Skąd: Białystok Ostrzeżenie: (10%) ![]() ![]() |
file() otwiera plik do tablicy, czyż nie? Ty chyba nie czytałeś mojego posta...
Ten post edytował hub3rt 24.09.2005, 22:55:43 |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Owszem, ale nie posiada modyfikatorów dostępu: a, r, w, ....
1. Usuń @ to php Ci powie co robisz źle; 2. Przeczytaj dokumentację file() i załączone przykłady. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 0 Dołączył: 19.09.2003 Skąd: Białystok Ostrzeżenie: (10%) ![]() ![]() |
1. Tak, usunąłem i nie ma żadnych errorów. Nic mi nie mówi.
2. Przeczytałem, przjerzalem przykłady i dokonalem epokowego odkrycia - funkcja count() liczy linie czyli rozumiem, że poziomo. Ale nie znalazłem skryptu, który umożliwiłby wyświetlenie wartości wybranej komórki. help :/ |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Tablica jest indexowana od zera z tego co mi wiadomo a nie od jednego a od tylu liczy count(). Pozatym nielepiej zastosować end() :?: -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 0 Dołączył: 19.09.2003 Skąd: Białystok Ostrzeżenie: (10%) ![]() ![]() |
Jak pisałem w pierwszym poście używałem end(), ale oto wynik:
Warning: Variable passed to end() is not an array or object in c:/foxserv/www/grypsy2/dodaj.php on line 13 a $id = 1 zawsze...tylko z count() nie było żadnego errora |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 24 Pomógł: 3 Dołączył: 25.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
A skąd jest zmienna $id, gdy $ostatniid > 0?
Po co zapisujesz do pliku <input />? Przepisz kod wykorzystując tablice $_POST, $_GET, .... Pobieranie ostatniego ID nie powinno wyglądać tak?
|
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dwa razy Cię prosiłem, żebyś zajrzał do dokumentacji file(), za pierwszym razem podałem Ci co robisz źle. A Ty mi zarzucasz jeszcze że posta nie czytałem.
Tak jak powiedziałem dwa ray Cie prosiłem i trzeci raz nie zamierzam. Dostajesz ostrzeżenie za niechęć do manuala. Żeby nie było żalu to w spadku dostaniesz jeszcze dwie rzeczy: Odpowiedź: Nie tak:
tylko tak:
( napisałem Ci, że masz złe parametry ) Podpowiedź: Żeby dowiedzieć się co jest źle i jakie błądy generuje php dopisz sobie na początku skryptu:
i pzestań używać @. ----edit---- O widzę, że @Morkai podał juz odpowiedź co jest źle. Nie zmienia to faktu że ostrzeżenie dostajesz. ~mike_mech |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 0 Dołączył: 19.09.2003 Skąd: Białystok Ostrzeżenie: (10%) ![]() ![]() |
(Ja napisalem to na gorze. Zeby lepiej bylo widac te cytaty jeszcze raz wysylam.)
Cytat 2. Przeczytałem, przjerzalem przykłady i dokonalem epokowego odkrycia - funkcja count() liczy linie czyli rozumiem, że poziomo. Ale nie znalazłem skryptu, który umożliwiłby wyświetlenie wartości wybranej komórki. help :/ Cytat Tak jak powiedziałem dwa ray Cie prosiłem i trzeci raz nie zamierzam. Dostajesz ostrzeżenie za niechęć do manuala. Cytat 1. Tak, usunąłem i nie ma żadnych errorów. Nic mi nie mówi. Cytat i pzestań używać @. Więc...nierozumiem Twojej wypowiedzi. Po co udajesz wielkiego bohatera jak nie chcesz, albo nie potrafisz pomóc?! Twoja "odpowiedz w spadku" jest bezuzyteczna, bo pisałeś to w pierwszym swoim poście i wycztalem to z manuala. Po co sie powtarzasz? Dostalem ostrzezenie za to, ze nie doczytujesz moich postow. Nie rozumiesz ich, albo nie chcesz zrozumieć. Wiec jak nie znasz odpowiedzi to po co odpisujesz? Chcesz mieć jak najszybciej 1000 postow?! Czy co? ----edit---- Usunąłem tego posta, którego napisałeś jak niezarejestrowany. Będzie czytelniej ![]() ~mike_mech Ten post edytował mike_mech 25.09.2005, 08:00:48 |
|
|
![]()
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Warning: Variable passed to end() is not an array or object in c:/foxserv/www/grypsy2/dodaj.php on line 13 Dostawałes taki komunikat dlatego że to co przekazywałeś nie było tablicą. count() takiego komunikatu nie wywala bo ona przyjmuje wszystko, ale jak coś nie jest tablicą to zwraca jeden (dlatego tak miałeś). Oznacza to, że źle tworzyłeś tą tablicę. Przede wszystkom źle urzywałeś funkcji file() a dodatkowo możesz mieź złą ścieżkę do pliku (tego nie wiem).Powiedz jak to działa teraz :?:
P.S. To jest na bazie Twojego kodu, ale naprawde powinieneś się przerzucić na tablica superglobalne $_POST, $_GET, ... P.S. 2 Nie martw się - czytam Twoje posty. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 0 Dołączył: 19.09.2003 Skąd: Białystok Ostrzeżenie: (10%) ![]() ![]() |
Ok. Działa nareszcie! Mike_mech...Twoja zmiana nic nie dała, niestety :/ Ale Ociu Twoja rada zadziałała. Wcześniej już używałem count() ale nie było żadnego skutku. Przerobiłem kod Mike_mecha dodając to co napisał Ociu i jest O.K.
![]() [edit] Mam teraz inny problem ![]() 1. laduje plik z tablica 2. rozbijam tablice za pomoca explode() 3. szukam linii numer $id 4. zmieniam wartosc komorki $punkty dodając do niej 1 mam nadzieje, ze jasno wytlumaczylem. Teraz chyba bedzie trudniej...:/ bo to nie bedzie znalezienie ostatniej wartosci tylko tej wybranej! +----------+-----+--------+-------+------------+--+ |jakis tekst|autor|godzina|punkty|input_radio|id| |jakis tekst|autor|godzina|punkty|input_radio|id| |jakis tekst|autor|godzina|punkty|input_radio|id| |jakis tekst|autor|godzina|punkty|input_radio|id| +-----------+-----+--------+-------+------------+-+ przypominam tablice. Mam znalezc wartosc komorki punkty z linii id Ten post edytował hub3rt 25.09.2005, 09:40:39 |
|
|
![]()
Post
#14
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Są dwie metody, zalezne od przechowywania danch:
1. W sytuacji kiedy wartości id sa ułożone po kolei od 1 do n to szukasz, np.: dla id = 10, wartości 9 z tablicy zawierającej wczytany plik (indeksoanie od zera); 2. Jeżeli wartości id są ułozone losowo to możesz: - "przelecieć" ![]() - za pomoca file() i explode() stworzyć tablicę wielowmiarową (prawie to samo co wyżej) ale wyszukać wiersz możemy za pomocą jednej z funkcji do przeszukiwania tablic wielowymiarowych, które znajdziesz pod dokumentacją array_search() wśród komentarzy użytkowników (jest tam kilka). |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 126 Pomógł: 0 Dołączył: 19.09.2003 Skąd: Białystok Ostrzeżenie: (10%) ![]() ![]() |
Tzn. w tej chwili wszystkie id'y są w kolejności dodawania czyli 1, 2, 3, 4, 5, ...itd. ale wkrótce to zmienie. Będą sortowane według liczby pkt. A co do tej tablicy wielowymiarowej to będzie tak, że znajdzie id. Ok, ale ostatecznym tym konkretnym celem jest komórka 'punkty' obok konkretnego id'u
![]() [edit] Proszę o konkretny i szeczógłowy opis rozwiazania. ![]() ![]() ![]() Ten post edytował hub3rt 25.09.2005, 11:42:20 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 13:14 |