Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Import kontaktów do SQLa
DNMX
post 19.01.2022, 10:44:47
Post #1





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 18.09.2021

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


Nadal męczę temat z poprzednich wątków. Tym razem próbuję zaciągnąć kontakty z .csv wygenerowanego w Gmailu. Googlowałem rzecz jasna, znalazłem kilka prostych gotowcy jakobrabiać CSV-ki w PHP ale wszystkie się gubią jak np, w informacjach o kontakcie jest kilka linijek bo wszystkie traktują plik jako podzielony \n na rowy. Tymczasem szukam rozwiązania któ?e poprawnie zinterpretuje taki kod:
Kod
pierwsza,linijka,"trzecie pole",
drug,linijka,"wielowierszowy
komentarz
z kilkoma
ENTERami"
"tu dopiero",trzecia,linijka

Ktoś? coś?

Ten post edytował DNMX 19.01.2022, 10:45:13
Go to the top of the page
+Quote Post
trueblue
post 19.01.2022, 11:03:22
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Używałeś: https://www.php.net/manual/en/function.fgetcsv.php ?


--------------------
Go to the top of the page
+Quote Post
DNMX
post 19.01.2022, 11:46:15
Post #3





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 18.09.2021

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


Działa tylko że zwraca dane w postaci $data[0], $data[54] a nie $data[name], $data[street]. Niby nie duży problem ale mogłoby traktować pierwszą linjkę jako nagłówki. W dodatku trzeba uważać, żeby pierwszego wiersza przypadkowo nie potraktować jako dane. W drugim przykładzie w linku który podałeś jest opisane jak zrobić z headerami ale to znowu się wykrzacza w przypadku wielowierszowych pól.
Go to the top of the page
+Quote Post
trueblue
post 19.01.2022, 12:11:00
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Który przykład masz na myśli? Podaj link.


--------------------
Go to the top of the page
+Quote Post
DNMX
post 19.01.2022, 13:50:11
Post #5





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 18.09.2021

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


Cytat(Gandalf the White)
Forget this while() loop mumbo jumbo! Use this:

Kod
$rows = array_map('str_getcsv', file('myfile.csv'));
$header = array_shift($rows);
$csv = array();
foreach ($rows as $row) {
  $csv[] = array_combine($header, $row);
}

Source: https://steindom.com/articles/shortest-php-...sociative-array
Go to the top of the page
+Quote Post
trueblue
post 19.01.2022, 15:48:46
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


  1. $rows = [];
  2. if (($handle = fopen("myfile.csv", "r")) !== FALSE) {
  3. while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
  4. $rows[] = $row;
  5. }
  6. fclose($handle);
  7. }
  8.  
  9. $header = array_shift($rows);
  10. $csv = [];
  11. foreach ($rows as $row) {
  12. $csv[] = array_combine($header, $row);
  13. }


Kod
c1,c2,c3 <- nazwy kolumn
pierwsza,linijka,"trzecie pole" <- tu bez przecinka
drug,linijka,"wielowierszowy
komentarz
z kilkoma
ENTERami"
"tu dopiero",trzecia,linijka


--------------------
Go to the top of the page
+Quote Post
DNMX
post 19.01.2022, 22:00:50
Post #7





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 18.09.2021

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


Piękny fragment kodu, dzięki!
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 Wersja Lo-Fi Aktualny czas: 28.03.2024 - 10:20