Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]modyfikacja ankiety
Forum PHP.pl > Forum > Przedszkole
daker
Witam !
robiąc ankiete na moja strone posluzylem sie tym artykulem: http://www.antylameriada.net/wsonda/
chcialbym zmienic jej mozliwosci aby bylo wiecej nic 2 odpowiedzi. w zwiazku z tym zmodyfikowalem formularz:
Kod
<form action="glosuj.php" method="post">
<p>Co sądzisz o gotowanej marchewce?<br />
<input type="radio" name="glos" value="1" />1 odp<br />
<input type="radio" name="glos" value="2" />2 odp<br />
<input type="radio" name="glos" value="3" />3 odp<br />
<input type="radio" name="glos" value="4" />4 odp<br />
<input type="radio" name="glos" value="5" />5 odp<br />
<input type="submit" value="Zagłosuj" />
</p>
</form>

wyniki.txt rowniez:
Kod
0:0:0:0:0

pokaz.php takze:
  1. <?php
  2. $plik = fopen("wyniki.txt", "r");
  3. /*otwarcie pliku z wynikami do odczytu*/
  4.  
  5. $dane = fread($plik, filesize("wyniki.txt"));
  6. /*odczytanie wszystkich bajtów z pliku*/
  7.  
  8. fclose($plik);
  9. /*zamknięcie pliku*/
  10.  
  11. $wyniki = split(":", $dane);
  12. /*rozdzielenie wyników*/
  13.  
  14. $suma = $wyniki[0] + $wyniki[1] + $wyniki[2] + $wyniki[3] + $wyniki[4];
  15. /*zsumowanie wyników*/
  16.  
  17. ?>
  18.  
  19. <table>
  20. <tbody>
  21.  
  22. <tr><td>1 odp:</td><td>
  23. <?php
  24. echo(round($wyniki[0]/$suma * 100));
  25. /*wyświetlenie zaokrąglonej procentowej ilości głosów,
  26. znak procenta jest w następnej linijce*/
  27.  
  28. ?>
  29. %</td><td>
  30. <img src="pasek.gif" alt="pasek.gif"
  31. title="Za marchewką!" height="10" width="
  32. <?php
  33. echo(round($wyniki[0]/$suma * 100));
  34. /*podobnie jak wcześniej, tyle, że wyświetlona liczba będzie
  35. szerokością graficznego paska, w tym wypadku liczba 100 jest
  36. maksymalną szerokością paska */
  37.  
  38. ?>
  39. " /></td></tr>
  40.  
  41. <tr><td>2 odp:</td><td>
  42. <?php
  43. echo(round($wyniki[1]/$suma * 100));
  44. ?>
  45. %</td><td>
  46. <img src="pasek.gif" alt="pasek.gif"
  47. title="Przeciw marchewce!" height="10" width="
  48. <?php
  49. echo(round($wyniki[1]/$suma * 100));
  50. ?>
  51. " /></td></tr>
  52.  
  53. <tr><td>3 odp:</td><td>
  54. <?php
  55. echo(round($wyniki[2]/$suma * 100));
  56. /*wyświetlenie zaokrąglonej procentowej ilości głosów,
  57. znak procenta jest w następnej linijce*/
  58.  
  59. ?>
  60. %</td><td>
  61. <img src="pasek.gif" alt="pasek.gif"
  62. title="Za marchewką!" height="10" width="
  63. <?php
  64. echo(round($wyniki[2]/$suma * 100));
  65. /*podobnie jak wcześniej, tyle, że wyświetlona liczba będzie
  66. szerokością graficznego paska, w tym wypadku liczba 100 jest
  67. maksymalną szerokością paska */
  68.  
  69. ?>
  70. " /></td></tr>
  71.  
  72. <tr><td>4 odp:</td><td>
  73. <?php
  74. echo(round($wyniki[3]/$suma * 100));
  75. /*wyświetlenie zaokrąglonej procentowej ilości głosów,
  76. znak procenta jest w następnej linijce*/
  77.  
  78. ?>
  79. %</td><td>
  80. <img src="pasek.gif" alt="pasek.gif"
  81. title="Za marchewką!" height="10" width="
  82. <?php
  83. echo(round($wyniki[3]/$suma * 100));
  84. /*podobnie jak wcześniej, tyle, że wyświetlona liczba będzie
  85. szerokością graficznego paska, w tym wypadku liczba 100 jest
  86. maksymalną szerokością paska */
  87.  
  88. ?>
  89. " /></td></tr>
  90.  
  91. <tr><td>5 odp:</td><td>
  92. <?php
  93. echo(round($wyniki[4]/$suma * 100));
  94. /*wyświetlenie zaokrąglonej procentowej ilości głosów,
  95. znak procenta jest w następnej linijce*/
  96.  
  97. ?>
  98. %</td><td>
  99. <img src="pasek.gif" alt="pasek.gif"
  100. title="Za marchewką!" height="10" width="
  101. <?php
  102. echo(round($wyniki[4]/$suma * 100));
  103. /*podobnie jak wcześniej, tyle, że wyświetlona liczba będzie
  104. szerokością graficznego paska, w tym wypadku liczba 100 jest
  105. maksymalną szerokością paska */
  106.  
  107. ?>
  108. " /></td></tr>
  109.  
  110. </tbody>
  111. </table>
  112. <p>Ogołem oddano głosów: <?php echo($suma); ?>.</p>

a nie mam pomyslu jak zmodyfikowac glosuj.php
Bardzo prosze o pomoc.
nospor
Cytat
a nie mam pomyslu jak zmodyfikowac glosuj.php
analogicznie
  1. <?php
  2. $plik = fopen("wyniki.txt", "r");
  3. $dane = fread($plik, filesize("wyniki.txt"));
  4. $wyniki = split(":", $dane);
  5. fclose($plik);
  6. if($_POST['glos'] == 1)
  7. $wyniki[0] += 1;
  8. else if ($_POST['glos'] == 2)
  9. $wyniki[1] += 1;
  10. else if ($_POST['glos'] == 3)
  11. $wyniki[2] += 1;
  12. else if ($_POST['glos'] == 4)
  13. $wyniki[3] += 1;
  14. else if ($_POST['glos'] == 5)
  15. $wyniki[4] += 1;
  16.  
  17. else
  18. ;
  19. /*instrukcja dla reszty przypadków, które teoretycznie nie 
  20. powinny nastąpić*/
  21.  
  22. $plik = fopen("wyniki.txt", "w");
  23. flock($plik, 2);
  24. fwrite($plik, "$wyniki[0]:$wyniki[1]:$wyniki[2]:$wyniki[3]:$wyniki[4]:",200);
  25.  
  26. flock($plik, 3);
  27. /*zdjęcie blokady z pliku*/
  28.  
  29. fclose($plik);
  30. /*zamknięcie pliku*/
  31.  
  32. header("Location: pokaz.php");
  33. /*przekierowanie przeglądarki do pliku pokaz.php*/
  34. ?>
daker
dzieki wielkie :]

wystapil kolejny problem

na tej samej stronie jest podany kod
  1. <?php
  2. if (isset($_COOKIE['mojasonda'])) {
  3.  echo("Już głosowałeś!");
  4.  /*warunek sprawdza czy istnieje w przeglądarce ciasteczko o nazwie
  5.    "mojasonda", jeśli tak to nie pozwala na ponowne oddanie głosu*/
  6. }
  7. else {
  8.  /*tutaj dotychczasowa zawartość pliku głosuj.php, 
  9.    ale bez przekierowania, a za nią... */
  10.  setcookie("mojasonda", "glosowalem", time()+ 604800);
  11.  /*to polecenie wysyła do przeglądarki ciasteczko o nazwie "mojasonda"
  12.    i zawartości "glosowalem", ciasteczko będzie ważne 604800 sekund,
  13.    czyli równy tydzień, po tygodniu będzie można znowu glosować*/
  14.  
  15.  header("Location: pokaz.php");
  16. }
  17. ?>

zrobilem tak jak jest napisane ale chociaz glosuj.php wywali "juz glosowales" to i tak zlicza ten głos :/ wie ktos jak to naprawic questionmark.gif
luki100011
Może masz złą kolejność działań.

Z twojego opisu wynika, że najpierw dodajesz głos a dopiero później sprawdzasz czy już brałeś udział w głosowaniu.

Pamiętaj aby najpierw sprawdzać czy brałeś udział w głosowaniu a dopiero później dopisywać głosy!!!
daker
  1. <?php
  2. if (isset($_COOKIE['mojasonda'])) {
  3.  echo("Już głosowałeś!");
  4.  /*warunek sprawdza czy istnieje w przeglądarce ciasteczko o nazwie
  5.    "mojasonda", jeśli tak to nie pozwala na ponowne oddanie głosu*/
  6. }
  7. else {
  8. $plik = fopen("wyniki.txt", "r");
  9. $dane = fread($plik, filesize("wyniki.txt"));
  10. $wyniki = split(":", $dane);
  11. fclose($plik);
  12. if($_POST['glos'] == 1)
  13. $wyniki[0] += 1;
  14. else if ($_POST['glos'] == 2)
  15. $wyniki[1] += 1;
  16. else if ($_POST['glos'] == 3)
  17. $wyniki[2] += 1;
  18. else if ($_POST['glos'] == 4)
  19. $wyniki[3] += 1;
  20. else if ($_POST['glos'] == 5)
  21. $wyniki[4] += 1;
  22.  
  23. else
  24. ;
  25. /*instrukcja dla reszty przypadków, które teoretycznie nie
  26. powinny nastąpić*/
  27.  
  28. $plik = fopen("wyniki.txt", "w");
  29. flock($plik, 2);
  30. fwrite($plik, "$wyniki[0]:$wyniki[1]:$wyniki[2]:$wyniki[3]:$wyniki[4]:",200);
  31.  
  32. flock($plik, 3);
  33. /*zdjęcie blokady z pliku*/
  34.  
  35. fclose($plik);
  36. /*zamknięcie pliku*/
  37.  
  38. setcookie("mojasonda", "glosowalem", time()+ 604800);
  39.  /*to polecenie wysyła do przeglądarki ciasteczko o nazwie "mojasonda"
  40.    i zawartości "glosowalem", ciasteczko będzie ważne 604800 sekund,
  41.    czyli równy tydzień, po tygodniu będzie można znowu glosować*/
  42.  
  43. header("Location: pokaz.php");
  44. /*przekierowanie przeglądarki do pliku pokaz.php*/
  45. }
  46. ?>


juz poprawione, sam doszedlem do tego, poprostu zapomnialem o else tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.