Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ciągi oddzielenia przecinkiem i enterem
Forum PHP.pl > Forum > Przedszkole
ghastblood
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.
nospor
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
ghastblood
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
nospor
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
ghastblood
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


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