Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Zapis wyników zapytania do pliku
Forum PHP.pl > Forum > PHP
BrX1991
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
Sephirus
  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
BrX1991
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ł
Sephirus
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. }
BrX1991
Dzięki za pomoc. smile.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.