Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z pobraniem danych z pliku
Forum PHP.pl > Forum > Bazy danych > MySQL
Chrom
Witam wszystkich,
Jestem laikiem w wielu sprawach i mam problem potrzebuję skopiować plik.txt do bazy danych tabela stan korzystam z funkcji LOAD DATA INFILE przez stronę php. Plik poprawnie ładuje się na serwerze w foderze raporty. NIestety nie mogę załadować go do bazy danych starałem sie samale niestety bez pomocy chyba sie nie obejdzie. tu podaje kod jaki zastosowałem
  1. <?php
  2.  
  3. $zapytanie = "LOAD DATA INFILE '". $_SERVER[DOCUMENT_ROOT] . "/raporty/.$plikuzytkownika_name' INTO TABLE stan FIELDS TERMINATED BY '' LINES TERMINATED BY 'rn' (nr, wz wp, wo, co )";
  4. mysql_query($zapytanie);
  5.  
  6. ?>


Zmieniałem adres do pliku na zmienną z plikiem, zmienna bez problemu plik pobierabo mogę go zobaczyć na stronie itd itd. Niestety nic z tego nie wychodzi czy ktoś się orientuje w czym jest problem
Z góry dzięki za okazane zainteresowanie moim problemem.
SongoQ
A jaki Ci blad wywala?
aleksander
robiąc mały OT: nazwy kluczy tablicy asocjacyjnej zapisujemy w cudzysłowach lub apostrofach:
  1. <?php
  2. $_SERVER[DOCUMENT_ROOT]; // zle
  3. $_SERVER['DOCUMENT_ROOT']; // dobrze
  4. $_SERVER["DOCUMENT_ROOT"]; // dobrze
  5. ?>
Chrom
W tym problem że nie wywala nic żadnego błędu tak jakby wszystko było ok.
wstawiłem apostrofy i to samo. pobranie pliku ok parsowanie ok a wczytać nie chce.
Co dziwniejsze przez PMA poszło tylko bez przypisania do kolumn, ale ja potrzebuję zrobić to przez php i z przypisaniem.
aleksander
użyj mysql_error" title="Zobacz w manualu php" target="_manual()
Chrom
dzieki za zainteresowanie
wypisałem:
  1. mysql_select_db('sam');
  2. echo mysql_errno() . ": " . mysql_error(). "\n";
  3.  
  4. mysql_select_db('sam');
  5. mysql_query('SELECT *
  6. FROM stany'); echo mysql_errno() . ": " . mysql_error() . "\n";

i wyświetla 0: baza i tabela jest.
może lepiej jak przeslę cały kod njpierw plik; nazwa: RAP_M_Xl2005_Bluszczańska74_w1.txt treść:
Cytat
05.11.25 00:20/5 RAP. ZA UBIEGLY MIESIAC-'Bluszczanska A'  334
Zuzycie energi od pocz. mies. 000283.5GJ
Przyrost od pocz. miesiaca dla lokalu:
Nr.  Woda zimna:  Woda ciepla:  Woda oligoc.: Cent.o.:
1    0001.079      0000.886        0000.055    0000.875
2    0008.176      0006.997        0001.019    0001.538
3    0003.552      0005.426        0000.000    0001.056
4    0001.764      0002.884        0000.222    0001.873
5    0001.132      0001.071        0000.209    0000.408
6    0001.031      0000.467        0000.033    0000.720
7    0001.416      0000.799        0000.033    0000.002
8    0006.054      0003.224        0000.000    0001.283
9    0001.105      0000.906        0000.000    0001.637
10    0000.645      0000.103        0000.000    0000.415
11    0000.199      0000.136        0000.000    0000.397
12    0003.771      0003.778        0000.975    0000.117
13    0000.000      0003.764        0000.000    0001.484

jest to fragment ponieważ nagłówki są różnej długości to każdy raportujący podzielnik ma swoj adnotację w specjalnej tabeli bazy danych z której pobiera wartości do obięcia. cała strona wygląda tak:
  1. <?
  2. require "txt/conect.txt";
  3. connection();
  4. $table_name = "budynki";
  5. // $plikuzytkownika - miejsce tymczasowej lokalizacji pliku na serwerze WWW
  6. $plikuzytkownika = $HTTP_POST_FILES['plikuzytkownika']['tmp_name'];
  7.  
  8. // $plikuzytkownika_name - nazwa pliku w systemie użytkownika
  9. $plikuzytkownika_name = $HTTP_POST_FILES['plikuzytkownika']['name'];
  10.  
  11. // $plikuzytkownika_size - wielkość pliku w bajtach
  12. $plikuzytkownika_size = $HTTP_POST_FILES['plikuzytkownika']['size'];
  13.  
  14. // $plikuzytkownika_type - typ pliku w systemie MIME, 
  15. $plikuzytkownika_type = $HTTP_POST_FILES['plikuzytkownika']['type'];
  16.  
  17. // $plikuzytkownika_error - kod błędu związanego z wysyłaniem pliku
  18. $plikuzytkownika_error = $HTTP_POST_FILES['plikuzytkownika']['error'];
  19.  
  20. // plikuzytkownika_error został dodany do php 4.2.0
  21. // ten kod można stosować z nowszymi wersjami
  22. if ($plikuzytkownika_error > 0)
  23. {
  24. echo 'Wystąpił problem: ';
  25. switch ($plikuzytkownika_error)
  26. {
  27. case 1: echo 'Rozmiar pliku przekroczył wartość upload_max_filesize'; break;
  28. case 2: echo 'Rozmiar pliku przekroczył wartość max_file_size'; break;
  29. case 3: echo 'Plik wysłany tylko częściowo'; break;
  30. case 4: echo 'Nie wysłano żadnego pliku'; break;
  31. }
  32. }
  33.  
  34.  
  35. // umieszczenie pliku w zadanej lokalizacji
  36. $lokalizacja = 'raporty/'.$plikuzytkownika_name;
  37.  
  38. if (is_uploaded_file($plikuzytkownika)) 
  39. {
  40.  if (!move_uploaded_file($plikuzytkownika, $lokalizacja))
  41.  {
  42. echo 'Problem: Plik nie może być skopiowany do katalogu';
  43.  }
  44. } 
  45. else 
  46. {
  47. echo 'Problem: możliwy atak podczas wysyłania pliku. Nazwa pliku: '.$plikuzytkownika_name;
  48. }
  49. echo "<h2>Szczególy uploadu raportu</h2>";
  50. $pocieta_nazwa = "$plikuzytkownika_name";
  51. list($nazwa_pliku, $rozszezenie) = explode(".", $pocieta_nazwa);
  52. $data = "$nazwa_pliku";
  53. list($rap, $m, $miesioc_rok, $rap_budynek, $rap_wezel) = explode("_", $data);
  54. $rap_bud = $rap_budynek;
  55. if ($rap_budynek == Bluszczańska74){$rap_budynek = "Bluszczanska74";}
  56. elseif ($rap_budynek == Bluszczańska76){ $rap_budynek = "Bluszczanska76";}
  57.  
  58. $file = explode("2", $miesioc_rok);
  59. $rok = $file[1];
  60. $mies = $file[0];
  61. $rok = "2$rok";
  62. if ($mies == l){ $miesiac = "styczeń";}
  63. elseif ($mies == ll){ $miesiac = "luty";}
  64. elseif ($mies == lll){ $miesiac = "marzec";}
  65. elseif ($mies == lV){ $miesiac = "kwiecień";}
  66. elseif ($mies == V){ $miesiac = "maj";}
  67. elseif ($mies == Vl){ $miesiac = "czerwiec";}
  68. elseif ($mies == Vll){ $miesiac = "lipiec";}
  69. elseif ($mies == Vlll){ $miesiac = "sierpień";}
  70. elseif ($mies == lX){ $miesiac = "wrzesień";}
  71. elseif ($mies == X){ $miesiac = październik;}
  72. elseif ($mies == Xl){ $miesiac = listopad;}
  73. elseif ($mies == Xll){ $miesiac = grudzień;}
  74.  
  75. $sql = ("SELECT * FROM $table_name WHERE budynek ='$rap_budynek' and wezel ='$rap_wezel'") or die("Blad w zapytaniu!");
  76. $result = @mysql_query($sql) or die("brak rezultatów zapytania w bazie danych.");
  77. while ($wiersz = mysql_fetch_array($result)) {
  78. $wiersz_nag=$wiersz['wiersze_naglowka'];
  79. $ilosc_mieszkan=$wiersz['ilosc_mieszkan'];
  80. }
  81. $koniec_pliku = $wiersze_stop + 15;
  82. echo '<table cellpadding="8" border="1"><tr><td >Pełna nazwa pliku raportu</td><td>'."$plikuzytkownika_name".'</td></tr>
  83. <tr><td >Ścieżka do pliku tymczasowego</td><td>'."$plikuzytkownika".'</td></tr>
  84. <tr><td>Wielkość pliku raportu</td><td>'."$plikuzytkownika_size".'</td></tr>
  85. <tr><td>Raportowany budynek</td><td>'."$rap_bud".'</td></tr>
  86. <tr><td>Raportowany węzeł </td><td>'."$rap_wezel".'</td></tr>
  87. <tr><td>Miesiąc  rok </td><td>'."$miesiac  $rok".' rok</td></tr>
  88. <tr><td>Ilość rekordów (mieszkań) </td><td>'."$ilosc_mieszkan".'</td></tr></table>';
  89. ?>
  90. <p style="font-size: 14px; font-style: normal; text-align: left;"> Jeżeli plik został poprawnie załadowany na serwer:<br>
  91. <ul><li>Sprawdź czy zgadza się nazwa pliku raportu nad którym obecnie pracujesz,</li>
  92. <li>Sprawdź czy został wykryty prawidłowy wiersz od którego zaczynają się dane li
    czbowe, </li>
  93. <li>Sprawdź czy właściwie został wybrany budynek i ewentualnie węzeł którego doty
    czy raport</li>
  94. <li>Poniżej wyświetlona została zawartość przesłanego raportu, można sprawdzić je
    go treść.</li>
  95. </ul>
  96. </p>
  97. <!-- 
  98. <form action="index.php?go=aktualbud&sort=<? echo "$budynek_id"; ?>" method="post" ENCTYPE="multipart/form-data" >
  99. <input type="text" name="plik" value="<? echo "$plikuzytkownika_name" ?>" size="15">
  100. <input type="submit" value="Wyślij">
  101. </form>
  102.  --> 
  103. <hr>
  104. <?
  105.  $tekst = file($lokalizacja);
  106.  array_splice($tekst, 0, $wiersz_nag); //usuwam wiersze na początku
  107.  array_splice($tekst, $ilosc_mieszkan, $koniec_pliku); //usuwam wiersze na koncu
  108.  $tekst = preg_replace( '/ +/', ' ', $tekst );
  109.  foreach ($tekst as $linia)
  110.  {
  111. echo "$linia <br />";
  112. } 
  113.  $wp = fopen("$lokalizacja", 'w');
  114. fwrite( $wp, implode( '', $tekst ) );  
  115.  
  116. echo mysql_errno() . ": " . mysql_error(). "n";
  117.  
  118. mysql_query('SELECT * FROM stany');
  119. echo mysql_errno() . ": " . mysql_error() . "n";
  120.  
  121.  
  122.  
  123. $zapytanie = "LOAD DATA INFILE '". $_SERVER['DOCUMENT_ROOT'] . "/raporty/.$plikuzytkownika_name' INTO TABLE stany FIELDS TERMINATED BY ' ' LINES TERMINATED BY 'rn' (nr, woda_zimna, woda_ciepla, woda_oligoc, co )";
  124.  
  125. mysql_query($zapytanie);
  126.  if ($zapytanie) echo "Tabela została wypełniona danymi z pliku<br>";
  127.  ?>

Tylko proszę się nie śmiać, że coś robię nie tak nie jestem fachowcem staram się rozwiązać problem, nie jest to żadna praca zlecona, bardziej nadgorliwość oraz próba zmierzenia się z problemem i nauki programowania w php i MySQL-u.
Jak zobaczycie, że coś robię nie tak to proszę o poradę.
Z góry dziękuję.
Pomyślałem jescse że napiszę jak wygląda tabela stany:
  1. -- Struktura tabeli dla `stany`
  2. --
  3.  
  4. CREATE TABLE `stany` (
  5. `stany_id` int(6) NOT NULL AUTO_INCREMENT,
  6. `budynek` varchar(15) NOT NULL DEFAULT 'Bluszczanska 74',
  7. `wezel` char(3) NOT NULL DEFAULT 'o',
  8. `nr` tinyint(3) NOT NULL DEFAULT '0',
  9. `woda_zimna` float(5,3) NOT NULL DEFAULT '0.000',
  10. `woda_ciepla` float(5,3) NOT NULL DEFAULT '0.000',
  11. `woda_oligoc` float(5,3) NOT NULL DEFAULT '0.000',
  12. `co` float(5,3) NOT NULL DEFAULT '0.000',
  13. `data` varchar(10) NOT NULL DEFAULT '2006',
  14. PRIMARY KEY (`stany_id`)
  15. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=1 ;
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.