Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Z pliku txt do bazy mysql
Forum PHP.pl > Forum > PHP
rafal
Jak mozna wczytac z pliku txt np:
imie;nazwisko;data;cos;tam;
imie;nazwisko;data;cos;tam;
imie;nazwisko;data;cos;tam;
itd aby wrzucic to do bazy mysql. Ma ktos na to jakis pomysl?
Czy jest jakas szybka metoda czy trzeba jescze ten plik tekstowy jakas sformatowac?
Z gory dzieki
Sir Blade
wystarczy skrypt w php

zalozenia sa takie:

robisz petle (czyta wszystkie linie w pliku .txt) i dodaje do bazy.


moze ktos Ci poda gotowca....mi padl foxserv i nie jestem w stanie przeslac skryptu w tej chwili.
Sir Blade
widze, ze wszyscy az sie pala do pomocy :wink:

dziala na local'u
Kod
<?





$db = mysql_connect("localhost", "httpd", "");



mysql_select_db("nazwa_bazy", $db);





$plik=fopen("plik_textowy.txt","r");

$i=0;

while($linia=fgets($plik,256)) {



list($imie[i],$nazwisko[i])=split(';',$linia);

    

{

    

  

$query = "INSERT INTO dane (imie, nazwisko) VALUES ('$imie[i]', '$nazwisko[i]') ";

  

  

    $mysql_result= mysql_query($query, $db);    



}

    $i+=1;

}



fclose ($plik);



?>
FiDO
Cytat
$i+=1;

a nie ladniej $i++ ? winksmiley.jpg
em1X
kazdy ma swoj styl :?
Sir Blade
Cytat
Cytat

$i+=1;

a nie ladniej $i++ ? winksmiley.jpg



hmmm.. nawet o tym nie pomyslalem.. moze byc i $i++ :wink:

wazne, ze dziala laugh.gif
rafal
Dzieki serdeczne tongue.gif za szybkosc. Nie spodziewalem sie. Mile zaskoczenie nie jest zle biggrin.gif
To jesli mozna to pozwole sobie jescze na jedno pytanko. Zalozmy ze mam juz te bazke i chcialbym dodac do niej kilka nowych rekordow rowniez z pliku txt. np:
nazwisko;adres;ulica;itp;
nazwisko;adres;ulica;itp;
nazwisko;adres;ulica;itp;
nazwisko;adres;ulica;itp;
Jak zrobic zeby dodac dodatkowe dane do poszczegolnych osob. Oczywiscie posiadajac w tym nowym txt przynajmniej jedna dana z poprzedniego txt np: imie i nazwisko lub tylko nazwisko.
Z gory oczywiscie dzieki
kryr
patrzaj na skrypt i:
tam gdzie jest "$imie[i],$nazwisko[i]" piszesz "$imie[i],$nazwisko[i],$adres[i],$telefon[i]" i co tam chcesz...
kryr
ps: zastanow sie nad xml'em - niektore serwery sql (ms) potrafia odrazu dodawac do bazy dane z pliku xml...
rafal
Cytat
patrzaj na skrypt i:
tam gdzie jest "$imie[i],$nazwisko[i]" piszesz "$imie[i],$nazwisko[i],$adres[i],$telefon[i]" i co tam chcesz...



Wydaje mi sie ze bedzie klopot bo w tym drugi pliku txt mam spis ludzi ktorzy nie sa posortowani ( wycignalem je z jakiegos strasznie poprapanego pliku excela - chociaz jest to mniejszy problem) ale rowniez i w wiekszosci nie wystepuja (bo nie maja tel itd)w drugim pliku txt. A na dodatek sa takze osoby nie wystepujace w pierszym txt.
Jest tak poniewaz ktos zamiast umiescic w jednej bazie wszystkie dane osob do kazdej pierdoly tworzyl nowe zestawienia a to doc., excelu itd.
Wiec nie tylko sie nie pokrywaja ale so beznadziejnie umieszczone.
Może trzeba uzyc do tego UPDATE ... SET ... WHERE czy cos takiego.
Czy wystarczy INSERT i te dane "starych osob beda mi automatyczie- odpowiednio przypisane a nowe zostana po prostu dopisane.
Troche zawile ale z php mam doczynienia od niedawna i jescze sie nie za bardzo orientuje.
Dzieki z gory
castor
INSERT --dodaje
UPDATE --zmienia
:wink:
rafal
Cytat
INSERT --dodaje
UPDATE --zmienia
:wink:


To jescze wiem ale jak zrobie INSERT to mi nie dopisuje do odpowiedniego osbonika dodatkowe dane, tylko wpisze na koniec nowy rekord?

pozdrawiam
em1X
Cytat
Cytat
INSERT --dodaje
UPDATE --zmienia
:wink:


To jescze wiem ale jak zrobie INSERT to mi nie dopisuje do odpowiedniego osbonika dodatkowe dane, tylko wpisze na koniec nowy rekord?

pozdrawiam


no skoro INSERT dodaje to nic ci nie zmieni tylko doda nowy rekord. Jak chcesz cos zmienic to UPDATE tabela SET pola = 'nowa wartosc' ... WHERE [warunek]
rafal
no skoro INSERT dodaje to nic ci nie zmieni tylko doda nowy rekord. Jak chcesz cos zmienic to UPDATE tabela SET pola = 'nowa wartosc' ... WHERE [warunek][/quote]


Ok tylko jak ma sie to do mojego przykładu ktory podalem. Jak to bedzie wygladalo kodzie?
Sir Blade
to moze tak to nalezy rozwiazac:

zrob sobie nowa baze ze wszystkim elementami, ktore cie interesuja
np. imie;nazwisko;adres;telefon;www;email

Stara baza z np. takimi elementami
imie;wyszktalcenie;zamieszkanie;nazwisko

pobierz tylko te elementy, ktore cie interesuja np. imie;nazwisko

wystarczy,ze zrobisz tak:

Kod
list($imie[i],$zbedne,$zbedne_2,$nazwisko[i])=split(';',$linia);


bedziesz mial zmienne imie oraz nazwisko i je sobie zapisz

Cytat
$query = "INSERT INTO dane (imie, nazwisko,adres,telefon,www,email) VALUES ('$imie[i]', '$nazwisko[i]',0,0,0,0) ";


bedziesz mial w bazie imie i nazwisko a teraz update

inny plik za danymi np telefon,www zrob tak samo tylko inna komenda

Kod
$query = "UPDATE dane SET telefon = $telefon[i] WHERE imie ='Kowalski";



Czysta teoria. Czy ma sens? Sprobuj jak cos to inni na forum cos moze dopowiedza..
Mistycus
Cytat
WHERE imie ='Kowalski";
laugh.gif
Sir Blade
Cytat
Cytat
WHERE imie ='Kowalski";
laugh.gif




8O

tak bywa czasami laugh.gif
rafal
Kod
$query = "UPDATE dane SET telefon = $telefon[i] WHERE imie ='Kowalski";


Chodzilo mi raczej o to aby dane zostaly wpisane automatycznie bez wymieniania where-kowalski, nowak. Taki formularz ktory updaetuje, kasuje, dodaje juz stworzylem. Tylko brakuje mi podobnego skryptu jaki mi podeslal SIR BLADE (dzieki jeszcze raz biggrin.gif ) tylko zamiast do insertu do masowego updatu.
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.