Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ankieta zapisywana do pliku txt, ankieta nie reaguje
Forum PHP.pl > Forum > Przedszkole
Drokal
Tak jak w temacie, klikam jakieś opcje i nic kurde blade nie chce działać
Bardziej chodzi o to ze jak wybieram jakaś opcje to nie ma reakcji.
Oczywiście wspomnę odrazu ze tworzę na serverze lokalnym.

Oto kod
  1. <?PHP
  2. ini_set( 'display_errors', 'On' );
  3. error_reporting( E_ALL );
  4. ?>
  5. <?php
  6. $ocena = isset($_POST['ocena']);
  7. if ($ocena)
  8. {
  9. print ("Dzięki za oddanie głosu");
  10. print ("Zagłosowałeś/aś na $ocena");
  11. $wartoscprzed = file_get_contents("$ocena.txt");
  12. $wartoscpo= ++$wartoscprzed;
  13. $plik = fopen ("$ocena.txt" , "w+");
  14. flock ($plik,2);
  15. fputs ($plik, $wartoscpo);
  16. flock ($plik, 3);
  17. fclose ($plik);
  18. $odczyt_super = file_get_contents("super.txt");
  19. $odczyt_takise = file_get_contents("takise.txt");
  20. $odczyt_beznadziejny = file_get_contents("beznadziejny.txt");
  21. $suma_glosow = $odczyt_super+$odczyt_takise+$odczyt_beznadziejny;
  22. $procent_super = floor( ($odczyt_super/$suma_glosow)*100);
  23. $procent_takise = floor( ($odczyt_takise/$suma_glosow)*100);
  24. $procent_beznadziejny = floor ( ( $odczyt_beznadziejny/$suma_glosow)*100);
  25. print("<br><br> A oto wyniki ankiety: <br>");
  26. print ("<TABLE>");
  27. print("<TR>");
  28. print ("<TD>Super</TD>");
  29. print ("<TD><img src\"paseczek.gif\" height\"19px\" width=\"$odczyt_super\"/></td>");
  30. print ("<TD>$odczyt_super glosów</TD>");
  31. print ("<TD>[$procent_super %]</TD>");
  32. print ("</TR>");
  33. print("<TR>");
  34. print ("<TD>Taki se</TD><TD><img src\"paseczek.gif\" height\"19px\" width=\"$odczyt_takise\"/></td>");
  35. print ("<TD>$odczyt_takise glosów</TD>");
  36. print ("<TD>[$procent_takise %]</TD>");
  37. print ("</TR>");
  38. print("<TR>");
  39. print ("<TD>Beznadziejny</TD><TD><img src\"ankieta/paseczek.gif\" height\"19px\" width=\"$odczyt_beznadziejny\"/></td>");
  40. print ("<TD>$odczyt_beznadziejny glosów</TD>");
  41. print ("<TD>[$procent_beznadziejny %]</TD>");
  42. print ("</TR>");
  43. print ("</TR><TD COLSPAN=\"3\"> Razem oddano : $suma_glosow głosów. </TD></TR>");
  44. $powrot = isset($_SERVER['HTTP_REFERER']);
  45. print ("<TR><TD COLSPAN=\"3\"> Powrót do ankiety: <A href=\"$powrot\" TITLE=\"Wstecz!\"> wstecz</a></TD></TR>");
  46. print ("</TABLE>");
  47. }
  48. else
  49. {
  50. print ("Jak podoba Ci sie strona?<br>");
  51. print ("<TABLE>");
  52. print ("<FORM action=\"ankieta.php\" METHOD=POST");
  53. print ("<TR>");
  54. print ("<TD>Jest super</TD>");
  55. print ("<TD><input type=\"radio\" value\"super\" name=\"ocena\"><br></TD>");
  56. print ("</TR>");
  57. print ("<TR>");
  58. print ("<TD>Jest taka se</TD>");
  59. print ("<TD><input type=\"radio\" value\"super\" name=\"ocena\"><br></TD>");
  60. print ("</TR>");
  61. print ("<TR>");
  62. print ("<TD>Jest beznadziejna</TD>");
  63. print ("<TD><input type=\"radio\" value\"super\" name=\"ocena\"><br></TD>");
  64. print ("</TR>");
  65. print ("<TR>");
  66. print ("<TD><INPUT TYPE=\"submit\" VALUE=\"Głosujcie!\"></TD>");
  67. print ("<TD><INPUT TYPE=\"reset\" VAlUE=\"Od nowa!\"></TD>");
  68. print ("<TR>");
  69. print ("</FORM>");
  70. print ("</TABLE>");
  71. }
  72. ?>


Odrazu dopowiem ze jeśli w linijce 5 dopisze isset
  1. if ($ocena)

to przeskakuje mi na "następne okienko", tzn z wynikami ankiety ale kurde blade nie moge wrócić, ani tym bardziej wybrać jakiejkolwiek opcji.

Proszę o pomoc
b4rt3kk
  1. $ocena = isset($_POST['ocena']);


Wiesz co zwraca funkcja isset? True or false, tak więc dalsze działania na tej zmiennej, takie jak choćby wybór pliku nie odnoszą takiego skutku jakbyś oczekiwał. Popraw:

  1. $ocena = $_POST['ocena'];
  2. if (isset($_POST['ocena']))


Poza tym w samej ankiecie, wszystkie pola mają value "super", tak ma być? Troszkę zmanipulowana ta ankieta.
nospor
Ty to pisałeś czy sciagnałes skads i zrobiłes swoje poprawki?

O to:
$ocena = isset($_POST['ocena']);
jest bez sensu....
Tak ma byc:
$ocena = isset($_POST['ocena']) ? $_POST['ocena'] : null;
Drokal
@B4rt3kk

Cytat
Wiesz co zwraca funkcja isset? True or false, tak więc dalsze działania na tej zmiennej, takie jak choćby wybór pliku nie odnoszą takiego skutku jakbyś oczekiwał. Popraw:

  1.  
  2. $ocena = $_POST['ocena'];
  3. if (isset($_POST['ocena']))
  4.  


Poza tym w samej ankiecie, wszystkie pola mają value "super", tak ma być? Troszkę zmanipulowana ta ankieta.


Jeśli będę miał taki zapis jak sugerujesz pojawi sie notice:6 linijka kodu.
  1. Notice: Undefined index: ocena in C:\xampp\htdocs\ankieta.php on line 6
  2.  
  3. Co do manipulacji kodu, to kochany musze Ci powiedzieć ze pracuje w sztabie wyborczym pewnego prezydenta, i powiem Ci, tylko Ci sie wydaje ze to jest manipulacja... :]
  4.  
  5. @nospor
  6.  
  7. No to teraz dupa blada, trzeba sie przyznać, kod nie mój, uważam ze najlepszą metoda na nauke to przerabianie tego co jest. Jeśli sie mylę nakieruj mnie na właściwy tor.
  8.  
  9. A co do samego kodu, o ile dobrze rozumiem
  10. [php]$ocena = isset($_POST['ocena']) ? $_POST['ocena'] : null;


Jeśli istnieje zmienna z $_POST ocena, to przypisz jej taka wartość, jeśli nie niech będzie null.
W sumie rada mądra, ale jednak i tak dupa blada nic nie przeskakuje.

Wciąż jestem w trakcie poszukiwań rozwiązania ;]
nospor
Cytat
Jeśli istnieje zmienna z $_POST ocena, to przypisz jej taka wartość, jeśli nie niech będzie null.
Dobrze zrozumiałes

Cytat
uważam ze najlepszą metoda na nauke to przerabianie tego co jest.
Lepiej zacznij od podstaw i zacznij rozumieć co robisz a nie na chybił trafił wstawiasz kody gdzie nie kumasz totalnych podstaw...

Cytat
i tak dupa blada nic nie przeskakuje.
Przestań się bez powodu dupować.
Jak to nie przeskakuje? Wciskasz submit i dalej ci się wyświetla formularz? Niemożliwe. Pokaz kod po zmianach
Drokal
Proszę bardzo oto kod

  1. <?PHP
  2. ini_set( 'display_errors', 'On' );
  3. error_reporting( E_ALL );
  4. ?>
  5. <?php
  6. $ocena = isset($_POST['ocena']) ? $_POST['ocena'] : null;
  7. if (isset($ocena))
  8. {
  9. print ("Dzięki za oddanie głosu");
  10. print ("Zagłosowałeś/aś na $ocena");
  11. $wartoscprzed = file_get_contents("$ocena.txt");
  12. $wartoscpo= ++$wartoscprzed;
  13. $plik = fopen ("$ocena.txt" , "w+");
  14. flock ($plik,2);
  15. fputs ($plik, $wartoscpo);
  16. flock ($plik, 3);
  17. fclose ($plik);
  18. $odczyt_super = file_get_contents("super.txt");
  19. $odczyt_takise = file_get_contents("takise.txt");
  20. $odczyt_beznadziejny = file_get_contents("beznadziejny.txt");
  21. $suma_glosow = $odczyt_super+$odczyt_takise+$odczyt_beznadziejny;
  22. $procent_super = floor( ($odczyt_super/$suma_glosow)*100);
  23. $procent_takise = floor( ($odczyt_takise/$suma_glosow)*100);
  24. $procent_beznadziejny = floor ( ( $odczyt_beznadziejny/$suma_glosow)*100);
  25. print("<br><br> A oto wyniki ankiety: <br>");
  26. print ("<TABLE>");
  27. print("<TR>");
  28. print ("<TD>Super</TD>");
  29. print ("<TD><img src\"paseczek.gif\" height\"19px\" width=\"$odczyt_super\"/></td>");
  30. print ("<TD>$odczyt_super glosów</TD>");
  31. print ("<TD>[$procent_super %]</TD>");
  32. print ("</TR>");
  33. print("<TR>");
  34. print ("<TD>Taki se</TD><TD><img src\"aaa.png\" height\"19px\" width=\"$odczyt_takise\"/></td>");
  35. print ("<TD>$odczyt_takise glosów</TD>");
  36. print ("<TD>[$procent_takise %]</TD>");
  37. print ("</TR>");
  38. print("<TR>");
  39. print ("<TD>Beznadziejny</TD><TD><img src\"ankieta/paseczek.gif\" height\"19px\" width=\"$odczyt_beznadziejny\"/></td>");
  40. print ("<TD>$odczyt_beznadziejny glosów</TD>");
  41. print ("<TD>[$procent_beznadziejny %]</TD>");
  42. print ("</TR>");
  43. print ("</TR><TD COLSPAN=\"3\"> Razem oddano : $suma_glosow głosów. </TD></TR>");
  44. $powrot = isset($_SERVER['HTTP_REFERER']);
  45. print ("<TR><TD COLSPAN=\"3\"> Powrót do ankiety: <A href=\"$powrot\" TITLE=\"Wstecz!\"> wstecz</a></TD></TR>");
  46. print ("</TABLE>");
  47. }
  48. else
  49. {
  50. print ("Jak podoba Ci sie strona?<br>");
  51. print ("<TABLE>");
  52. print ("<FORM action=\"ankieta.php\" METHOD=POST");
  53. print ("<TR>");
  54. print ("<TD>Jest super</TD>");
  55. print ("<TD><input type=\"radio\" value\"super\" name=\"ocena\"><br></TD>");
  56. print ("</TR>");
  57. print ("<TR>");
  58. print ("<TD>Jest taka se</TD>");
  59. print ("<TD><input type=\"radio\" value\"takise\" name=\"ocena\"><br></TD>");
  60. print ("</TR>");
  61. print ("<TR>");
  62. print ("<TD>Jest beznadziejna</TD>");
  63. print ("<TD><input type=\"radio\" value\"beznadziejna\" name=\"ocena\"><br></TD>");
  64. print ("</TR>");
  65. print ("<TR>");
  66. print ("<TD><INPUT TYPE=\"submit\" VALUE=\"Głosujcie!\"></TD>");
  67. print ("<TD><INPUT TYPE=\"reset\" VAlUE=\"Od nowa!\"></TD>");
  68. print ("<TR>");
  69. print ("</FORM>");
  70. print ("</TABLE>");
  71. echo ("pupa, tak Nospor, Twoja pupa");
  72. }
  73. ?>
d3ut3r
Najpierw offtop takie docinki w kodzie są średnio zabawne smile.gif


Teraz do rzeczy, nie wiem czy uruchamiałeś to co napisałeś ale wystarczy spojrzeć w pasek adresu po kliknięciu Głosujcie (lub w źródło strony w okolice <form> i <input type="radio" ) żeby wiedzieć co jest nie tak, jedna rada skoro już musisz mieszać PHP z HTML to lepiej nie utrudniać sobie życia i nie pisać 500 razy print czy echo tylko:

  1. <?php
  2.  
  3. //tutaj kod php
  4. $zmienna='10';
  5. ?>
  6. tutaj kod html możesz też wyświetlać zmienne <?=$zmienna?>
  7. <?php
  8. //tutaj znów jakiś kod php
  9. ?>


Zyska to wtedy na czytelności.
Drokal
@d3ut3r Po pierwsze - Wypisanie pupy w zamyśle autora nie miało być zartem, tylko ewidentnym dowodem dla Nospora ze szukam informacji i nie brzydze sie FAQ.
Po drugie, dzięki za radę wiadomo przyda sie, ale nijak sie nie odnosi do mojego problemu. Czy zapisze to tak czy tak dalej nie będzie działać ;]

A teraz odemnie
Zrezygnowałem z if else i podzieliłem kod na dwa pliki (sam nie wiem czy dobrze zrobiłem)
Teraz przynajmniej przeskakuje pomiędzy dwoma okientami - jest i głosowanie, i pokazanie wyników
Problem w tym ze nie dodaje mi wartości. Nie rozumiem czemu nie działa inkrementacja.

Oto kod głosowania
  1. <?PHP
  2. ini_set( 'display_errors', 'On' );
  3. error_reporting( E_ALL );
  4. ?>
  5. <?php
  6. $ocena = isset($_POST['ocena']) ? $_POST['ocena'] : null;
  7. print ("Dzięki za oddanie głosu <br>");
  8. print ("Zagłosowałes/as na $ocena");
  9. $wartoscprzed = file_get_contents("$ocena.txt");
  10. $wartoscpo= ++$wartoscprzed;
  11. $plik = fopen ("$ocena.txt" , "w+");
  12. flock ($plik,2);
  13. fwrite ($plik, $wartoscpo);
  14. flock ($plik, 3);
  15. fclose ($plik);
  16. $odczyt_super = file_get_contents("super.txt");
  17. $odczyt_takise = file_get_contents("takise.txt");
  18. $odczyt_beznadziejny = file_get_contents("beznadziejny.txt");
  19. $suma_glosow = $odczyt_super+$odczyt_takise+$odczyt_beznadziejny;
  20. $procent_super = floor( ($odczyt_super/$suma_glosow)*100);
  21. $procent_takise = floor( ($odczyt_takise/$suma_glosow)*100);
  22. $procent_beznadziejny = floor ( ( $odczyt_beznadziejny/$suma_glosow)*100);
  23. print("<br><br> A oto wyniki ankiety: <br>");
  24. print ("<TABLE>");
  25. print("<TR>");
  26. print ("<TD>Super</TD>");
  27. print ("<TD><img src\"paseczek.gif\" height\"19px\" width=\"$odczyt_super\"/></td>");
  28. print ("<TD>$odczyt_super glosów</TD>");
  29. print ("<TD>[$procent_super %]</TD>");
  30. print ("</TR>");
  31. print("<TR>");
  32. print ("<TD>Taki se</TD><TD><img src\"aaa.png\" height\"19px\" width=\"$odczyt_takise\"/></td>");
  33. print ("<TD>$odczyt_takise glosów</TD>");
  34. print ("<TD>[$procent_takise %]</TD>");
  35. print ("</TR>");
  36. print("<TR>");
  37. print ("<TD>Beznadziejny</TD><TD><img src\"ankieta/paseczek.gif\" height\"19px\" width=\"$odczyt_beznadziejny\"/></td>");
  38. print ("<TD>$odczyt_beznadziejny glosów</TD>");
  39. print ("<TD>[$procent_beznadziejny %]</TD>");
  40. print ("</TR>");
  41. print ("</TR><TD COLSPAN=\"3\"> Razem oddano : $suma_glosow głosów. </TD></TR>");
  42. print ("<TR><TD COLSPAN=\"3\"> Powrót do glosowania: <A href=\"wyniki.php\" TITLE=\"Wstecz!\"> wstecz</a></TD></TR>");
  43. print ("</TABLE>");
  44.  
  45. ?>




A tutaj kod wyników

  1. <?PHP
  2. ini_set( 'display_errors', 'On' );
  3. error_reporting( E_ALL );
  4. $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  5. ?>
  6. <?php
  7. $ocena = isset($_POST['ocena']) ? $_POST['ocena'] : null;
  8. print ("Dzięki za oddanie głosu <br>");
  9. print ("Zagłosowałes/as na $ocena");
  10. $wartoscprzed = file_get_contents("$ocena.txt");
  11. $wartoscpo= ++$wartoscprzed;
  12. $plik = fopen ("$ocena.txt" , "w+");
  13. flock ($plik,2);
  14. fwrite ($plik, $wartoscpo);
  15. flock ($plik, 3);
  16. fclose ($plik);
  17. $odczyt_super = file_get_contents("super.txt");
  18. $odczyt_takise = file_get_contents("takise.txt");
  19. $odczyt_beznadziejny = file_get_contents("beznadziejny.txt");
  20. $suma_glosow = $odczyt_super+$odczyt_takise+$odczyt_beznadziejny;
  21. $procent_super = floor( ($odczyt_super/$suma_glosow)*100);
  22. $procent_takise = floor( ($odczyt_takise/$suma_glosow)*100);
  23. $procent_beznadziejny = floor ( ( $odczyt_beznadziejny/$suma_glosow)*100);
  24. print("<br><br> A oto wyniki ankiety: <br>");
  25. print ("<TABLE>");
  26. print("<TR>");
  27. print ("<TD>Super</TD>");
  28. print ("<TD><img src\"paseczek.gif\" height\"19px\" width=\"$odczyt_super\"/></td>");
  29. print ("<TD>$odczyt_super glosów</TD>");
  30. print ("<TD>[$procent_super %]</TD>");
  31. print ("</TR>");
  32. print("<TR>");
  33. print ("<TD>Taki se</TD><TD><img src\"aaa.png\" height\"19px\" width=\"$odczyt_takise\"/></td>");
  34. print ("<TD>$odczyt_takise glosów</TD>");
  35. print ("<TD>[$procent_takise %]</TD>");
  36. print ("</TR>");
  37. print("<TR>");
  38. print ("<TD>Beznadziejny</TD><TD><img src\"ankieta/paseczek.gif\" height\"19px\" width=\"$odczyt_beznadziejny\"/></td>");
  39. print ("<TD>$odczyt_beznadziejny glosów</TD>");
  40. print ("<TD>[$procent_beznadziejny %]</TD>");
  41. print ("</TR>");
  42. print ("</TR><TD COLSPAN=\"3\"> Razem oddano : $suma_glosow głosów. </TD></TR>");
  43. print ("<TR><TD COLSPAN=\"3\"> Powrót do glosowania: <A href=\"wyniki.php\" TITLE=\"Wstecz!\"> wstecz</a></TD></TR>");
  44. print ("</TABLE>");
  45.  
  46. ?>



Da sie to tak ogarnąć zeby to było w jednym kodzie?

Tyle z mojej strony.
nospor
var_dump($wartoscprzed);
var_dump($wartoscpo);
co wyświetlają?

zamiast
$plik = fopen ("$ocena.txt" , "w+");
flock ($plik,2);
fwrite ($plik, $wartoscpo);
flock ($plik, 3);
fclose ($plik);

daj poprostu
file_put_contents("$ocena.txt", $wartoscpo);

mortus
Kod (ten HTML) zaprezentowany wyżej, jest nieprawidłowy. W liniach 55, 59, 63 brakuje znaku = po słówku value, w związku z czym wartość nie jest przesyłana.
Drokal
@nospor
Var dump elegacnko pokazuje int i liczbe z pliku txt ocena
Problem w tym ze nie $ocena nie nabiera konkretnej wartości...
Nie wiem o co może chodzić

@mortus
Dzięki, cenna uwaga, jednakże nic to nie zmieniło w funkcjonowaniu formularza. Proszę o wybaczenie za tak lamerski błąd


mortus
Linia 52 w pierwszym listingu jest źle zapisana - znacznik form jest otwarty, a metoda POST nie jest przypisana do formularza. Dane przesyłane są metodą GET. Niemniej oznacza to, że wygenerowany HTML jest nieprawidłowy (method="POST<TR"). Powinno być:
  1. print ("<FORM action=\"index.php\" METHOD=\"POST\">");

Poza tym zastosuj się do rad kolegów:
  1. $ocena = isset($_POST['ocena']) ? $_POST['ocena'] : false;
Drokal
Dziękuje problem rozwiązany ;]
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.