Witam
Za zadanie mam zrobić odczyt i zapis do pliku. Główny problem jest w aktualizowaniu danych. Jak ktoś wykona ankietę sprawdzana jest jego płeć, potem wiek i w pliku w odpowiednim miejscu ma zostać wywołana inkrementacja.
Oto mój formularz
<form action="wykresy.php" method="post" id="ankieta"> <input type="radio" name="plec" value="m"> Mężczyzna <br> <input type="radio" name="plec" value="k"> Kobieta <p style="font-size: 20px;"> Wiek: </p> <input type="radio" name="wiek" value="young"> ponieżej 20 <br> <input type="radio" name="wiek" value="adult"> 21-49 <br> <input type="radio" name="wiek" value="older"> powyżej 50 <p> Czy popiera Pan/Pani aborcję? </p> <input type="radio" name="glos" value="tak">Tak <br> <input type="radio" name="glos" value="nie">Nie <br><br> <input type="submit" value=" Wyślij " style="font-size:16px;"> </form>
Php
<?php function zamiana($tekst) { $i = 0; for(;$tekst[$i]!=':';$i++) {} return substr($tekst,0,$i); } function usuwanie_pustych($filename) { $lines = file($filename, FILE_SKIP_EMPTY_LINES); file_put_contents($filename, implode('', $lines)); } $plec = $_POST['plec']; $wiek = $_POST['wiek']; $glos = $_POST['glos']; if($plec == "m") { $plik = fopen('mezczyzna.txt','r'); $i=0; while(!feof($plik)) { $linia = fgets($plik); if(zamiana(trim($linia))==$wiek) break; $i++; } fclose($plik); $zmienna = str_replace(':','',strstr($linia,':')); $dane=file('mezczyzna.txt'); unset($dane[$i]); $dane[3] = "\r\n".$_POST['wiek'].':'.($zmienna+1)."<br>"; $plik_zapis=fopen('mezczyzna.txt','w'); fwrite($plik_zapis,join('',$dane)); fclose($plik_zapis); usuwanie_pustych('mezczyzna.txt'); } else { $plik = fopen('kobieta.txt','r'); while(!feof($plik)) { $linia = fgets($plik); echo $linia; } } ?>
Plik tekstowy wygląda tak:
young:0 <br> older:0 <br> adult:0<br>
I problem jest w tym, że tworzy mi nową pustą linijkę, jeśli wykonam formularz 3 krotnie dla np. Mężczyzny, poniżej 20 lat. I nawet dzięki funkcji usuwanie_pustych() nie jest w stanie pozbyć się tej pustej linijki, co przejawia się na błędy w funkcji zamiana();