Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z sondą, Błędna aktualizacja wyników
zbig13
post
Post #1





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

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


Mam taki kod:
  1. <?php
  2. $glosowanie = array ('1' => 'Cienka', 'Taka sobie', 'Niezła', 'Fajna', 'Super');
  3. function glosowanie($odp, $glosowanie) {
  4.     if (file_exists(&#092;"wyniki.txt\")) {
  5.         $plik = fopen(&#092;"wyniki.txt\", \"r+\");
  6.         flock($plik, 2);
  7.         $wiersz = fgets($plik, 255);
  8.         $wyniki = explode (&#092;"|\", $wiersz);
  9.         fseek ($plik, 0);
  10.     } else {
  11.         $plik = fopen (&#092;"wyniki.txt\", \"w+\");
  12.         flock ($plik, 2);
  13.     }
  14.     
  15.     for ($i=0; $i<count($glosowanie); $i++) {
  16.         if ($odp == $i+1) { $wyniki[$i]++; }
  17.         fputs($plik, $wyniki[$i]);
  18.         if ($i<count($glosowanie)-1) {fputs($plik, '|');}
  19.     }
  20.     flock ($plik, 3);
  21.     fclose($plik);
  22. }
  23.  
  24. if (isset($_POST['wyslij'])) {
  25.     glosowanie($_POST['odpowiedz'], $glosowanie);
  26. }
  27.  
  28.  
  29.  
  30. ?>
  31. <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
  32.         \"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd\">
  33. <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"pl\" lang=\"pl\">
  34. <head>
  35.     <meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-2\" />
  36.     <title>Tytuł strony</title>
  37. </head>
  38. <body>
  39. <form action=\"<?php $_SERVER['PHP_SELF']; ?>\" method=\"post\">
  40. <input type=\"radio\" name=\"odpowiedz\" value=\"1\" /> Cienka<br />
  41. <input type=\"radio\" name=\"odpowiedz\" value=\"2\" /> Taka sobie<br />
  42. <input type=\"radio\" name=\"odpowiedz\" value=\"3\" /> Niezła<br />
  43. <input type=\"radio\" name=\"odpowiedz\" value=\"4\" /> Fajna<br />
  44. <input type=\"radio\" name=\"odpowiedz\" value=\"5\" /> Super<br />
  45. <input type=\"submit\" name=\"wyslij\" value=\"Glosuj!\" />
  46. </form>
  47. </body>
  48. </html>

Ten skrypt jest odpowiedzialny za aktualizację wyników sondy. Dane przechowywane są w pliku wyniki.txt w formacie: 0|0|0|0|0. Problem w tym, że aktualizowane są wszystkie wyniki oprócz ostatniego. To znaczy, że jeśli na każdą możliwość ktoś oddał głos to wyniki będą wyglądały mniej więcej tak: 11|23|42|98|0 Ten ostatni wynik nie chce się aktualizować! Co jest nie tak?

Ten post edytował zbig13 24.03.2005, 17:31:42
Go to the top of the page
+Quote Post
hesus
post
Post #2





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 24.03.2005

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


W podanym przez Ciebie przykładzie 0 jest wartością szóstą z kolei. Jeśli plik istnieje po prostu zapisujesz do niego, więc - jeśli poprzedni ciąg znaków był dłuższy, od obecnie wprowadzanego - pozostaną na końcu śmieci choćby w postaci takiego zera. Najpewniej byłoby usuwać plik i tworzyć od nowa czyli niezależnie od tego, czy plik istnieje, czy nie używać trybu w+
Go to the top of the page
+Quote Post
zbig13
post
Post #3





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

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


Pomyliłem się przy przepisywaniu i dlatego podałem 6 wartości. Teraz już poprawiłem, ale problem nadal nie jest rozwiązany sad.gif
Go to the top of the page
+Quote Post
hesus
post
Post #4





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 24.03.2005

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


Mimo wszystko spróbuj tak:
  1. <?php
  2.  
  3. $plik = fopen (&#092;"wyniki.txt\", \"w+\");
  4. flock ($plik, 2);
  5. if (file_exists(&#092;"wyniki.txt\")) {
  6. $wiersz = fgets($plik, 255);
  7. $wyniki = explode (&#092;"|\", $wiersz);
  8. fseek ($plik, 0);
  9. }
  10.  
  11. ?>
Go to the top of the page
+Quote Post
Wave
post
Post #5





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 13.01.2005

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


U mnie wszystko działa. :/
Go to the top of the page
+Quote Post
-Guest-
post
Post #6





Goście







To że u Wave'a wszystko działa potwierdza moją teorię. Według mnie chodzi o to że zbig13 ma w swoim pliku jakieś śmiecie i musi go usunąć. Po tym powinno działać.
Fragment kodu, który wpisałem wyżej jest oczywiście niepoprawny - tak jest, jak człek siedzi przed monitorem przez 10 godzin.
Go to the top of the page
+Quote Post
zbig13
post
Post #7





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

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


To w koncu jakie "śmiecie" mam wywalić. Przecież w pliku jest tylko 0|0|0|0|0 a tego chyba nie wyrzuce?
edit: hesus zrobiłem tak jak mi napisałeś i teraz w pliku z wynikami jest: ||1|| tongue.gif

Ten post edytował zbig13 24.03.2005, 19:22:36
Go to the top of the page
+Quote Post
hwao
post
Post #8


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Bardzo stara sonda na plikach ale dziala mozesz podpatrzec ;-)
http://amnesty.scene.pl/~szacool/hwao/php/sonda.zip
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 - 12:51