Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> parsowanie pliku txt
-Gość_banan-
post 11.01.2006, 11:49:19
Post #1





Goście







Witam!
Mam dane w pliku tekstowym w formie
id
adres
data
opis
id2
adres2
data2
opis2
itd.
Potrzebuje te dane dodac do bazy mysql, czyli w efekcie chciałbym
otrzymać coś takiego:
INSERT INTO `tabela` VALUES (id, adres,data, opis);
INSERT INTO `tabela` VALUES (id2,adres2,data2,opis2);
itd.

Jak mogę osiągnąć coś takiego?
Odczytać umiem np za pomocą file(), ale nijak nie umiem zrobić tak żeby mi wyświetlało po 4 w lini, poza tym jak się później dobrać do teog żeby otrzymać w wyniku dane gotowe do wstawienia do bazy?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
NuLL
post 11.01.2006, 12:11:17
Post #2





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Otwierasz plik dzieki fopen. Czytasz po 4 linie dodajesz dzieki fgets i zapisujesz do bazy. Calosc czytania odbywa sie w petli while - co za problem ? smile.gif


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Sabistik
post 11.01.2006, 12:15:24
Post #3


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


  1. <?php
  2.  
  3. $plik = file("plik.txt");
  4.  
  5. $a = 0;
  6. for($i=0;$i<count($plik)/4; $i++)
  7. {
  8. mysql_query("INSERT INTO `tabela` VALUES ($plik['$a'], $plik['$a+1'], $plik['$a+2'], $plik['$a+3'])");
  9. $a += 4;
  10. }
  11.  
  12. ?>



hmm moze tak? z palca i troche glupio to napisane ale chyba nie mam bledow. winksmiley.jpg
Go to the top of the page
+Quote Post
-Guest-
post 11.01.2006, 12:21:12
Post #4





Goście







a jak przeczytac po cztery linie? w file() nie ma takiego parametru
Go to the top of the page
+Quote Post
NuLL
post 11.01.2006, 12:28:30
Post #5





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Moze byc laskawie sprawdzil co robi przedstawiony wyzej kod a nie zadal przyglupawe pytania ?


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
-Guest-
post 11.01.2006, 12:31:57
Post #6





Goście







nie odswiezylem strony zanim zadałem "głupie" pytanie , a ten kod powoduje błąd
Kod
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\program files\easyphp1-7\www\plik1.php on line 16

Linia 16 to ta z mysql_query
Go to the top of the page
+Quote Post
Sabistik
post 11.01.2006, 12:47:16
Post #7


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


  1. <?php
  2.  
  3. mysql_query("INSERT INTO `tabela` VALUES (".$plik['$a'].", ".$plik['$a+1'].", ".$plik['$a+2'].", ".$plik['$a+3'].")");
  4.  
  5. ?>
Go to the top of the page
+Quote Post
-Guest-
post 11.01.2006, 12:58:45
Post #8





Goście







Dzięki działa
Go to the top of the page
+Quote Post
-Guest-
post 11.01.2006, 13:44:08
Post #9





Goście







Heh, pochwaliłem się niestety, zasugerowałem się tym że poprawnie wyświetla mi dane, nie sprawdzałem czy wprowadza tylko zamiast mysql_query dawałem echo żeby zobaczyć czy te podczas edycji pliki txt nie następiła gdzies pomyłka i czy dane idą na pewno w grupach po 4 linijki dla jednego rekordu.
Mam tereaz pewien problem. Wyświetlam sobie kod SQL
  1. <?php
  2. echo 'INSERT INTO `rej_prot_kon_od_97` VALUES ('.$plik[$a].','. $plik[$a+1].','. $plik[$a+2].','. $plik[$a+3].');<br>';
  3. ?>

Niby ładnie, dostaję takie coś:
Kod
INSERT INTO `tabela` VALUES (id ,adres,data ,opis );

ale dane które chcę wprowadzić powinny być jeszcze otoczone '' bo MySQL wyświetla błąd (jak dodam ręcznie to nie wyświetla i dodaje), czyli :
Kod
INSERT INTO `tabela` VALUES (id ,'adres','data' ,'opis' );

Nie wiem jak wstawić znak ', wyrzuca mi błąd parse error. Probowałem \' ale też nie daje to takiego wyniku jakiego oczekuję
Go to the top of the page
+Quote Post
nospor
post 11.01.2006, 13:49:00
Post #10





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




\' powinno dzialac. moze zle wpisales:
  1. <?php
  2. echo 'INSERT INTO `rej_prot_kon_od_97` VALUES (''.$plik[$a].'',''. $plik[$a+1].'',''. $plik[$a+2].'',''. $plik[$a+3].'');<br>';
  3. ?>

w zasadziejesli id jest liczba to nie musisz obejmowac w ciapki. ja objalem na wszelki wypadek


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

"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
-Guest-
post 11.01.2006, 13:55:39
Post #11





Goście







Faktycznie coś musiałem spitolić, za dużo tych kropek tongue.gif Teraz działa poprawnie.
Ale mam jeszcze jedno pytanie, dodawać będę do bazu pole opis. I w tym polu na pewno trafi się gdzieś fragment tekstu:
Kod
blblbjkj kjdk; jhdjfhjdhfjh

Jak w opisie będzie średnik to w ten sposób zatrzyma mi to wykonywanie zapytania, jak się ustrzec przed czymś takim?
Go to the top of the page
+Quote Post
nospor
post 11.01.2006, 13:58:15
Post #12





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




opis to pole tesktowe. srednik w polu tekstowym nie zatrzymuje zapytania. jest traktowany jako zwykly znak tekstu.
ale to mogles se sam sprawdzic najpierw wstawiajac takie cudo do sql'a


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

"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

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.08.2025 - 03:56