![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 20.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Moze zaczne od poczatku. Chcialbym otworzyc plik txt, wczytac z niego wartosci po czym zapisac je w tabeli w bazie. Wydaje sie banalne, ale niestety jedna rzecz ktora POWINNA za cholere nie chce dzialac. Ale do rzeczy: Otwieramy plik: Kod if($_POST["choice"] == "file"){ $filename = $_POST["file"]; if (is_file($filename)) { $file = fopen($filename, "r"); Dane w pliku txt zapisane sa w formacie: dane1(średnik)dane2(średnik)dane3 przkładowo: 1999-03-04;23;45 nastepnie petla while i rozbicie kazdej lini na pojedyncze elementy: Kod while(!feof($file)) { $line = fgets($file, 1024); $dane = explode(";",$line); przy kazdej iteracji mamy zmienne $dane[0], $dane[1] i $dane[2] reprezentujace poszczegolne wartosci z kazdej lini z pliku. no to co z nimi zrobic? do bazy je i konczymy petle: Kod $query = mysql_query("INSERT INTO $table_name VALUES( '0' , '$id_patient' , '$dane[0]', '$dane[1]' , '$dane[2]'"); } } fclose($file); } } (w insercie pierwsza wartosc "0" to zmienna autoincrement "id" a id patient to stała, wiec zmieniaja sie prtrzy kazdej iteracji tylko dane[x]) Majac taki kod, przy kazdej iteracji while dostajemy rozne dane[x], wiec przeprowadzajac kazdorazowo insert powinnismy miec tyle insertow ile lini w pliku tak? NIE! dostajemy nie dosc tylko JEDEN wpis (nawet jezeli while iteruje wielorotnie) to jest to wpis zawierajacy dane z OSTANIEJ lini, wszystkie pozostale sa olewane. Moim zdaniem wyglada to jakby insert wykonywany byl PO po wykonaniu petli while, pomimo ze znajduje sie w niej :/ ktos ma jakis pomysl? z gory dzieki Ten post edytował radosss 8.04.2009, 21:45:29 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Nadaj wątkowi sensowny tytuł.
Cytat OSTANIEJ lini, wszystkie pozostale sa olewane.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 20.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nadaj wątkowi sensowny tytuł.
sorki ze tak dlugo odp, male problemy techniczne 1. Znaki końca lini poprawne 2. var_dump NIE zwraca tego samego (IMG:http://forum.php.pl/style_emoticons/default/ohmy.gif) mianowicie każda linia wyglada tak: string(10) string(5) string(3) a OSTATNIA (czyli ta wpisywana do bazy) string(10) string(5) string(1) niestety nie rozumiem dlatego tak, mozesz wyjasnic? |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Popraw tytuł wątku, ostatni raz upominam.
Cytat mianowicie każda linia wyglada tak: Mam na myśli to, co jest w każdym kroku tablicy dla $dane. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 20.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
no tak, zrozumialem, wiec juz wyjasniam:
dane: 2009-03-17;11:02;4 2009-03-17;12:02;6 2009-03-17;13:02;8 wynik dump'a: string(10) "2009-03-17" string(5) "11:02" string(3) "4" string(10) "2009-03-17" string(5) "12:02" string(3) "6" string(10) "2009-03-17" string(5) "13:02" string(1) "8" jak juz wspominalem ostatnia linia odczytywana jest jako wartość jednoznakowa, pozostale jako 3-znakowe mam pomysl o co kaman: na koncu 1 i 2 lini sa jeszcze (zaraz po ostatniej danej) znaki konca lini (enter) a po ostatniej lini takiego znaku nie ma. moze gdyby dodac na koncach kazdej z lini znak srednika...? edit: no dobrze, sprobowalem, dziala przy kazdej iteracji nastepuje okreslona (prawidlowa) liczba insertow i dane wskakuja do bazy problemem byl byl brak srednika na koncu lini, przez co dane zapisywane byly razem ze znakiem enter, co wykazal var_dump dzieki za pomysl erix (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pozdrawiam Ten post edytował radosss 8.04.2009, 21:56:44 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 16:56 |