<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ManCanDo - PhP, MySQL, DIY, porady i triki &#187; &#187; CSV</title>
	<atom:link href="http://www.mancando.pl/tag/csv/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mancando.pl</link>
	<description>Co kupować a czego nie? Ciekawostki z zakresu programowania w PHP. Sztuczki i kruczki MySQL. Zagadnienia z zakresu grafiki komputerowej. Opisy ciekawych rzeczy, które można wykonać samodzielnie.</description>
	<lastBuildDate>Thu, 05 Dec 2013 18:50:19 +0000</lastBuildDate>
	<language>pl-PL</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.0.38</generator>
	<item>
		<title>Od XLS do CSV &#8211; szybki wsad do bazy danych MySQL</title>
		<link>http://www.mancando.pl/od-xls-do-csv-szybki-wsad-do-bazy-danych-mysql/</link>
		<comments>http://www.mancando.pl/od-xls-do-csv-szybki-wsad-do-bazy-danych-mysql/#comments</comments>
		<pubDate>Fri, 04 Oct 2013 12:21:28 +0000</pubDate>
		<dc:creator><![CDATA[Piotrek]]></dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[bazy danych]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[MyAdmin]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[xls]]></category>

		<guid isPermaLink="false">http://www.mancando.pl/?p=359</guid>
		<description><![CDATA[Są takie sytuacje gdy wymagane jest wykonanie szybkiego wsadu danych do tabeli. Oczywiście można na prędce stworzyć odpowiedni skrypt PhP, który przetworzy dane wsadowe do postaci zapytań SQL. Jednak nie zawsze ma to uzasadnienie i nie zawsze ilość czasu jest &#8230; <a href="http://www.mancando.pl/od-xls-do-csv-szybki-wsad-do-bazy-danych-mysql/">Czytaj dalej <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[
<!-- Easy Plugin for AdSense V7.51 -->
<!-- [leadin: 2 urCount: 2 urMax: 0] -->
<div class="ezAdsense adsense adsense-leadin" style="text-align:center;margin:20px 0px;"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- mancando-poziomy -->
<ins class="adsbygoogle"
     style="display:inline-block;width:728px;height:90px"
     data-ad-client="ca-pub-2234288553315702"
     data-ad-slot="2233930472"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<!-- Easy Plugin for AdSense V7.51 -->
<p><img class="alignright size-full wp-image-51" style="border: 0px none;" alt="komputerek_mysql" src="http://www.mancando.pl/wp-content/uploads/2013/01/komputerek_mysql.png" width="70" height="68" />Są takie sytuacje gdy wymagane jest wykonanie szybkiego wsadu danych do tabeli. Oczywiście można na prędce stworzyć odpowiedni skrypt PhP, który przetworzy dane wsadowe do postaci zapytań SQL. Jednak nie zawsze ma to uzasadnienie i nie zawsze ilość czasu jest wystarczająca na stworzenie takiego mechanizmu.</p>
<p>Właśnie w takich sytuacjach przydatna może być <img class="alignright size-full wp-image-44" style="border: 0px none;" alt="komputerek" src="http://www.mancando.pl/wp-content/uploads/2013/01/komputerek.png" width="70" height="50" />kombinacja dwóch narzędzi: phpMyadmin i &#8230; to nie żart Ms Excel. Arkusz kalkulacyjny posłuży nam jako narzędzie do preparowania odpowiednio sformatowanego pliku CSV. Phpmyadmin posłuży nam natomiast do wykonania natychmiastowego wsadu do bazy.</p>
<p><span id="more-359"></span></p>
<p style="text-align: center;"><img class="size-full wp-image-358 aligncenter" alt="wsad1" src="http://www.mancando.pl/wp-content/uploads/2013/10/wsad1.jpg" width="408" height="695" /></p>
<p>Na potrzeby tego tutorialu stworzę wirtualną potrzebę wykonania wsadu do tabeli o poniższym wyglądzie</p>
<p><code>id_kw (int) AUTO_INCREMENT<br />
name (varchar)<br />
cond (int)</code></p>
<p>Jako wsad wykorzystany będzie plik xls zwierający kilkaset słów kluczowych.<br />
W pierwszej kolejności wymagane jest odpowiednie sformatowanie pliku xls, do takiej postaci odzwierciedlającej strukturę tabeli. Pierwsza kolumna musi pozostać pusta &#8211; jest to kolumna odpowiadająca polu identyfikatora id_kw. W trzeciej kolumnie możemy dodać wartość początkową pola cond, lub pozostawić ją pustą w przypadku, gdy w strukturze tabeli określona jest wartość domyślna. Ja pozostawiam to pole puste.</p>
<p>Kolejnym etapem jest dodanie obrysu do wszystkich komórek arkusza odpowiadających wartościom pól tabeli. Zaznaczcie w Excelu &#8222;zawartość&#8221; tabeli a następnie zwykły obrys, efekt powinien być taki jak poniżej.</p>
<p style="text-align: center;"><img class="size-full wp-image-357 aligncenter" alt="wsad2" src="http://www.mancando.pl/wp-content/uploads/2013/10/wsad2.jpg" width="407" height="708" /></p>
<p>Na tym etapie może Was nieco dziwić to postępowanie jednak za chwilę zrozumiecie sens takiego działania. Zapiszcie bieżącą postać jako plik csv rozdzielany przecinkami (czytajcie uważnie pytania zadawane przez Excel i odpowiadajcie mądrze :D).</p>
<p>Otrzymany plik otwórzcie za pomocą jakiegoś edytora (najlepiej takiego który pozwala kontrolować kodowanie znaków). Pierwsze co pewnie zauważycie to fakt, że CSV rozdzielany przecinkami &#8230; jest rozdzielany średnikami (szczegół <img src="http://www.mancando.pl/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /> ). Obrysowanie dodatkowej pustej kolumny spowodowało, że po słowach kluczowych pojawił się dodatkowy średnik, który odpowiada polu cond.</p>
<p>Plik w obecnej postaci nie pozwoli Wam wykonać prawidłowego wsadu, jego kodowanie jest w ANSI. Przy bazie danych z kodowaniem UTF spowoduje oczywiście błędne wyświetlanie polskich krzaczków. Zmieńcie kodowanie znaków w pliku i zapiszcie go ponownie.</p>
<p>Przejdźmy teraz do phpMyadmina w którym wykonamy właściwy import danych. Wybierzcie odpowiednią tabele z bazy danych a następnie naciśnijcie zakładkę Import. W polu format wybierzcie CSV. Następnie musicie zmienić dolne opcje &#8211; Kolumny oddzielone: ustawcie ; . Pozostałe opcje możecie zostawić bez zmian. Naciśnijcie przycisk wykonaj &#8230; tabela zostanie wypełniona danymi. I gotowe … prawda, że szybko!</p>

<!-- Easy Plugin for AdSense V7.51 -->
<!-- [leadout: 3 urCount: 3 urMax: 0] -->
<div class="ezAdsense adsense adsense-leadout" style="text-align:center;margin:12px;"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- mancando-poziomy -->
<ins class="adsbygoogle"
     style="display:inline-block;width:728px;height:90px"
     data-ad-client="ca-pub-2234288553315702"
     data-ad-slot="2233930472"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<!-- Easy Plugin for AdSense V7.51 -->
]]></content:encoded>
			<wfw:commentRss>http://www.mancando.pl/od-xls-do-csv-szybki-wsad-do-bazy-danych-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Szybki eksport danych do CSV</title>
		<link>http://www.mancando.pl/szybki-eksport-danych-do-csv/</link>
		<comments>http://www.mancando.pl/szybki-eksport-danych-do-csv/#comments</comments>
		<pubDate>Thu, 14 Feb 2013 12:32:13 +0000</pubDate>
		<dc:creator><![CDATA[Piotrek]]></dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programowanie]]></category>

		<guid isPermaLink="false">http://mancando.pl/?p=74</guid>
		<description><![CDATA[Są takie sytuacje, gdy użytkownik korzystający ze strony internetowej, chce pozyskać zawartość tabeli lub też raportu, celem dalszej pracy z danym (np: wykorzystania danych w celu wykonania tradycyjnej papierowej korespondencji seryjnej). Do niedawna wymagało to od programisty pełnego oprogramowania funkcji &#8230; <a href="http://www.mancando.pl/szybki-eksport-danych-do-csv/">Czytaj dalej <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-50" style="border: 0px none;" alt="komputerek_php" src="http://mancando.pl/wp-content/uploads/2013/01/komputerek_php.png" width="70" height="73" />Są takie sytuacje, gdy użytkownik korzystający ze strony internetowej, chce pozyskać zawartość tabeli lub też raportu, celem dalszej pracy z danym (np: wykorzystania danych w celu wykonania tradycyjnej papierowej korespondencji seryjnej). Do niedawna wymagało to od programisty pełnego oprogramowania funkcji eksportujących dane do pliku. Od wersji PHP 5.1.0 jest to znacznie łatwiejsze gdyż udostępniono nowa funkcję<strong> fputcsv ($handle, $fields)</strong>, której zadaniem jest “wpychanie” danych tablicy do plików <strong>CSV</strong>.</p>
<p><span id="more-74"></span></p>
<h2>Przykład</h2>
<p>Od jakiegoś czasu bardzo chętnie stosuję tę funkcję. Muszę przyznać, że jest ona wygodna i znacznie ułatwia implementację eksportu danych do pliku. Poniżej znajdziecie przykładowy kod PHP w którym wykonano prosty eksport danych pozyskanych z bazy MySQL do pliku <strong>CSV</strong>, który ma być wykorzystywany w programach z pakietu MS Office.</p>
<p><code>$usersRes = $pdo-&gt;query('SELECT * FROM `user`');<br />
$users = $usersRes-&gt;fetchAll(PDO::FETCH_ASSOC);</code></p>
<p><code>$data = array();<br />
$data[0]['id_user'] = 'Id';<br />
$data[0]['f_name'] = 'Imię';<br />
$data[0]['s_name'] = 'Nazwisko';<br />
$data[0]['email'] = 'Email';<br />
$data[0]['city_c'] = 'Miejscowość';<br />
$data[0]['post_c'] = 'Kod pocztowy';<br />
$data[0]['phone_c'] = 'Telefon';<br />
$data[0]['add_date'] = 'Data rejestracji';</code></p>
<p><code>$datas = array_merge($data,$users);</code></p>
<p><code>foreach($datas as $key =&gt; $data){<br />
foreach($data as $key_s =&gt; $single_data){<br />
    $datas[$key][$key_s] = iconv("UTF-8","cp1250", $single_data);<br />
}<br />
}</code></p>
<p><code>$filename = 'users.csv';</code></p>
<p><code>$FileHandle = fopen($filename, 'w+') or die("can't open file");</code></p>
<p><code>foreach($datas as $key =&gt; $data) {<br />
fputcsv($FileHandle, $data, ';', '"');<br />
}</code></p>
<p><code>fclose($FileHandle);<br />
</code></p>
<h2>Omówienie kodu</h2>
<p>Idąc od góry &#8211; pobranie danych za pomocą <strong>PDO</strong> w postaci tablicy asocjacyjnej. Utworzenie tablicy $data zawierającej nagłówek dla tabeli. Złączenie tablicy (<code>array_merge</code>) z nagłówkami kolumn z tablicą z danymi. Kolejnym ważnym krokiem jest konwersja kodowania w pozyskanych danych w celu prawidłowego wyświetlania danych w programach uruchamianych w Windowsie. W pętli pojedyncze pola rekordów konwertowane są na kodowanie <strong>cp1250</strong> (właściwe dla MS Windows). W dalszej części tworzony jest uchwyt do podanego pliku csv (w+ &#8211; wskaźnik ustawiany na początku pliku, jeśli plik nie istnieje to będzie podjęta próba stworzenia go). Ostatnia część kodu odpowiada za wsad danych do pliku. I tyle :).</p>
<p>Bardzo szybkie i efektywne rozwiązanie wszelkiego rodzaju eksportów danych. Oczywiście można powyższy kod jeszcze uprościć, np dokonywać konwersji znaków na poziomie bazy danych (wykonanie zapytania: <code>SET NAMES CP1250;</code> przed właściwym zapytaniem pozyskującym dane) &#8230; ale takie zmiany pozostawiam już w Waszych rękach.</p>
 <!-- Easy Plugin for AdSense Unfiltered [count: 5 is not less than 5] -->]]></content:encoded>
			<wfw:commentRss>http://www.mancando.pl/szybki-eksport-danych-do-csv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
