Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] nadpisywanie w pliku tekstowym, jak nadpisać element pliku txt?
funky_beat
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 24.05.2007
Skąd: Bełchatów

Ostrzeżenie: (10%)
X----


Witam,
Staram się zrobic skrypt nadpisujący w pliku tekstowym wybrane elementy, np. drugi znak każdej linijki teksty w pliku tekstowym.
Wykorzystałem funkcję FWRITE ale cos nie działa.

Napisałem takie cos:



  1. <form action="plik.php" method="POST" ENCTYPE="multipart/form-data">
  2. Wybierz plik
  3. <input type="file" name="plik"/>
  4. <input type="submit" name="submit" value="Go!"/>
  5. </form>
  6.  
  7. <?php
  8. if (isset($_POST['submit'])) {
  9.  
  10. $nazwa=$_FILES['plik']['name'];
  11. $plik = file("$nazwa");
  12. $liczeb= count($plik);
  13.  
  14. if($plik) {
  15.  
  16.  
  17. for ($i=1; $i < $liczeb; $i++)
  18. {
  19. $znakwersu = explode('-',$plik[$i]);
  20. echo "<br>".$znakwersu[1];
  21.  
  22.  
  23. $dane = "abc";
  24.  
  25.  
  26. // przypisanie zmniennej $file nazwy pliku
  27. $file = "test.txt";
  28.  
  29. // uchwyt pliku, otwarcie do dopisania
  30. $fp = fopen($file, "a");
  31.  
  32. // blokada pliku do zapisu
  33. flock($fp, 2);
  34.  
  35. // zapisanie danych do pliku
  36. fwrite($plik[$i], $dane);
  37.  
  38. // odblokowanie pliku
  39. flock($fp, 3);
  40.  
  41. // zamknięcie pliku
  42. fclose($fp);
  43.  
  44. }
  45.  
  46.  
  47. }
  48. }
  49. ?>




Czy możecie mi pomoc w tej sprawie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
funky_beat
post
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 24.05.2007
Skąd: Bełchatów

Ostrzeżenie: (10%)
X----


to co napisał SPEEDY jest najbliższe prawdy aczkolwiek nie do końca, ponieważ tablica na której działam jest zczytywana z pliku txt i wygląda tak:

  1. <?php
  2. 1 85 119 30 26 17 0.5
  3. 1 90 64 61 32 13 0.5
  4. 1 90 47 28 15 18 0.5
  5. 2 93 50 18 25 17 6
  6. 2 91 68 14 20 19 4
  7. 2 90 52 10 17 12 5
  8. 2 90 63 45 24 85 1
  9. 2 95 93 21 27 47 6
  10. 2 84 73 46 32 39 4
  11. ?>


jak widać każdy wers tablicy składa się z wartości oddzielonych spacjami,
sęk w tym że należy pozostawić pierwszą kolumnę bez zmian natomiast a resztę należy przekształcić i nadpisać:

udało mi się wykonać pierwszą część zadania, czyli pozostawienie pierwszej kolumny bez zmian i przekształcenie pozostałych elementów za pomocą skryptu:

  1. <?php
  2. $plik = file("plik.txt");
  3. $liczeb = count($plik);
  4.  
  5.  
  6. for ($i=0; $i < $liczeb; $i++)  {
  7. $wers = explode(" ",$plik[$i]);
  8. echo $wers[0];
  9.  
  10. for ($klasa=1; $klasa < 7; $klasa++)
  11. {
  12.  
  13. $stand=($wers[$klasa]-5)/10;
  14. echo " ".round ($stand, 1);
  15. }
  16. ?>



za pomocą tego skryptu mogę niestety tylko przekształcić wartości w poszczególnych wersach tablicy. po wyświetleniu wygląda to mniej więcej tak:

  1. <?php
  2. 1 8 11.4 2.5 2.1 1.-0.5
  3. 1 8.5 5.9 5.6 2.7 0.-0.5
  4. 1 8.5 4.2 2.1 1.-0.5
  5. 2 8.8 4.5 1.2 1.2 0.1
  6. 2 8.6 6.3 0.9 1.5 1.-0.1
  7. 2 8.5 4.7 0.5 1.2 0.0
  8. 2 8.5 5.4 1.8 -0.4
  9. 2 9 8.8 1.6 2.2 4.2 0.1
  10. 2 7.9 6.8 4.1 2.7 3.4 -0.1
  11. ?>



pierwsza kolumna oraz odstępy między poszczególnymi wartościami są zachowane ale jak to zapisać do pliku ? (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

możliwe że problem tkwi w konstrukcji pętli bo za każdym razem gdy chcę wyciągnąć te wartości z pętli i połączyć je funkcją implode to w pliku nadpisuje się tylko ostatnia wartość każdego wersu

Czy możecie mi pomóc? webdicepl pomożesz? (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

ok, juz sobie poradziłem, tzn taki brzydki sposób troche ale skuteczny, mianowicie:

po wyświetleniu każdego znaku robie zapis do pliku oddzielnego znaku.

webdicepl jeżeli widze ze czytasz post-a , jak masz ładniejszy sposób to napisz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 11:06