Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Zapis wyników zapytania do pliku
BrX1991
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 17.01.2012

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


Witam, otóż mam mały problem z działaniem skryptu PHP. Pobieram zapytaniem dane rekordy z bazy, następnie wpisuje do pliku tekstowego nagłówek, a pod nim puszczam pętlę która wpisuje mi wyniki tegoż zapytania. Jednak problem jest taki, że wypisuje mi w pliku wyłącznie pierwsze wartości, a po wykonaniu tego zapytania bezpośrednio na bazie tych wyników jest 5. Gdzie leży błąd?

  1. <?php
  2. $dzisiaj = date("d.m.y");
  3. $zapyt = mysql_query("select nazwa, count(*)*cena as 'Lacznie' from oferta, rezerwacja where oferta.id_oferta=rezerwacja.id_oferta group by nazwa");
  4.  
  5.  
  6. // przypisanie zmniennej $file nazwy pliku
  7. $file = "$dzisiaj-Raport.txt";
  8.  
  9. // uchwyt pliku, otwarcie do dopisania na początku pliku
  10. $fp = fopen($file, "w");
  11.  
  12. // blokada pliku do zapisu
  13. flock($fp, 2);
  14.  
  15. // zmienna $dane, która będzie zapisana
  16. // może także pochodzić z formularza np. $dane = $_POST['dane'];
  17. $dane = "Data generacji raportu: ".$dzisiaj."\n"."Nazwa oferty: Za Cenę:\n";
  18.  
  19. // zapisanie danych do pliku
  20. fwrite($fp, $dane);
  21.  
  22. // odblokowanie pliku
  23. flock($fp, 3);
  24.  
  25. // zamknięcie pliku
  26. fclose($fp);
  27.  
  28. $licz=0;
  29. if(mysql_num_rows($zapyt) > 0)
  30. {
  31. while($r = mysql_fetch_assoc($zapyt)) {
  32. $cos[$licz]=$r['nazwa']." ".$r['Lacznie']." zł \n";
  33. $current = file_get_contents($file);
  34. $current .= $cos[$licz];
  35. file_put_contents($file, $current);
  36. $licz++;
  37. }
  38. }
  39. ?>


Będę wdzięczny za pomoc smile.gif

Ten post edytował BrX1991 22.01.2013, 10:55:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


  1. // linijka 35
  2. file_put_contents($file, $current,FILE_APPEND);


Wystarczyło zajrzeć tu i się kapnąć że nadpisujesz za każdym wywołaniem cały plik smile.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
BrX1991
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 17.01.2012

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


Cytat(Sephirus @ 22.01.2013, 11:52:18 ) *
  1. // linijka 35
  2. file_put_contents($file, $current,FILE_APPEND);


Wystarczyło zajrzeć tu i się kapnąć że nadpisujesz za każdym wywołaniem cały plik smile.gif


Jeśli dam tak, to wypisuje mi za każdym razem linię

  1. $current = file_get_contents($file);


Czyli nagłówek + podane wartości.
Dopiero po ostatnim przejściu lista wygląda tak jak ma wyglądać. A zapisuje mi każdorazowe przejście:

Kod
Data generacji raportu: 22.01.13
Nazwa oferty:          Za Cenę:
Data generacji raportu: 22.01.13
Nazwa oferty:          Za Cenę:
Drwal                    50 zł
Data generacji raportu: 22.01.13
Nazwa oferty:          Za Cenę:
Drwal                    50 zł
Klin                    40 zł
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Fakt, nie zauważyłem tego. Tak powinno być ok:

  1. while($r = mysql_fetch_assoc($zapyt)) {
  2. $cos[$licz]=$r['nazwa']." ".$r['Lacznie']." zł \n";
  3. // $current = file_get_contents($file);
  4. // $current .= $cos[$licz];
  5. file_put_contents($file, $cos[$licz],FILE_APPEND);
  6. $licz++;
  7. }


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
BrX1991
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 17.01.2012

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


Dzięki za pomoc. smile.gif +
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 Aktualny czas: 21.08.2025 - 15:03