[PHP]Prosta ankieta |
[PHP]Prosta ankieta |
10.08.2012, 15:09:41
Post
#1
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 1 Dołączył: 4.08.2012 Ostrzeżenie: (10%) |
witam no wiec w php jestem poczatkujacy. w kursie online przerobilem ostatnio temat o ciasteczkach. po wchlonieciu troche teorii chcialem przetestowac jak to wyglada w praktyce wiec zrobilem ankiete. sklada sie ze strony w html i podstrony w php. tutaj skrypty:
<html> Wybierz odpowiedz <form action="ankieta.php" method="post" > <input type="radio" name="wybor" value="1">A<br/> <input type="radio" name="wybor" value="2">B<br/> <input type="radio" name="wybor" value="3">C<br/> <input type="submit" value="OK" /><br/> </html> oraz w php: <?php function oddaj_glos() { $wybor=$_POST['wybor']; if ($wybor==1) A++; elseif ($wybor==2) B++; else C++; } define("A",0); define("B",0); define("C",0); if(isset($_COOKIES['glos_oddany'])) echo "Juz glosowales. Mozesz glosowac co 24h"; else setcookie('glos_oddany','1',time()+3600*24); oddaj_glos(); echo A; echo B; echo C; ?> 1. wyswietla mi blad Parse error: syntax error, unexpected T_INC in /users/michat34/www/ankieta.php on line 6. co moze byc jego przyczyna? 2. czy to jak zapisalem inkrementacje zmiennej jest poprawne? a jak nie to jak zapisywac inkremetacje stałej... 3. ...oraz jezeli jest jakis bardziej komfortowy sposob i bezpieczniejszy do przechowywania danych niz stałe to nie obrazilbym gdybyscie mi go podali. moze byc sama nazwa funkcji a ja juz sobie reszte wygugluje. jak pisalem jestem dopiero poczatkujacy 4. w instrukcji z if jezeli jest ciastko to wywali komunikat, nie zrobi funkcji i pokaze wyniki. jezel nie ma ciastka to zrobi funkcje i pokaze wyniki. czy to jest poprawnie zapisane? moze instrukcje po else powinem wziac w { i }? pozdrawiam Ten post edytował michat34 10.08.2012, 19:59:20 |
|
|
10.08.2012, 15:33:29
Post
#2
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) |
Stała jest STAŁA - nie można jej zmienić. Do zmiennych wartości używa się zmiennych.
W tym wypadku najlepsza byłaby tablica:
oddaj_glos() w twoim kodzie jest ZAWSZE wywoływane, działa to tak:
Ja preferuję tworzenie klamr w klauzulach if/else/elseif, nawet, gdy zawierają jedną instrukcję - wygląda czytelniej i łatwo coś dodać. Jeśli chcemy zapisywać te klauzule krótko, mamy 'ternary operator'. Ten post edytował greycoffey 10.08.2012, 15:33:39 |
|
|
10.08.2012, 19:58:58
Post
#3
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 1 Dołączył: 4.08.2012 Ostrzeżenie: (10%) |
ok dziekuje Ci za zwrocenie uwagi na klamry. a co do tablicy to czy te zmienne nie beda sie zerowac przy kazdym wczytaniu strony?
|
|
|
10.08.2012, 20:09:08
Post
#4
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) |
Tak. Najprościej samemu sprawdzić
|
|
|
10.08.2012, 20:23:13
Post
#5
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 1 Dołączył: 4.08.2012 Ostrzeżenie: (10%) |
hm okej ale chyba cos pomieszałem, gdzie zrobilem bład?
<?php function oddaj_glos() { $wybor=$_POST['wybor']; if ($wybor==1) ++$opcje[1]; elseif ($wybor==2) ++$opcje[2]; else ++$opcje[3]; } $opcje = array( '1' = 0; '2' = 0; '3' = 0; ); if(isset($_COOKIES['glos_oddany'])) { echo "Juz glosowales. Mozesz glosowac co 24h"; } else { setcookie('glos_oddany','1',time()+3600*24); oddaj_glos(); } echo "A = $opcje[1]"; echo "B = $opcje[2]"; echo "C = $opcje[3]"; ?> tresc bledu: Parse error: syntax error, unexpected '=', expecting ')' in /users/michat34/www/ankieta.php on line 14 |
|
|
10.08.2012, 20:24:36
Post
#6
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) |
Popatrz, jak ja zdefiniowałem tablicę, do tego musisz jakoś ją przekazać do funkcji, słowa-klucze: global, przekazywanie przez referencję.
|
|
|
10.08.2012, 20:28:00
Post
#7
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 1 Dołączył: 4.08.2012 Ostrzeżenie: (10%) |
fakt juz poprawilem tablice, myslalem ze pisales szybko na kolanie ale dzieki : P a co do slow kluczy to juz patrze co tam pisza w internetach
|
|
|
10.08.2012, 20:31:38
Post
#8
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) |
myslalem ze pisales szybko na kolanie ale dzieki Hahaha Nie mogłem się powstrzymać.@michat34: kod w postach umieszczaj w odpowiednich tagach (tak jak zrobił greycoffey), a nie dawaj boldem. -------------------- |
|
|
10.08.2012, 20:32:52
Post
#9
|
|
Grupa: Zarejestrowani Postów: 200 Pomógł: 1 Dołączył: 4.08.2012 Ostrzeżenie: (10%) |
no co czasami sa tacy : D
ok poprawie sie ; ) EDIT: czy dałem poprawnie te referencje? bo juz sie cos zmienilo, dodaje mi wartosc przy wybraniu opcji i pokazuje ale nadal 2 rzeczy nie chodza. 1. po oddaniu glosu moge oddac drugi, czyli dalej nie działa cookie. 2. po oddaniu glosu za A, pokazuje mi A = 1 B = 0 C = 0, ale gdy cofne sie i zaglosuje za B to pokaze A = 0 B = 1 C = 0. zapewne cos zle zrobilem z ta referencja
Ten post edytował michat34 10.08.2012, 21:31:14 |
|
|
10.08.2012, 21:58:32
Post
#10
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) |
Te głosy nie są nigdzie zapisywane Jako, że dziś mam przypływ dobroci:
Funkcja oddaj_glos nei ma w sumie sensu - sprawdzasz czy $wybor == 1, jesli tak, inkrementujesz $opcje[1] etc. Wystarczyłoby ++$opcje[$wybor]; Tworzysz plik dane.txt, wpisujesz do niego w każdej linii ilość głosów, czyli na początek (mamy np. 4 opcje): Kod 0 0 0 0
Powinno działać, a jeśli nie albo tak, przeczytakj to anyway: Włącz wyświetlanie błędów, oraz poziom raportawania na taki, aby wyświetlał E_NOTICE. Znajdziesz o tym dużo informacji w internecie. Chodzi o to, aby kod:
Zwracał Ci błąd E_NOTICE, a nie wyświetlał pustą stronę. Jeśli napiszesz kolejny post, a jednak nie będziesz miał włączonego raportowania E_NOTICE, Bóg zabije jednego kotka |
|
|
Wersja Lo-Fi | Aktualny czas: 18.04.2024 - 14:58 |