Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][sql] upload danych do bazy
Forum PHP.pl > Forum > Przedszkole
kozioł
Witam ,

mama taki problem , mam skrypt który za zadanie ma umieścić dane z pliku csv do bazy mssql , + dodatkowe dane z formularza ,

wcześniej na lokallhoście mi to działało a na serwerze już nie ,

podczas wysyłania pliku mam takie dwa komunikaty:

Notice: Use of undefined constant tmp_name - assumed 'tmp_name' in C:\Inetpub\wwwroot\bazy\upad\upbaz.php on line 13
Notice: Undefined index: plik in C:\Inetpub\wwwroot\bazy\upad\upbaz.php on line 13

i echo: nie znaleziono pliku.

a to to kawałek kodu z 13 linią w m oim skrypcie:
  1. <?php
  2. $fieldseparator = ";";
  3. $lineseparator = "\n";
  4. $csvfile= $_FILES['plik'][tmp_name];//to jest 13 linia//
  5. $save = 1;
  6.  
  7.  
  8. if(!file_exists($csvfile)) {
  9. echo "nie znaleziono pliku.\n";
  10. ?>



co robie nie tak?.

dzięki jak zwykle za pomoc
revyag
Brakuje Ci uszów smile.gif
  1. <?php
  2. $csvfile= $_FILES['plik']['tmp_name'];
  3. ?>
kozioł
:-)

tak rzeczywiście , ale pozostał jeszcze jeden z tych błędów ,

nadal mam:

Notice: Undefined index: plik in C:\Inetpub\wwwroot\Echo\bazy\upad\upbaz.php on line 13

echo: nie znaleziono pliku

:-(
revyag
Pole input file w formularzu inaczej się nazywa. Ty masz 'plik'. Zobacz w formularzu jakie jest name i wstaw do skryptu.
kozioł
miałem mały błąd w skrypcie , poprawiłęm , teraz błędy z php sie nie wyświetlają , tylko mam komunikat echo:

że nie odnaleziono pliku:

phpinfo zwaraca mi takie coś:

Variable: _FILES["plik"]

Values: Array
(
[name] =>TEST.csv
[type] => application/vnd.ms-excel
[tmp_name] => C:\WINDOWS\TEMP\php1B87.tmp
[error] => 0
[size] => 173
)
revyag
Uploadu tak się nie robi.

  1. <?php
  2. if(is_uploaded_file($_FILES["plik"]["tmp_name"])){
  3. if(move_uploaded_file($_FILES["plik"]["tmp_name"],'jakis_katalog/jakis_plik')){
  4.  
  5. }
  6. } else {
  7.  //błąd
  8. }
  9. ?>


I zapoznaj się dokładnie z manualem.
http://pl2.php.net/manual/pl/features.file-upload.php
kozioł
ale mi nie chodzi aby cały plik umieścić na serwerze , tylko dwie kolumny które zawiera ten plik mają się znaleźć w bazie mssql
mike
Żeby jakkolwiek operować na pliku (nawet jeśli docelowo wybierzesz dwie kolumny) to musisz mieć do niego dostęp.
Co za tym idzie najpierw musisz je sobie gdzieś zapisać (uploadować).
kozioł
sprawa jest dla mnie dziwna ,

więc tak ,jak wysyłam formularz z plikiem ,

to wyskakuje komunikat że pliku nie odnaleziono ,

i jak odświeżę tę stronę , to wszystkie dane jakie chciałem ładują się do bazy ,

czemu tak sie robi ?

już nie wiem co mam robić , muszę dwa razy odświeżyć stronę z komu nikatem "nie znaleziono pliku" , i dopiero po tym dane się zapisują ,

komunikat o ilości zapisanych wierszy sie nie pojawia

może ktoś zobaczy jakiś błąd w tym kodzie , podaje praktycznie cały kod który odpowiada za insert danychy do bazy

  1. <?php
  2. $fieldseparator = ";";
  3. $lineseparator = "\n";
  4. $csvfile= $_FILES['plik']['tmp_name'];
  5. $save = 1;
  6.  
  7. if(!file_exists($csvfile)) {
  8. echo "nie znaleziono pliku.\n";
  9. }
  10.  
  11. $file = fopen($csvfile,"r");
  12.  
  13. if(!$file) {
  14. echo "nie mogę otworzyc pliku.\n";
  15. }
  16.  
  17. $size = filesize($csvfile);
  18.  
  19. if(!$size) {
  20. echo "pusty plik.\n";
  21. }
  22.  
  23. $csvcontent = fread($file,$size);
  24.  
  25. fclose($file);
  26.  
  27.  
  28. $lines = 0;
  29. $queries = "";
  30. $linearray = array();
  31.  
  32. foreach(split($lineseparator,$csvcontent) as $line) {
  33.  
  34. $lines++;
  35.  
  36. $line = trim($line,\t");
  37.  
  38. $line = str_replace("r","",$line);
  39.  
  40.  
  41. $line = str_replace("'","'",$line);
  42.  
  43.  
  44. $linearray = explode($fieldseparator,$line);
  45.  
  46. $linemssql = implode("','",$linearray);
  47.  
  48. $db=mssql_connect('1xxx.xxx.xxx','user','pass')
  49.  or die ("Nie mozna polaczyc sie z baza, spróbuj ponownie");
  50.  
  51. mssql_select_db("bazy",$db) or die ("nie mogę połączyć z bazą");
  52. $query = "INSERT INTO baza (a,b,c,d,e,f) VALUES ('$a','$b','$c','$d','$e','$f' )";
  53.  
  54.  
  55. $queries .= $query . "\n";
  56.  
  57. mssql_query($query)or die("Wykonanie zapytania nie powiodło się: ".mssql_error());
  58. }
  59.  
  60.  
  61.  
  62. echo "dopisano $lines pozycje.\n";
  63.  
  64.  
  65. ?>


to jeszcze raz ja ,


moze ktoś zerknie na to wszystko , był bym bardzo wdzięczny ,

nie wiem gdzie lezy problem , otóż doszedłem do tego że na lokallhoście nie ma problemu z komunikatem "pliku nie znaleziono"(ten sam skrypt) ,

a jak korzystam z bazy danych oraz serwera stron na serwerze właśnie ten komunikat występuje , i jak odswieżę skrypt odpowiedzialny za insert do bazy , czasami wystarczy raz, czasami 3 , to dane się zapisuja.

coś jest nie tak z tym tempem chyba bo ja takiego TEMP-a na swoim komputerze nie mam ,czyli to jest TEM gdzieś na maszynie admina , czy można to jakoś obejść?

Witam

mam takie pytanie czy można zmienić ścieżkę , [tmp_name] ,

jak robię upload danych z pliku csv do tabeli to domyślnie mi się ona podstawia C:\WINDOWS\TEMP\php1C5A.tmp
,
czy mogę wybrać aby robione było to lokalnie na maszynie a nie na serwerze w jakimś innym katalogu, ?



dzięki
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.