Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Fukcja foreach() - wyrzuca bład
Forum PHP.pl > Forum > Przedszkole
busyboy
Witam

Sprawa zapewne prosta ale niestety ja nie wiem co jest nie ta :

  1. <?php
  2. require('funkcje.php');
  3. lacz_baza();
  4. $arr = mysql_fetch_array(mysql_query("SELECT id_zam,data,data_modyfikacji,nr_zamowienia from zamowienie"));
  5. $h = fopen('plik.csv', 'w');
  6. $sep = ";";
  7. foreach ( $arr AS $row )
  8. {
  9. fwrite($h, "\"{$row['id_zam']}\"$sep\"{$row['data']}\"$sep\"{$row['data_modyfikacji']}\"$sep\"{$row['nr_zamowienia']}\"\n");
  10. }
  11. fclose($h);
  12. ?>


Wyrzuca błąd : Warning: Invalid argument supplied for foreach()

Prosze o pomoc.
lobopol
A zerknij co masz w $arr i zobaczysz co jest nie tak funkcja var_dump
CuteOne
1. Porzuć mysql_ bo to stare i brzydkie - używaj PDO
2. Podstawy się kłaniają

  1. $arr =mysql_query("SELECT id_zam,data,data_modyfikacji,nr_zamowienia from zamowienie");
  2.  
  3. while($row = mysql_fetch_array($arr)) {
  4.  
  5. }

busyboy
W zmiennej $arr - mam wartość Array - > ja wyświele zmienna jako talice :

  1. foreach ( $arr[0] AS $row )


to mam - poprawna wartosc - ale caly czas ten sam bład.

Moze jeszcze inaczej, znalazje innego "gotowca" :

  1. $host = '...'; // <-- db address
  2. $user = '...'; // <-- db user name
  3. $pass = '...'; // <-- password
  4. $db = '...'; // db's name
  5. $table = '...'; // table you want to export
  6. $file = '...'; // csv name.
  7.  
  8. $link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
  9. mysql_select_db($db) or die("Can not connect.");
  10.  
  11. $result = mysql_query("SHOW COLUMNS FROM ".$table."");
  12. $i = 0;
  13.  
  14. if (mysql_num_rows($result) > 0) {
  15. while ($row = mysql_fetch_assoc($result)) {
  16. $csv_output .= $row['Field'].";";
  17. $i++;}
  18. }
  19. $csv_output .= "\n";
  20. $values = mysql_query("SELECT * FROM ".$table."");
  21.  
  22. while ($rowr = mysql_fetch_row($values)) {
  23. for ($j=0;$j<$i;$j++) {
  24. $csv_output .= $rowr[$j]."; ";
  25. }
  26. $csv_output .= "\n";
  27. }
  28.  
  29. $filename = $file."_".date("d-m-Y_H-i",time());
  30.  
  31. header("Content-type: application/vnd.ms-excel");
  32. header("Content-disposition: csv" . date("Y-m-d") . ".csv");
  33. header( "Content-disposition: filename=".$filename.".csv");


Pojawiał się błąd - Cannot modify header information - headers already sent by

Dodałem na początku ob_start(); oraz na końcu ob_end_flush(); ale to nie pomogło... sad.gif
CuteOne
1. Mówiłem - kłaniają się podstawy..
2. Do tworzenia plików CSV masz specjalną funkcję PHP http://www.php.net/manual/en/function.fputcsv.php
busyboy
Jeszcze jedno pytanko - nie bede tworzyl nowego postu - dlaczego przy eksporcie danych z bazy o pliku csv w komórce zamiast wartości mam 1,11111E+16 - reszte komórek mam ok ? Czy to jest błąd formatowania komórki ?
skleps
Cytat(busyboy @ 1.08.2012, 00:05:10 ) *
Jeszcze jedno pytanko - nie bede tworzyl nowego postu - dlaczego przy eksporcie danych z bazy o pliku csv w komórce zamiast wartości mam 1,11111E+16 - reszte komórek mam ok ? Czy to jest błąd formatowania komórki ?


A ten plik csv oglądasz w excelu czy np. w notepadzie?
Bywa tak, że w pliku csv wartość jest OK, np. 9781234567898, ale po otwarciu pliku w Excelu pokazuje on właśnie właśnie 9,78E+12
(ale jak się najedzie na tą komórkę, to w podglądzie jest prawidłowa wartość), ot taki "ficzerek" Excela.


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.