Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: operacja na plikach textowych
Forum PHP.pl > Forum > PHP
integer000
mam taki skrypt:

  1. <?php
  2.  
  3. $pole1 = trim($_POST['pole1']);
  4. $pole2 = trim($_POST['pole2']);
  5.  
  6. if(empty($pole1) and empty($pole2)) {
  7.  
  8. // formularz
  9. echo '<form action="" method="post">
  10. link: <input type="text" name="pole2" value="http://" style="width: 200px;" /><br />
  11. nazwa: <input type="text" name="pole1" style="width: 183px;" /><br />
  12. <input type="submit" value="Zapisz" /> <input type="reset" value="Reset" />
  13. </form>';
  14.  
  15. }
  16.  
  17.  if ($pole1 != "") {
  18.  // dane pochodzace z formularza
  19. $dane = $pole1."`".$pole2."n";
  20. // przypisanie zmniennej $file nazwy pliku
  21. $file = "baza.txt";
  22. // uchwyt pliku, otwarcie do dopisania
  23. $fp = fopen($file, "a");
  24. // blokada pliku do zapisu
  25. flock($fp, 2);
  26. // zapisanie danych do pliku
  27. fwrite($fp, $dane);
  28. // odblokowanie pliku
  29. flock($fp, 3);
  30. // zamkniecie pliku
  31. fclose($fp);
  32.  
  33. echo "Dane zostaly zapisane!<br />";
  34. echo "<a href="index.php">Zobacz wpisane dane</a>";
  35.  
  36. }  
  37.  
  38.  
  39. ?>


zapisanie 2 wartości (nazwa i link) w pliku tekstowym

  1. <?php
  2.  
  3. echo "<table border=1 cellspacing=0 cellpadding=0 width=550px>";
  4.  
  5. // wczytanie zawartosci pliku do tablicy
  6. $file = file("baza.txt");
  7. // przechodzimy przez tablice za pomoca petli foreach
  8. foreach($file as $value) {
  9. // rozbijamy poszczególne linie na czesci
  10. $exp = explode("`",$value);
  11. // wyswietlamy rozbity tekst
  12. echo "<tr><td> <a href=$exp[1]>" .$exp[0]. "</a></td></tr>";
  13. }
  14.  
  15. echo "</table>";
  16. ?>

Wyświetlenie tych 2 wartości w tabelce jako odnośnik

  1.  
  2. <?php
  3. $plik = "baza.txt";
  4. $file = file($plik);
  5.  
  6. foreach($file as $value) {
  7.  
  8. $sp = explode("`", $value);
  9. list($nazwa,$link) = $sp;
  10.  
  11.  if($data == $id) {
  12.  
  13. echo '<form name="ksiega" method="post">
  14. <table cellpadding="0" cellspacing="0" width="600" border="1">
  15. <tr>
  16. <td>Nazwa :</td>
  17. <td ><input type="text" name="nazwa" value="'.$nazwa.'" />
  18. </td>
  19. </tr>
  20. <tr>
  21. <td>Link :</td>
  22. <td><input type="text" name="link" value="'.$link.'" />
  23. </td>
  24. </tr>
  25. <tr>
  26. <td>&nbsp;</td>
  27. <td><input class="button" type="submit" value="Zapisz poprawione"/> 
  28. </td>
  29. </tr>
  30.  </table>
  31.  </form>';
  32. }
  33. }
  34. ?>


Ponowne wyświetlenie 2 elemętów w 2 polach takstowych (edycja)

  1.  <?php
  2. $plik = "baza.txt";
  3. $file = file($plik);
  4.  
  5. foreach($file as $value) {
  6.  
  7. $sp = explode("`", $value);
  8. list($nazwa,$link) = $sp;
  9.  
  10. if($data == $id) {
  11.  
  12. $odczyt = "$nazwa`$link`n";
  13. $zapis = "";
  14. $fp = @fopen($plik, "r");
  15. flock($fp,1);
  16. $zaw = fread($fp, filesize($plik));
  17. @fclose($fp);
  18. $po = str_replace($odczyt,$zapis,$zaw);
  19. $fp = @fopen($plik, "w");
  20. flock($fp,2);
  21. fwrite($fp, $po);
  22. @fclose($fp);
  23.  
  24. }
  25. }
  26. ?>


Zapis poprawionych danych (odpowiednio zmodyfikowanych przez urzytkownika)


i w ostatniej części jest błąd ponieważ dane z pól edycyjnych nie zapisują się do pliku tekstowego.
Co jest źle questionmark.gif
MP1
Brak flock($fp,3) w ostatnim kodzie po odczytaniu danych - być może to jest problemem.
integer000
niestety NIE!!

Jak wrzycam flock($fp,3); to mi wywala :Warning: flock(): 6 is not a valid stream resource in c:\usr\krasnal\xxx\xxx\index.php on line 145


trzeba dać: @flock($fp,3); questionmark.gifquestionmark.gif


______________________________________________________________________

i co oznaczają te literki?: $fp = @fopen($plik, "w"); , $fp = @fopen($plik, "r");

chodzi mi o "w" i "r".
w ostatnim kodzie 20 i 15 linijka.
KRECiK00
małpka przed nazwa funkcji - nie zwraca uwagi na bledy smile.gif r i w read i write czyli otwieranie pliku do odczytu i do zapisu
integer000
  1.  
  2. <?php
  3. $plik = "baza.txt";
  4. $file = file($plik);
  5.  
  6. foreach($file as $value) {
  7.  
  8. $sp = explode("`", $value);
  9. list($nazwa,$link) = $sp;
  10.  
  11.  
  12. $odczyt = "$nazwa`$link`n";
  13. $zapis = "";
  14. $fp = fopen($plik, "r");
  15. $zaw = fread($fp, filesize($plik));
  16. fclose($fp);
  17. $po = str_replace($odczyt,$zapis,$zaw);
  18. $fp = fopen($plik, "w");
  19. flock($fp,2);
  20. fwrite($fp, $po);
  21. flock($fp,3);
  22. fclose($fp); ?>


tak to zmodyfikowałem i nadal nie usuwa poczszegulnych rekordów...

r i w read i write, a co oznacza "a" w pierwszym kodzie w 23 wierszu questionmark.gif
Lars
manual manual! fopen" title="Zobacz w manualu php" target="_manual:

a - append (dodawanie na końcu pliku)
integer000
ten manual manual! fopen: nic mi nie muwi...

a co oznaczają cyfry np. flock($fp,2); chodzi mi o 2 np. w 21 linijce ostatniego kodu .
ghostrider
dla windows:

  1. <?php
  2. $handle = fopen ("plik.txt", "wb");
  3. ?>


write - binary
tak samo ab, rb

uzywanie @ aby "stłamsic" błedy moze spowodowac spowolnienie dzialania kodu.

dobra zasada nie @ (małpuj) winksmiley.jpg
integer000
po zastosowaniu <?php $handle = fopen ("plik.txt", "wb"); ?> usuwa mi wszystko z pliku i jeszcze kilka błędów mi wywala. może nieumiem tego zastosoawć...

tutaj w księdze gości 0.3a jest pokazane jak dodawać, usuwać, edytować, i zapisywać. Tyle że tak to jest namotane że niemoge się poapać... Dokładnie jest to w pliku Admin.php Jeśli ktoś chce to moge tutaj zamieścić zarartość tego pliku, tyle że tego jest 703 linijki


i co oznacza ten wiersz: $zaw = fread($fp, filesize($plik)); questionmark.gifquestionmark.gif?
invx
Kiedys to znalazlem, maprawde dobry text o operacjach na plikach, przejrzyj go, a napewno coś Ci sie przda:

Kod:
Kod
zapis11|zapis12|...|zapis1N zapis21|zapis22|...|zapis2N ... zapisM1|zapisM2|...|zapisMN


edycja takiego pliku:
php:

  1. <?php //ustaw sciezke do pliku: $filename = ""; $plik = file($filename); for( $i=0  ;  $i<count($plik)  ;  $i++) {     $wiersz = explode("|",chop($plik[$i]));     for( $j=0   ;  $j<count($wiersz)  ;   $j++)         echo $wiersz[$j]." ";     echo "<BR>"; } ?>



wyciagniecie konkretnego zapisu z pliku
php:
  1. <?php //ustaw sciezke do pliku: $filename = ""; //ustaw numer wiersza: $nr_y = 4; //ustaw numer zapisu w wierszu $nr_x = 2; $plik = file($filename); $wiersz = explode("|" , chop($plik[$nr_y-1])); //szukany zapis: $szukany_zapis = $wiersz[$nr_x-1]; ?>


usuwanie z okreslonej pozycji
php:
  1. <?php //ustaw sciezke do pliku: $filename = ""; //ustaw numer wiersza do usuniecie $to_delete = 4; $plik = file($filename); $plik[$to_delete-1] = ""; $plik = implode("",$plik); $fp = fopen($filename , "w");flock($fp,2); fputs( $fp , $plik); flock($fp,3);fclose($fp); ?>



dodawanie nowego wiersza na poczatek:
php:
  1. <?php //ustaw sciezke do pliku: $filename = ""; //zdefiniuj nowy wiersz $nowy = "..."; $plik = file($filename); $plik = implode("",$plik); $plik = $nowy."rn".$plik; $fp = fopen($filename , "w");flock($fp,2); fputs( $fp , $plik); flock($fp,3);fclose($fp); ?>


dodawanie nowego wiersza na koniec:
php:
  1. <?php //ustaw sciezke do pliku: $filename = ""; //zdefiniuj nowy wiersz $nowy = "..."; $plik = file($filename); $plik = implode("",$plik); $plik .= $nowy."rn"; $fp = fopen($filename , "w");flock($fp,2); fputs( $fp , $plik); flock($fp,3);fclose($fp); ?>



dodawanie nowego wiersza na dowolnej pozycji
php:
  1. <?php //ustaw sciezke do pliku: $filename = ""; //zdefiniuj nowy wiersz $nowy = "..."; //podaj pozycje na ktorej dodac: $nr_y = 4; $plik = file($filename); $plik[$nr_y-1] = $nowy."rn".$plik[$nr_y-1]; $plik = implode("",$plik); $fp = fopen($filename , "w");flock($fp,2); fputs( $fp , $plik); flock($fp,3);fclose($fp); ?>



zmiana zawartosc dowolnego wiersza (aktualizacji rekordu)
php:
  1. <?php //ustaw sciezke do pliku: $filename = ""; //zdefiniuj nowy wiersz $nowy = "..."; //podaj pozycje na ktorej zamienic: $nr_y = 4; $plik = file($filename); $plik[$nr_y-1] = $nowy."rn"; $plik = implode("",$plik); $fp = fopen($filename , "w");flock($fp,2); fputs( $fp , $plik); flock($fp,3);fclose($fp); ?>



zmiana zawartosc dowolnej pozycji w pliku (aktualizacji komorki)
php:
  1. <?php //ustaw sciezke do pliku: $filename = ""; //zdefiniuj nowa wartosc komorki $nowa = "..."; //podaj pozycje wiersza na ktorej zamienic: $nr_y = 4; //podaj numer komorki w wierszu na ktorej zamienic $nr_x = 2; $plik = file($filename); $wiersz = $explode("|" , chop($plik[$nr_y-1])); $wiersz[$nr_x-1] = $nowa; $wiersz = implode("|" , $wiersz); $plik[$nr_y-1] = $wiersz."rn"; $plik = implode("",$plik); $fp = fopen($filename , "w");flock($fp,2); fputs( $fp , $plik); flock($fp,3);fclose($fp); ?>


EDIT:
nie wiem czemu ale sie IPB wysypalo tongue.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.