Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Operacje na plikach
Forum PHP.pl > Forum > Przedszkole
Lee
Mam problem z operacjami na plikach, nie kumam o co chodzi z fgets(). Przeczytałem to fgets()[ i w ksiażce "Helion 2005 php i MySQL Tworzenie stron WWW Vademecum profesjonalisty wyd3"

ale nie wiem jak zrobić, żeby
W pliku A mam formularz, który pokazuje zawartośc zmiennych z pliku B (config.php) i jest dobrze, problem sie zaczyna gdy jak zmienie dane i zechcę je wysłać do pliku B to nie wiem jak to zrobić, żeby je tam zapisało na stałe :/

Jak zrobić, żeby przeskakiwało do odpowiedniej linijki z daną zmienną ?
em1X
biggrin.gif fgets pobiera jedną linijkę zawartości z pliku

jak zapisać na stałe:
  1. trzeba pobrac stara wersje z pliku
  2. przerobic tą zawartość wg uznania
  3. wyczyscic plik uzywajac
    1. <?php
    2. fopen('plik.txt', 'w');
    3. ?>
  4. wstawic nowa zawartosc
    1. <?php
    2. fputs($fp, $nowa_wartosc);
    3. ?>
  5. na koncu plik zamknąć.. i tak mamy nowy plik
Lee
no niby tak bym zrobił, ale w tym pliku mam jeszcze inne dane, których niechcę kasować...
em1X
Przeciez napisałem zebys pobrał stare dane, przerobił i wstawił z powrotem? Kto ci kaze wszystko kasować ?
Lee
Z teog co wiem fputs() jest innym zapisem fwrite() a fwrite() zapisuje nowy ciag znaków jako zmienną (chyba da rady skapowac)

Więc jak mój plik config wygląda tak
  1. <?php ob_start();
  2.  
  3. $host = "localhost";
  4. $user = "user";
  5. $pass = "haslo";
  6. $db_name = "nazwa_bd";
  7. $prefix = '';
  8.  
  9. // NIE zmieniać
  10. if (!empty($prefix)){
  11.  $tbl_newsy = $prefix.'newsy';
  12.  $tbl_komentarze = $prefix.'komentarze';
  13.  $tbl_administratorzy = $prefix.'administratorzy';
  14.  $tbl_kategorie = $prefix.'kategorie';
  15.  $tbl_menu = $prefix.'menu';
  16. }
  17. else if (empty($prefix)){
  18. $tbl_newsy = 'newsy';
  19. $tbl_komentarze = 'komentarze';
  20. $tbl_administratorzy = 'administratorzy';
  21. $tbl_kategorie = 'kategorie';
  22. $tbl_menu = 'menu';
  23. }
  24.  
  25. $stopka = '&copy; Copyright 2006 by Lee. All rights reserved.';
  26. // Ile ma pokazywać newsów na stronie głównej
  27. define('ILOSC_WYNIKOW_NA_STRONIE', 10);
  28.  
  29. // Połączenie z bazą danych
  30. $sql = mysql_connect($host, $user, $pass);
  31. mysql_select_db ("$db_name");
  32.  
  33. ?>


to chyba nie da rady pobrać wszystkiego, albo ja nie wiem jak to zrobić :/
Gość
A nie latwiej uzyc fread() w petli while ?
Lee
tzn. jak... questionmark.gif
Gość
http://pl.php.net/fread jest dobry przyklad
Lee
ten przykład:
  1. <?php
  2. $uchwyt = fopen("http://www.przykladowy.com/", "rb");
  3. $tresc = '';
  4. while (!feof($uchwyt)) {
  5. $tresc .= fread($uchwyt, 8192);
  6. }
  7. fclose($uchwyt);
  8. ?>


czy

  1. <?php
  2. $nazwa_pliku = "c:plikijakisobrazek.gif";
  3. $uchwyt = fopen($nazwa_pliku, "rb");
  4. $tresc = fread($uchwyt, filesize($nazwa_pliku));
  5. fclose($uchwyt);
  6. ?>


zrobiłem tym drugim tak
$config = "./config.php";
$tresc = fread($File, filesize($config));
i przewiduje, że w zmiennej $tresc jest cała zawartosc config.php teraz jak zmienić poszczególne zmienne ? wiem młotek zemnie ale tak to bywa :/
Gość
Chwila, bo chyba ci zamotalem z tym fread. Napisz dokladnie co chcesz zrobic.
Czy ja dobrze rozumiem - masz plik A i B. W pliku A robisz include B, i w pliku B masz zmienne, ktorych wartosci chcesz zmienic poprzez plik A i zapisac je z powrotem do pliku B ?
Lee
Tak tylko
1. nie include robie tylko fopen winksmiley.jpg
2. W pliku B są nietylko zmienne ale warunki i funkcja łącząca z bazą danych

pzdr
Gość
To cos mi sie wydaje, ze bedziesz musial uzyc wyrazen regularnych po wczytaniu calej tresci pliku do zmiennej.
Lee
Nierozumiem...
em1X
no nie rozumiesz, bo kombinujesz jak koń pod górę..
po co zapisujesz kod php do plików, które czytasz fopenem

co chcesz zrobic wlasciwie ?
Lee
Mam plik config.php gdzie zapisane są dane które sa potrzebne do połączenia z bazą danych, warunki co ma zrobić jeżeli ejst prefix a kiedy niema, połączenia z BD
w panelu admina mam ustawienia i chcę zeby tam wyświetlalo zawartosc tych zmiennych potrzbenych do połączeniua z BD z mozliwością ich zmiany (w panelu admina)

Tak to wygląda....
em1X
Ale kombinujesz laugh.gif

Jak sie upierasz ze zmiennymi w pliku to utworz sobie tablice swoich zmiennych:
  1. <?php
  2. $ustawienia = array("zmienna1"=>"value", "inna_zmienna"=>"wartosc");
  3. ?>


następnie tą tablice mozna latwo wrzucic do pliku
  1. <?php
  2. function put($fp, &$arr)
  3. {
  4.  $file = fopen($fp, "w");
  5.  fwrite($file, serialize($arr));
  6.  fclose($file);
  7. }
  8.  
  9. // zapisujemy twoją tablice do pliku
  10. put("ustawienia.txt", $ustawienia);
  11. ?>


mozemy wszedzie wczytac taki plik
  1. <?php
  2. function get($fp)
  3. {
  4.  return unserialize(implode("", file($fp)));
  5. }
  6.  
  7. // pobieramy ustawienia
  8. $ustawienia = get("ustawienia.txt");
  9. ?>
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.