Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Baza danych a plik tekstowy
Forum PHP.pl > Forum > PHP
damianpsp2000
Witam!
Mam problem z dodaniem do bazy danych rekordów za pomocą PHP z pliku *.txt.

Tak wygląda plik *.txt:

  1. 1/1;
  2. 2/1;
  3. 3/1;
  4. 4/1;
  5. 5/1;
  6. 6/1;
  7. 7/1;
  8. 8/1;
  9. 9/1;
  10. 10/1;
  11. 11/1;
  12. 12/1;
  13. 13/1;
  14. 14/1;
  15. 15/1;
  16. 16/1;
  17. 17/1;
  18. 18/1;
  19. 19/1;
  20. 20/1;
  21. 21/1;
  22. 22/1;
  23. 23/1;
  24. 24/1;
  25. 25/1;
  26. 26/1;
  27. 27/1;
  28. 28/1;
  29. 29/1;
  30. 30/1;
  31. 31/1;
  32. 32/1;
  33. 1/2;
  34. 2/2;
  35. 3/2;
  36. 4/2;
  37. 5/2;
  38. 6/2;
  39. 7/2;
  40. 8/2;
  41. 9/2;
  42. 10/2;
  43. 11/2;
  44. 12/2;
  45. 13/2;
  46. 14/2;
  47. 15/2;
  48. 18/2;
  49. 19/2;
  50. 20/2;


Oczywiście w pliku tym jest więcej danych o tej strukturze.
Chciałbym zapisywać liczbę przed znakiem "/" do tabeli w polu o nazwie "x", a po znaku "/" w polu o nazwie "y".

Próbowałem robić jakiś skrypt, ale nie działa on tak jak chcę.
Wygląda tak:

  1. <?php
  2.  
  3. mysql_connect('localhost', 'root', '');
  4. mysql_select_db('asd10');
  5.  
  6. $plik = fopen('ocean.txt', 'r');
  7. flock($plik, 1);
  8.  
  9. $plik2 = fread($plik, filesize('ocean.txt'));
  10. fclose($plik);
  11.  
  12. $explode = explode(';', $plik2);
  13. $ilosc = count($explode);
  14.  
  15. for($i=1; $i<$ilosc; $i++){
  16.  
  17. $ciag[$i] = ''.$explode[$i].'';
  18. $explode2 = explode('/', $ciag[$i]);
  19.  
  20. mysql_query("INSERT INTO test SET etap = '3', kraj = 'wolne', x = '".$explode2[0]."', y = '".$explode2[1]."'");
  21.  
  22. }
  23.  
  24. ?>


Bardzo proszę o pomoc, dziękuję z góry oraz pozdrawiam.
nospor
A patrzyles jak wyglada twoje zapytanie z danymi?

echo "INSERT INTO test SET etap = '3', kraj = 'wolne', x = '".$explode2[0]."', y = '".$explode2[1]."'";

Po za tym lektura obowiazkowa:
Temat: Jak poprawnie zada pytanie
i wyswietlaj ewentualne bledy zapytan
damianpsp2000
Cytat(nospor @ 15.11.2013, 15:28:13 ) *
A patrzyles jak wyglada twoje zapytanie z danymi?

echo "INSERT INTO test SET etap = '3', kraj = 'wolne', x = '".$explode2[0]."', y = '".$explode2[1]."'";

Po za tym lektura obowiazkowa:
Temat: Jak poprawnie zada pytanie
i wyswietlaj ewentualne bledy zapytan


Wiem, że powinno być VALUES ale robie to dla siebie, do pomocy tylko.

@edit
Proszę o jeszcze jakieś wskazówki.
nospor
Jakie VALUES.... ja nie mowie nic VALUES tylko bys sprawdzil jak wyglada zapytanie po wstawieniu zmiennych oraz czy zapytanie nie daje bledow. Wszystko masz w linku. Umiejetnosc czytania ze zrozumieniem to podstawa.
damianpsp2000
Ok, tyle, że wszystko się do bazy danych dodaje, tylko zawsze w "x" jest liczba "0", a w "y" jest "1".
nospor
No i oto sie miedzy innymi pytalem, bys sprawdzil jak wyglada wygenerowane zapytanie :/ Ja naprawde po chinsku pisze? Podalem ci nawet kod bys zobaczyl jak wyglada, no ale po co....
damianpsp2000
Ok, przepraszam za swój błąd. W jaki sposób napisać, by to działało, tzn. dodawało poprawne liczby do bazy?
nospor
Przepraszasz za blad, ale jednoczesnie lejesz nadal na to co ci napisalem :/ To po co na forum przychodzisz?

Napisze jeszcze raz, bo widze masz problemy z czytaniem po polsku. Uwaga, przelaczam sie na polski:

sprawdz co zawieraja zmiennej na poszczegolnym etapie, a bedziesz wiedzial gdzie masz blad.

var_dump($plik2);
var_dump($ciag[$i]);
var_dump($explode2);
echo "INSERT INTO test SET etap = '3', kraj = 'wolne', x = '".$explode2[0]."', y = '".$explode2[1]."'";

Naprawde tak ciezko zrobic to o co prosze i wpisac to wkodzie we wlasciwym miejscu?
damianpsp2000
  1. array(2) { [0]=> string(3) " 2" [1]=> string(1) "1" } array(2) { [0]=> string(3) " 3" [1]=> string(1) "1" }


To zwraca "var_dump($explode2);", oczywiście nie jest to całość, ale wszystko idzie dobrze po kolei. Więc nie wiem dlaczego baza zapisuje tylko 0 i 1.

A to zwraca echo zapytania:

  1. INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 2', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 3', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 4', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 5', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 6', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 7', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 8', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 9', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 10', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 11', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 12', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 13', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 14', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 15', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 16', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 17', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 18', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 19', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 20', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 21', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 22', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 23', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 24', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 25', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 26', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 27', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 28', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 29', y = '1'INSERT INTO test SET etap = '3', kraj = 'wolne', x = ' 30', y = '1'


też nie jest to całość, wygląda dobrze więc nie rozumiem dlaczego źle dodaje się do bazy danych.
nospor
x = ' 3'
tu masz spacje zbedna

a 1 chyba widzisz ze masz w explode2
damianpsp2000
Dobra, już wszystko działa. Dzięki! smile.gif
nospor
Glupie var_dump a rozwiazalo sprawe. A ilez trzeba bylo sie o te var_dump i echo naprosic.
damianpsp2000
No ok wink.gif Przepraszam raz jeszcze.
viking
Tak swoją drogą:

  1. $dane = file('ocean.txt', FILE_IGNORE_NEW_LINES);
  2.  
  3. foreach ($dane as $k) {
  4. var_dump (explode('/', rtrim($k, ';')));
  5. }
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.