Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapisywanie liczby głosowań do pliku .txt
Forum PHP.pl > Forum > PHP
eremen
Witam,

  1. if ($_POST['wybor1'])
  2. {
  3. // zmienna $dane, która będzie zapisana
  4. // może także pochodzić z formularza np. $dane = $_POST['dane'];
  5. $dane = $_POST['wybor1'];
  6.  
  7. // uchwyt pliku, otwarcie do dopisania
  8. $fp = fopen("auto1.txt", "r+");
  9.  
  10. // blokada pliku do zapisu
  11. flock($fp, 2);
  12.  
  13. // zapisanie danych do pliku
  14. fwrite($fp, $dane);
  15.  
  16. // odblokowanie pliku
  17. flock($fp, 3);
  18.  
  19. // zamknięcie pliku
  20. fclose($fp);
  21. }


Legenda dla powyższego kodu:
wybor1 - name dla 'radio'
auto1.txt - plik w którym chciałbym zapisywać wynik

Proszę o pomoc, kod oczywiście nie działa jak chcę.

Pozdrawiam.

ehh, aż mi głupio że takie proste a pytam.. wink.gif
już poradziłem sobie tak:
  1. $auto1=file_get_contents("auto1.txt");
  2. $auto1++;
  3. $fileHandler=fopen("auto1.txt","w");
  4. fputs($fileHandler,$auto1);
  5. fclose($fileHandler);


ok, a jak chciałbym teraz zrobić tak że mam więcej opcji wyboru np
  1.  
  2. $auto1=file_get_contents("auto1.txt");
  3. $auto1++;
  4. $fileHandler=fopen("auto1.txt","w");
  5. fputs($fileHandler,$auto1);
  6. fclose($fileHandler);
  7.  
  8. $auto2=file_get_contents("auto2.txt");
  9. $auto2++;
  10. $fileHandler=fopen("auto2.txt","w");
  11. fputs($fileHandler,$auto2);
  12. fclose($fileHandler);


jak zrobić żeby wyniki zapisywały się odpowiednio do tych plików do których trzeba? na podstawie 'radio'
mortus
Niech wartością (value) pola radio będzie nazwa pliku bez rozszerzenia:
  1. <input type="radio" name="sonda1" value="sonda1" />Sonda 1<br />

Wtedy w PHP nazwę pliku otrzymujesz ze zmiennej przesłanej przez formularz:
  1. $filename1 = $_POST['sonda1'] . '.txt';
  2. $auto1 = file_get_contents($filename1);
  3. // ...

Możliwe, że można to nieco zautomatyzować, ale za mało szczegółów znamy.
eremen
muszę zrobić sondę na 10 aut i to ma wyglądać tak, że wynik głosowania na każde auto będzie w osobnym pliku
wartość value ;] a ja myślałem że to zależy od wartości name


  1. $filename1 = $_POST['auto1'] . '.txt';
  2. $auto1 = file_get_contents($filename1);
  3. $auto1++;
  4. $fileHandler=fopen("auto1.txt","w");
  5. fputs($fileHandler,$auto1);
  6. fclose($fileHandler);
  7.  
  8. $filename2 = $_POST['auto2'] . '.txt';
  9. $auto2 = file_get_contents($filename2);
  10. $auto2++;
  11. $fileHandler=fopen("auto2.txt","w");
  12. fputs($fileHandler,$auto2);
  13. fclose($fileHandler);
  14.  


zrobiłem tak i wyskakują mi błędy : Warning: file_get_contents(.txt) [function.file-get-contents]: failed to open stream: No such file or directory in...
mortus
Bo ten skrypt w całości powinien być wykonywany po zatwierdzeniu formularza. Trzeba najpierw sprawdzić, czy formularz został zatwierdzony, ale to są podstawy podstaw.
eremen
wiem że to podstawy ale jestem z php łamaga wink.gif i jeśli mógłbyś to sprawdź proszę to:
  1. if (isset($_POST['glosuj']))
  2. {
  3. $filename1 = $_POST['auto1'] . '.txt';
  4. $auto1 = file_get_contents($filename1);
  5. $auto1++;
  6. $fileHandler=fopen("auto1.txt","w");
  7. fputs($fileHandler,$auto1);
  8. fclose($fileHandler);
  9.  
  10. $filename2 = $_POST['auto2'] . '.txt';
  11. $auto2 = file_get_contents($filename2); <<-w tym miejscu wyskakuje ten sam błąd
  12. $auto2++;
  13. $fileHandler=fopen("auto2.txt","w");
  14. fputs($fileHandler,$auto2);
  15. fclose($fileHandler);
  16. }
mortus
Sprawdź, czy w $_POST jest w ogóle element o indeksie 'auto2' - użyj print_r($_POST). Jeśli nie ma, to znaczy, że użytkownik nie głosował na to auto... trzeba zatem sprawdzić czy użytkownik oddał głos:
  1. if(isset($_POST['auto2']) && $_POST['auto2'] != '') {
  2. // i tutaj odczytujemy i modyfikujemy zawartość pliku
  3. }
eremen
dzięki wielkie, teraz wszystko ładnie działa smile.gif

już robiłem kiedyś formularz ale zwykły, mailowy - tutaj właśnie brakowało mi tego kodu sprawdzającego czy jest zaznaczone 'radio' wink.gif

  1. if(isset($_POST['auto1']) && $_POST['auto1'] != ''){
  2. $filename1 = $_POST['auto1'] . '.txt';
  3. $auto1 = file_get_contents($filename1);
  4. $auto1++;
  5. $fileHandler=fopen("auto1.txt","w");
  6. fputs($fileHandler,$auto1);
  7. fclose($fileHandler);
  8. }
  9.  
  10. ...
  11.  
  12. if(isset($_POST['auto10']) && $_POST['auto10'] != ''){
  13. $filename10 = $_POST['auto10'] . '.txt';
  14. $auto10=file_get_contents("auto10.txt");
  15. $auto10++;
  16. $fileHandler=fopen("auto10.txt","w");
  17. fputs($fileHandler,$auto10);
  18. fclose($fileHandler);
  19. }

a więc mam coś takiego, ale jest jeszcze jeden problem bo w ankiecie w której się zaznacza pola 'radio' zauważyłem że mogę zaznaczyć dowolną ich ilość jakby to był 'checkbox'
nie pomaga nawet jak próbowałem włożyć cały kod w funkcję if ($_POST['glosuj']) <<- 'glosuj' to przycisk submit

ok, metodą kombinuj aż się uda zauważyłem, że dla radio atrybuty name powinny być takie same, podstawy podstaw heh wink.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.