Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] BARDZO dziwny problemz iteracją INSERT'a, Czyli jak wczytać dane z pliku do bazy
radosss
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
erix
post
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.
  1. masz na pewno dobre znaki końca linii?
  2. sprawdź, czy var_dump" title="Zobacz w manualu PHP" target="_manual zwraca zawsze to samo
Go to the top of the page
+Quote Post
radosss
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.11.2008

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


Cytat(erix @ 8.04.2009, 19:13:29 ) *
Nadaj wątkowi sensowny tytuł.
  1. masz na pewno dobre znaki końca linii?
  2. sprawdź, czy var_dump" title="Zobacz w manualu PHP" target="_manual zwraca zawsze to samo


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?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 10:00