Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Ciągi oddzielenia przecinkiem i enterem
ghastblood
post 23.08.2012, 09:37:50
Post #1





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Witam
czy jest możliwość odczytania ciągu oddzielonego przecinkiem oraz enterem

czyli mam na przykład plik.txt i jego konstrukcja wygląda tak

nazwisko, imie, konkurencja, wynik
nazwisko, imie, konkurencja, wynik
nazwisko, imie, konkurencja, wynik

i chciał bym żeby na podstawie tego ciągu dodało mi 3 rekordy do bazy danych
czyli zawsze po wynik gdzie występuje \n(enter) robi insert into odczytanego ciągu.
Go to the top of the page
+Quote Post
nospor
post 23.08.2012, 09:45:34
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




file() - i masz każdą linie jako oddzielny element tablicy
explode po przecinku - i masz pola z każdej linii
zadna filozofia

ps: nie wspominając już o czymś takim
http://php.net/manual/en/function.fgetcsv.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ghastblood
post 23.08.2012, 11:11:31
Post #3





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


baza.txt
  1. Sony
  2. LG
  3. Ardo
  4. PHILIPS
  5. THOMSON


kod
  1. <?php
  2. $plik = fopen("baza.txt", "r");
  3. $bufor = fgets($plik);
  4. $tablicaTagow = explode(",", $bufor);
  5. echo '<pre>';
  6. var_dump($tablicaTagow);
  7.  
  8. ?>


zwraca mi

array(1) {
[0]=>
string(6) "Sony
"
}
a z ","

array(2) {
[0]=>
string(4) "Sony"
[1]=>
string(2) "
"
}

natomiast w jednej linii baza.txt
Sony,LG,Ardo,PHILIPS,THOMSON
zwraca

array(5) {
[0]=>
string(4) "Sony"
[1]=>
string(2) "LG"
[2]=>
string(4) "Ardo"
[3]=>
string(7) "PHILIPS"
[4]=>
string(9) "THOMSON
"
}

a chciał bym uzyskać tablice wielowymiarową

[0]=>
array(2) {
[0]=>
string(4) "Ardo"
[1]=>
string(7) "PHILIPS"
}

[1]=>
array(2) {
[0]=>
string(4) "Sony"
[1]=>
string(2) "LG"
}

z bazy która wygląda tak
Sony,LG
Ardo,PHILIPS

Czyli chodzi mniej więcej o to że ktoś wgrywa bazę danych w pliku txt na serwer i w ten sposób dodaje rekordy do mysql czyli jeden ciąg znaków(jedna tablica) to jest jeden rekord
KOWALSKI,JAN,SKOK DO WODY,120pkt<- 1 rekord w mysql
NOWAK,TOMASZ,SKOK DO WODY,98pkt <- 2 rekord w mysql

Ten post edytował ghastblood 23.08.2012, 11:17:22
Go to the top of the page
+Quote Post
nospor
post 23.08.2012, 11:16:00
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Po pierwsze: twoj plik wygląda teraz zupełnie inaczej niż przedstawiłeś to w pierwszym poście.
Po drugie: podałem ci metody jak to zrobić, a ty je totalnie zignorowałeś, używając jedynie explode po przecinku, podczas gdy w pliku i tak nie masz przecinków....

Czemu nie użyłeś FILE() jak ci napisłem? To ona zamienia plik na tablicę linii


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ghastblood
post 23.08.2012, 11:31:27
Post #5





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Sorki mój błąd,

  1. <?php
  2. $plik = file('baza.txt');
  3. $t = explode(",", $plik);
  4.  
  5. echo '<pre>';
  6.  
  7. ?>


baza .txt
  1. Sony,LG,Ardo
  2. PHILIPS,THOMSON


zwraca błąd

Warning: explode() expects parameter 2 to be string, array given in C:\xampp\htdocs\zawody1\ciagi.php on line 4
NULL


Go to the top of the page
+Quote Post
Tomplus
post 23.08.2012, 11:31:39
Post #6





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


użyj foreach()
  1.  
  2. $baza = file($plik);
  3. foreach($baza as $linia)
  4. {
  5. $t = explode(",", chop($linia));
  6. print_r($t);
  7. }
  8.  
Go to the top of the page
+Quote Post
ghastblood
post 23.08.2012, 11:35:13
Post #7





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Dzięki wiedziałem że coś mi nie pasuje zapomniałem o foreach tongue.gif
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: 14.06.2025 - 21:58