![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 11.06.2009 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Witajcie,
Z góry mówię, że jestem totalnie początkujący w php, ale się nie poddaję ![]() Założenie jest takie, żeby na pytanie były 2 możliwości odpowiedzi. Skrypt ma za zadanie zliczać głosy i po oddaniu głosu wyświetlić wynik głosy na tak i nie. Po kilku dniach prób!!!, ocieraniu potu z czoła, korzystania z dziesiątków forów i postów, porad profesjonalistów i znachorów php - wymodziłem coś takiego - działa, ale jest totalnie siermiężne: formularz (przyciski tak i nie): skrypt dodający do pliku tak.txt lub nie.txt liczbę 1 po naciśnięciu odpowiedniego przycisku:
Jest może jakiś zgrabniejszy sposób na napisanie tego skryptu?. Szczególnie próbowałem inkrustować zmienną $liczbatak++ (lub $liczbanie++), ale zapisywało w pliku txt i wyświetlało coś takiego: id #3. O co chodzi? I sorry za zawracanie gitary:). Z góry dzięki, Pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 34 Dołączył: 7.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Poległeś na etapie HTML. Jeżeli nie masz możliwości użycia MySQL, to możesz zrobić co następuje. Po pierwsze stwórz jeden <form>, w nim dwa radio buttony do wyboru, których value to odpowiednio 0 i 1.
Twój plik powinien mieć formę np: A|B Gdzie: A - to liczba wszystkich głosów (zwiększana po każdym wywołaniu skryptu) B - liczba głosów na nie (A-B = ilość głosów na tak) Jeżeli w pliku będzie: 10|3, to używasz na jego zawartości funkcji explode i operujesz na uzyskanych w ten sposób danych. Jeżeli masz możliwość postawienia skryptu na php5, to używaj file_put_contents i file_get_contents zamiast serenady fopen, fwrite etc. Pozdrawiam Ten post edytował DiH 22.02.2010, 20:19:40 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 11.06.2009 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Dzięki stary,
teraz przechodzę w fazę testowań - napiszę wyniki. Pierwsze co mi jednak przychodzi do głowy to pytanie, a co się stanie jeśli będzie do wyboru więcej opcji? np. pięć? Nie uśmiecha mi się odejmować od A-(b+c+d+e+...+n), ale najpierw przetestuję ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 286 Pomógł: 29 Dołączył: 5.04.2007 Skąd: Rymanów Zdrój/Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
podałeś możliwości TAK i NIE, więc nie rozumiem, dlaczego ma działać dla 5.
Wtedy możesz sobie po prostu zrobić A|B|C|D|E i zapisywać wszystkie opcje. Suma wszystkich to będzie liczba 'głosowań'. -------------------- Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh Darti piotrekkr Bez nich wiele bym nie zrobił. Dzięki im za to! |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 11.06.2009 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Witajcie, DiH zarobiłeś u mnie browca za pokazanie mi funkcji explode i resztę.
Co do większej ilości opcji to po przetestowaniu metody nie mam pytań i wątpliwości:). Ogólnie podoba mi się bardzo i polecam innym. W necie jednak podawali często i gęsto tą starszą metodę z fwrite etc. Oto moje rozwiązanie (działa) :
Poza tym jest jeszcze sprawa utworzenia pliku suma.txt, tzn. założyłem sytuację, że tego pliku nie ma... i chciałbym, żeby skrypt go utworzył ![]() Użyłem do tego funkcji fopen, a dokładniej: fopen($file, 'r+'), a potem dopisałem do niego wartość: 0/0. Problem jest w tym, że kiedy usunę plik suma.txt do sprawdzenia, wywala mi coś taki komunikat: Warning: fopen(suma.txt) [function.fopen]: failed to open stream: No such file or directory in E:\wamp\www\temporary\explode\index.php on line 21 (21- to fopen). ale jednocześnie zapisuje 0/0 do pliku, ale beznadziejnie to wygląda... Znacie może jakieś inne sposoby utworzenia pliku txt bo w googlach faszerują fopen... Z góry dzięki. Ten post edytował ats2008 23.02.2010, 22:50:35 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim jeżeli jakiś plik otwierasz za pomocą fopen(...), to powinieneś go zamknąć za pomocą fclose(...). Może to jest przyczyna problemu, ale głowy za to nie dam?
EDIT: Sprawdziłem to jeszcze raz i okazuje się, że funkcja file_get_contents($filename) zwraca false, jeżeli nie znajdzie pliku o nazwie $filename. Z kolei funkcja file_put_contents($filename, $content) sama otwiera plik, zapisuje zawartość i zamyka plik, w związku z czym nie ma potrzeby otwierania pliku za pomocą fopen(...). Poprawiony kod:
Ten post edytował mortus 24.02.2010, 09:16:05 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 11.06.2009 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Dzięki mortus, chyba na browary nie wyrobię
![]() Najprostsze rozwiązania są najlepsze, Twoje rozwiązanie ze sprawdzeniem pliku txt bardzo mi się podoba. Po co kombinować z tworzeniem nowego, jak można to obejść ![]() Teraz kod wygląda cacy. Ogólnie, nie mam więcej pytań, temat do zamknięcia. Pozdrawiam! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.08.2025 - 23:23 |