Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prosty skrypt sondy
Savail
post
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 25.07.2008

Ostrzeżenie: (10%)
X----


Czesc
Niedawno wzialem sie za kurs php i postanowilem stworzyc sobie prosty skrypt sondy w php, lecz jak zawsze mam bledy poczatkujacego i nie wiem jak je rozwiazac ;p. formularz tej sondy to:
  1. <form action="skrypt.php" method="post">
  2. Jakie żarcie lubisz najbardziej?<br/>
  3. <input type=radio name="zarcie" value="pizza">Pizza<br/>
  4. <input type=radio name="zarcie" value="kartofle">Kartofle<br/>
  5. <input type=radio name="zarcie" value="sharma">Sharma<br/>
  6. <input type=submit value="Wyślij">
  7.  

a kod php to:
  1. <?php
  2. $x = 0;
  3. $y = 0;
  4. $z = 0;
  5.  
  6. switch($_POST['zarcie']){
  7. case pizza:
  8. echo "Pizza";
  9. for( $x = 0; $x >= 0; $x++ )
  10. echo $x. " ";
  11. break;
  12. case kartofle:
  13. echo "Kartofle";
  14. for( $y = 0; $y >= 0; $y++ )
  15. echo $y. " ";
  16. break;
  17. case sharma:
  18. echo "Sharma";
  19. for( $z = 0; $z >= 0; $z++ )
  20. echo $z. " ";
  21. break;
  22. }
  23. ?>


Chcialem zeby po zaglosowaniu na np pizza liczba obok pizzy zwiekszala sie o 1, tymczasem nastepuje odliczenie od 0 do nieskonczonosci ;p. Nie wiem takze jak zrobic aby tylko raz uzytkownik mogl zaglosowac z danego ip.
Bede wdzieczny za pomoc!!

Ten post edytował Savail 19.09.2009, 07:50:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Wiktor P.
post
Post #2





Grupa: Zarejestrowani
Postów: 80
Pomógł: 9
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


Cytat(Savail @ 19.09.2009, 08:45:12 ) *
Nie wiem takze jak zrobic aby tylko raz uzytkownik mogl zaglosowac z danego ip.

Może zacznę od końca.
IP osób wchodzących na twoją stronę znajdziesz w tablicy $_SERVER, a konkretnie jest to $_SERVER['REMOTE_ADDR'];
Aby ktoś raz tylko głosował z danego IP powinieneś zapisać IP w bazie danych.
Trzeba mieć jednak pewne rozeznanie, czy ktoś korzysta z stałego, czy zmiennego nr IP.
Możesz to sprawdzić np tutaj:
http://ip.boo.pl/ip.php

Jeśli ktos ma zmienne IP, a ty go zablokujesz, to wystarczy, że zrestartuje sobie połączenie (np. router) aby IP mu się zmieniło,
z kolei jego poprzednie IP może zostać przypisane komuś innemu, kto póżniej połączy się z siecią.

Można też zrobić tak, aby przy użyciu sesji internauta mógł tylko raz głosować, ale po zgaszeniu przeglądarki i uruchomieniu
ponownie sesja znika, więc znów mógłby zagłosować.
Ewentualnie skorzystaj z cookie.

Cytat
Chcialem zeby po zaglosowaniu na np pizza liczba obok pizzy zwiekszala sie o 1

  1.  
  2.  
  3. if ( $_POST['zarcie'] == 'pizza') )
  4. {
  5. $_SESSION['pizza']++;
  6. echo $_SESSION['pizza'];
  7. }
  8.  


I tak z całą resztą.

Cytat
Chcialem zeby po zaglosowaniu na np pizza liczba obok pizzy zwiekszala sie o 1, tymczasem nastepuje odliczenie od 0 do nieskonczonosci ;

Do zwiększania o 1 służy operator inkrementacji ++, do zmniejszania operator dekrementacji --.
Twoja pętla
Cytat
  1. for( $x = 0; $x >= 0; $x++ )

w pierwszym i drugim argumencie dotyczy tej samej liczby, czyli zera - nic dziwnego, że otrzymałeś nieoczekiwany wynik.

Pamiętaj, że do zapisu danych otrzymanych z formularza powinieneś użyć bazy danych, sesji lub cookie.
Bez tego będzie ciężko zliczać wyniki, bo po każdym kolejnym wysłaniu formularza strona ci się przeładuje i zmienne php znikną.
Go to the top of the page
+Quote Post
Savail
post
Post #3





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 25.07.2008

Ostrzeżenie: (10%)
X----


heh ok to jeszcze poczytam w kursie bo o bazach danych jeszcze nic nei wiem ;p, ale dzieki za wskazowki i pomoc smile.gif
Go to the top of the page
+Quote Post
Wiktor P.
post
Post #4





Grupa: Zarejestrowani
Postów: 80
Pomógł: 9
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


Nie ma za co.
Tak się trochę pospieszyłem i chyba nie napisałem wszystkiego co miałem na myśli.
Chodzi mi konkretnie o cookies.

  1. setcookie('pizza', $_SESSION['pizza']);
  2. if ( $_POST['zarcie'] == 'pizza') )
  3. {
  4. $_SESSION['pizza']++;
  5. echo $_COOKIE['pizza'];
  6. }


Cookie odczytasz nawet jak wyłaczysz i włączysz jeszcze raz przegladarkę.
Jest to rozwiązanie tylko dla jednej przegladarki, więc na innej wartość ile razy kliknięto na pizze będzie inna.
Bez bazy danych trochę trudno cokolwiek robić.
Ale to chyba normalna sprawa, że najpierw się zaczyna od czegoś 'lżejszego', czyli cookie, sesje, a potem bierze się za bazy danych.
Podczas treningu pamiętaj, że funkcje setcookie i session_start muszą być wysłane jako pierwsze w skrypcie przed jakąkowliek treścią.
No i nie zapominaj, że przy zabawie z cookie czasami jego prawdziwą wartość poznasz dopiero po odświerzeniu strony (F5).

Go to the top of the page
+Quote Post
Savail
post
Post #5





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 25.07.2008

Ostrzeżenie: (10%)
X----


heh no narazie to wlasnie robilem ta sonde nie na potrzeby strony ale zeby potrenowac php, przy okazji mozna stworzyc sonde bez uzywania bazy danych??
Go to the top of the page
+Quote Post
Wiktor P.
post
Post #6





Grupa: Zarejestrowani
Postów: 80
Pomógł: 9
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


Cytat(Savail @ 19.09.2009, 11:13:56 ) *
mozna stworzyc sonde bez uzywania bazy danych??

Można. Pomijam kwestię cookie.
Zapomniałem właściwie wcześniej wspomnieć o obsłudze plików.
Możesz sobie wyniki zapisywać w plikach tekstowych.
Tu będą przydatne funkcje fopen, fclose, fgetc, fgets, fputs, fread, fwrite i kilka innych.
Z reguły jednak takie rozwiązanie jest mało praktyczne.

Są strony gdzie jest pokazane jak to robić, np:
http://4programmers.net/PHP/FAQ/Jak_zrobić..._na_plikach_txt

Ten post edytował Wiktor P. 19.09.2009, 11:05:11
Go to the top of the page
+Quote Post
Savail
post
Post #7





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 25.07.2008

Ostrzeżenie: (10%)
X----


Dobra, wielkie dzieki za odpowiedzi pomoc i linki raz jeszcze winksmiley.jpg
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 04:28