Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pierwszy skrypt :), Odczyt/ zapis do pliku
chou
post 13.02.2006, 22:58:04
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 16.12.2005

Ostrzeżenie: (0%)
-----


Witam!

Zaczełem dzisiaj pracę z php, *już wcześniej próbowałem, ale mi nie wychodziło mad.gif *

No cóż pierwszy srypt gotowy, do czego może się przydać nie wiem tongue.gif
A więc:
Skrypt sprawdza czy plik istnieje, jeżeli istnieje to sprawdza czy istnieją w nim jakieś informacje,..
Jeżeli nie istnieją zadne informacje w pliku, to tworzy '@dzisiejszą/aktualną' datę.

Jeżeli plik nie istniał to tworzy nowy plik z nową datą

Jestem ciekawy jak to wygłąda w oku znającego się php`owca winksmiley.jpg
Czy coś robię źle, itp.

Dzięki za zainteresowanie

może się komuś przyda

  1. <?php
  2.  
  3. $plik = "C:\\......\\time.txt"; #http:\\www.myhomepage.pl\costam.php
  4.  
  5.  
  6. if(file_exists($plik)) {
  7. print "plik istnieje<br>";
  8.  
  9. $plik = fopen("time.txt", "r");
  10. while ($txtinfo = fscanf($plik, "%s\t%s\t%s\n")) {
  11.  list ($data) = $txtinfo;
  12. }
  13. if (empty($data)) {
  14. print "Data Nie istnieje zostala utworzona nowa data<br>";
  15. $pliksave = fopen('time.txt', 'a+', 1);
  16. $text = date("d-m-y");
  17. fwrite($pliksave, $text);
  18. } else {
  19. print "istnieje data<br>";
  20. }
  21. fclose($plik);
  22. } else  {
  23. print "plik nie istnieje<br>";
  24. print "zostl utworzony nowy plik z nowa data<br>";
  25. $pliksave = fopen('time.txt', 'a+', 1);
  26. $text = date('d.m.y')."/".date('H:i:s');
  27. #albo:
  28. # $text="\n Używał=$HTTP_USER_AGENT "."\n IP=$REMOTE_ADDR"."\n Przybył ze strony =$HTTP_REFERER\n".date('d')."-".date('M')."-".date('Y')."/".date('h').":".date('i')."\n\n";
  29. fwrite($pliksave, $text);
  30. }
  31. fclose($plik);
  32. print "to sa informacje z pliku: $data<br>";
  33.  
  34. ?>


p.s.: wydaje mi się, że nie wszystko jest tak jak powinno.

można na końcu dodać
  1. <?php
  2.  
  3. $plik = fopen("time.txt", "r");
  4. while ($txtinfo = fscanf($plik, "%s\t%s\t%s\n")) {
  5.  list ($data) = $txtinfo;
  6. print "to sa informacje z pliku: $data<br>"; # to jest print z lini 32
  7. }
  8. fclose($plik);
  9.  
  10. ?>

wtedy będzie zawsze na końcu odczytywał nowe / po zmianie informacje z pliku.

Ten post edytował chou 13.02.2006, 23:00:09
Go to the top of the page
+Quote Post
TomASS
post 13.02.2006, 23:07:50
Post #2





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Może "prawdziwym pehapowcem" nie jestem ale coś napisze smile.gif

To tak: ogólnie nie jest źle, trzeba troszkę nawyków nabrać:
1. Jeśli masz jedną instrukcję po elese, if, while itp.. to możesz napisać:
  1. <?php
  2.  
  3. else {
  4. print "istnieje data<br>";
  5. }
  6.  
  7. ?>

Ale możemy prościej napisać:
  1. <?php
  2.  
  3. else print "istnieje data<br>";
  4.  
  5. ?>


2. Możesz zamiast prinf używać echo:
  1. <?php
  2.  
  3. print "Data Nie istnieje zostala utworzona nowa data<br>";
  4. echo "Data Nie istnieje zostala utworzona nowa data<br>";
  5.  
  6. ?>

Nie wiem dlaczego, ale tak jakoś lepiej to wygląda tongue.gif

3. Ponoć nieco szybciej:
  1. <?php
  2.  
  3. print "to sa informacje z pliku: $data<br>";
  4.  
  5. ?>

Jeste w ten sposób:
  1. <?php
  2.  
  3. echo "to sa informacje z pliku: ".$data."<br>";
  4.  
  5. ?>


Powodzenia smile.gif


--------------------
Go to the top of the page
+Quote Post
Neojawor
post 13.02.2006, 23:19:20
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 2.12.2005
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Cytat
3. Ponoć nieco szybciej:

najszybciej to jest tak:
  1. <?php
  2. echo 'to sa informacje z pliku: '.$data.'<br>';
  3. ?>

dlatego, że jeśli masz cudzysłów, to php szuka w nim wartości zmiennej, a jeśli masz apostrof, to nie.
Go to the top of the page
+Quote Post
dooshek
post 14.02.2006, 00:21:31
Post #4





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Trójmiasto

Ostrzeżenie: (0%)
-----


Po pierwsze: wciecia, ladne formatowanie kodu powoduje, ze pozniej ktos oprocz ciebie (a i tobie tez pewnie to ulatwi) bedzie w stanie to przeczytac i... zrozumiec.

Staraj sie oddzielac bloki funkcjonalne kodu pojedynczymi odstepami (enterami), dzieki temu kod stanie sie bardziej przejrzysty i blokowy.

Ktos tu radzil, ze jest lepiej nie uzywac klamr {} - radze naprawde ich uzywac zawsze - czesto sie okazuje, ze pozniej dopisujac cos do kodu zapominasz o nich i masz blad gotowy...

Ogolnie proponuje zapoznac sie z ktorymis zasadami kodowania (np. z PEARa) i sie do nich stosowac (odpowiednie wciecia, odpowiednie formatowanie kodu, odpowiednie nazywanie zmiennych/funkcji/metod). Chodzi o to, ze jesli zaczynasz to masz duuuze szanse sie dobrze nauczyc i ladnie pisac kod. Jesli od poczatku to zlejesz to pozniej bedziesz mial problemy z przystosowaniem...

Pisz komentarze! Zapoznaj sie z PHPDoc i dokumentuj swoj kod. Na poczatku jest to bardzo trudne ale znowu, jak sie teraz nauczysz to pozniej bedziesz stosowal. Pojedyncze komentarze zaczynajace sie od // tez sa mile widziane szczegolnie przed kawalkami kodu w ktorych robisz jakies czary i z ktorych bezposrednio nie wynika co tam robisz.

To moja interpretacja Twojego kodu winksmiley.jpg

  1. <?php
  2.  
  3. $plik = "C:\\......\\time.txt"; #http:\\www.myhomepage.pl\costam.php
  4.  
  5. if (file_exists($plik)) {
  6. print "plik istnieje<br>";
  7.  
  8. $plik = fopen("time.txt", "r");
  9.  
  10. while ($txtinfo = fscanf($plik, "%s\t%s\t%s\n")) {
  11. list ($data) = $txtinfo;
  12. }
  13.  
  14. if (empty($data)) {
  15. print "Data Nie istnieje zostala utworzona nowa data<br>";
  16.  
  17. $pliksave = fopen('time.txt', 'a+', 1);
  18. $text = date("d-m-y");
  19. fwrite($pliksave, $text);
  20. } 
  21. else {
  22. print "istnieje data<br>";
  23. }
  24.  
  25. fclose($plik);
  26. } 
  27. else {
  28. print "plik nie istnieje<br>";
  29. print "zostl utworzony nowy plik z nowa data<br>";
  30.  
  31. $pliksave = fopen('time.txt', 'a+', 1);
  32. $text = date('d.m.y')."/".date('H:i:s');
  33.  
  34. fwrite($pliksave, $text);
  35. }
  36.  
  37. fclose($plik);
  38.  
  39. print "to sa informacje z pliku: $data<br>";
  40.  
  41. ?>


Zauwaz, ze dzieki odpowiednim wcieciom dokladnie widac co jest w czym zagniezdzone - to bardzo pomaga. Nawet wiecej niz bardzo.

Aha, ja bym uzyl funkcji file_put_contents() i file_get_contents() i moze zrobil to troche inaczej (prosciej?) ale jestem juz troche zmeczony. To jeszcze jedna rada - upraszczaj swoj kod! Czesty blad poczatkujacych programistow to znaczne utrudnianie sobie zycia (oczywiscie wynika to tez z nieznajomosci wszystkich mozliwosci jezyka) ale staraj sie upraszczac. Pomysl teraz nad tym co napisales, przejrzyj manuala od php i sprobuj to napisac jeszcze prosciej. Powodzenia.


--------------------
"Use the force - read the source"
Go to the top of the page
+Quote Post
chou
post 14.02.2006, 11:16:28
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 16.12.2005

Ostrzeżenie: (0%)
-----


Dzięki smile.gif

wszystko się przyda, nie wiem czemu alen stworzenie tego skryptu sprawiło mi wielką przyjemność, już wiem dlaczego większość programistów chodzi wesołych cool.gif

poprawiłem troszeczkę ten skrypt i wyszło:
  1. <?php
  2.  
  3. $plikb = 'C:\\.....\\time.txt';
  4.  
  5. if (file_exists($plikb)) {
  6. print 'plik istnieje<br>';
  7.  
  8. $cojestwpliku = substr(file_get_contents('time.txt'),0,-1);
  9.  
  10. // sprawdza czy plik jest pusty, jezeli tak tworzy nowa date,. jezeli jest jusz da
    ta nic nie robi.
  11. if (empty($cojestwpliku)) {
  12. print 'Data Nie istnieje zostala utworzona nowa data<br>';
  13.  
  14. $text = date('d-m-y');
  15.  
  16. file_put_contents($plikb, $text);
  17.  }
  18. else {
  19. print 'istnieje data<br>';
  20. }
  21.  
  22. }
  23. //jezeli plik nie istnial, tworzy nowy z data
  24. else {
  25. print 'plik nie istnieje<br>';
  26. print 'zostl utworzony nowy plik z nowa data<br>';
  27.  
  28. $text = date('d.m.y').'/'.date('H:i:s');
  29.  
  30. file_put_contents($plikb, $text);
  31.  
  32. }
  33.  
  34.  
  35. print 'to sa informacje z pliku: '.$cojestwpliku.'<br>';
  36.  
  37. ?>


najwięcej w tworzeniu tego skryptu problemów sprawiło mi sprawdzanie czy w pliku są jakieś informacje, dopiero po długotrwałych poszukiwaniach, testeach itd. wpadłem na "empty".
Ale teraz jeżeli mam 2 wartości w pliku:
w pierwszej lini jest wartość:
a=2 | 13:43:01
w drugim
jakis tam tekst


to jak zrobić żeby plik sprawdzał czy istnieje wartość a = 2 i data ?
substr (0,14) ?....


teraz mogę zrobić ten skrypt jako funkcję:
  1. <?php
  2.  
  3. function datecheck($plikb)  {
  4. //.. tu wkleić skrypt
  5. }
  6.  
  7. // mogę teraz wywołać ten skrypt tak:
  8. $plikb = 'C:\\.....\\time.txt';
  9.  
  10. datecheck($plikb);
  11.  
  12. ?>


p.s.: jak mam ustawić php.ini żeby był zgodny z ustawieniami na serwerach www, i żeby był bezpieczny, tzn. co jeszcze oprócz registry_globals off
na forum niczego nie znalazłem :/ dzięki jeszcze raz za wszelką pomoc

Ten post edytował chou 14.02.2006, 14:08:09
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 04:13