Witam jak dane z pliku txt
"249180120","SKOCZÓW","1950","11","29",.4,"","",0,"8",0,"8","","8","","8"
zapisać do bazy danych?
Mam coś takiego
<?php $mysql_host = 'localhost'; $mysql_login = 'login'; $mysql_haslo = 'pass'; $mysql_baza = 'nazwa_bazy'; // połączenie z bazą danych $mysqli = new mysqli($mysql_host,$mysql_login,$mysql_haslo,$mysql_baza); //$mysqli->set_charset("utf8"); if ( mysqli_connect_errno() ) { http://www.php.net/echo 'Błąd bazy danych'; } // $plik = http://www.php.net/file('plik.txt'); $mysqli->set_charset("utf8"); { foreach($plik as $linia) { $i++; list($nazwastacji, $miasto, $rok, $miesiac, $dzien, $suma_dobowa_opadu, $j, $rodzaj_opadu, $wysokosc_pokrywy_snieznej_cm, $m, $wysokosc_swiezospalego_sniegu, $o, $gatunek_sniegu, $r, $rodzaj_pokrywy_snieznej, $s) = http://www.php.net/explode(',', http://www.php.net/trim($linia)); $result = $mysqli->query(" INSERT INTO opad_dobowy SET nazwastacji='$nazwastacji', miasto='$miasto', rok='$rok', miesiac='$miesiac', dzien='$dzien', suma_dobowa_opadu='$suma_dobowa_opadu', j='$j', rodzaj_opadu='$rodzaj_opadu', wysokosc_pokrywy_snieznej_cm='$wysokosc_pokrywy_snieznej_cm', m='$m', wysokosc_swiezospalego_sniegu='$wysokosc_swiezospalego_sniegu', o='$o', gatunek_sniegu='$gatunek_sniegu', r='$r', rodzaj_pokrywy_snieznej='$rodzaj_pokrywy_snieznej', s='$s' "); } } ?>
A czy logując się do bazy przez np. konsolę Windowsa masz tak samo? Może to interfejs graficzny dodaje te znaki cudzysłowia, żeby było wiadomo, że to "string", a nie "int".
@Neutral nie, on tak wklada do bazy, widac ladnie w kodzie ze wklada explode po przecinku
explode(',', trim($linia));
wiec ze wszystkim.
@brzanek, skoro to CSV to uzyj dedykowanych funkcji do odczytu csv a problem zniknie. Oczywiscie mozesz recznie usuwac te cudzyslowia ale nie na tym to polega...
https://www.php.net/manual/en/function.fgetcsv.php
ps: swoja droga jak jakies pole jest ewidentnie liczba to bys mogl w bazie danych robic je jako typ liczbowy a nie tekstowy.
tak samo data to powinno byc jedno pole DATE a nie 3 pola tekstowe
No i skoro uzywasz mysqli to zainteresuj sie bindowaniem bo serce sie kraja patrzac jak ty dane do bazy wkladasz a programujesz juz pare lat
Może i racja najpierw próbuję odczytać ten plik cvs ale brakuje mi polskich znaków.
<?php $handle = http://www.php.net/fopen("o_d_1950.csv", "r"); while (($data = http://www.php.net/fgetcsv($handle)) !== FALSE) { http://www.php.net/echo $data[0]; http://www.php.net/echo $data[1]; http://www.php.net/echo $data[2]; http://www.php.net/echo $data[3]; http://www.php.net/echo $data[4]; http://www.php.net/echo $data[5]; http://www.php.net/echo $data[6]; http://www.php.net/echo $data[8]; http://www.php.net/echo $data[9]; http://www.php.net/echo $data[11]; http://www.php.net/echo $data[13]; http://www.php.net/echo $data[15]; http://www.php.net/echo '<br>'; } ?>
Zapisz plik w kodowaniu UTF-8 bez BOM. Spróbuj zapisać w kodowaniu dwu-bajtowym i jedno-bajtowym. Oczywiście, to wszystko w swoim edytorze tekstowym np. Notepad++, Emacs.
W jakim kodowaniu był wyeksportowany?
Te dwie strony mają być w kodowaniu UTF-8: brzanek.php i brzanek.txt. Zaznacz na UTF-8 bez BOM, następnie zapisz plik. Spójrz jeszcze na setlocale, nie ustawiaj nic, ponieważ możliwe, że to przez to.
Wszystko się zgadza ale mi chodzi o to, że w pobieranym pliku csv nie ma polskich znaków a nie w pliku txt.
Tak zgadza się, niepoprawnie napisałem. Powienem napisać brzanek.csv i u mnie sa polskie znaki.
Spróbuj użyć Regexa. Wyciągnie Tobie wszystko z podwójnych cudzysłowów.
$matches = null; $regex = http://www.php.net/preg_match_all('/[^",]+()/', '"aas","wewewe", sss', $matches); http://www.php.net/var_dump($matches)
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)