Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][sql] upload danych do bazy
kozioł
post 22.04.2008, 10:09:30
Post #1





Grupa: Zarejestrowani
Postów: 209
Pomógł: 0
Dołączył: 9.12.2006

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


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
Go to the top of the page
+Quote Post
revyag
post 22.04.2008, 10:13:22
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


Brakuje Ci uszów smile.gif
  1. <?php
  2. $csvfile= $_FILES['plik']['tmp_name'];
  3. ?>


Ten post edytował revyag 22.04.2008, 10:13:32


--------------------
-------------

------
Go to the top of the page
+Quote Post
kozioł
post 22.04.2008, 10:21:06
Post #3





Grupa: Zarejestrowani
Postów: 209
Pomógł: 0
Dołączył: 9.12.2006

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


:-)

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

:-(

Ten post edytował kozioł 22.04.2008, 10:21:22
Go to the top of the page
+Quote Post
revyag
post 22.04.2008, 10:25:56
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


Pole input file w formularzu inaczej się nazywa. Ty masz 'plik'. Zobacz w formularzu jakie jest name i wstaw do skryptu.


--------------------
-------------

------
Go to the top of the page
+Quote Post
kozioł
post 22.04.2008, 11:07:20
Post #5





Grupa: Zarejestrowani
Postów: 209
Pomógł: 0
Dołączył: 9.12.2006

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


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
)
Go to the top of the page
+Quote Post
revyag
post 22.04.2008, 11:13:25
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


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


--------------------
-------------

------
Go to the top of the page
+Quote Post
kozioł
post 22.04.2008, 11:25:00
Post #7





Grupa: Zarejestrowani
Postów: 209
Pomógł: 0
Dołączył: 9.12.2006

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


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
Go to the top of the page
+Quote Post
mike
post 22.04.2008, 11:27:09
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Ż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ć).
Go to the top of the page
+Quote Post
kozioł
post 24.04.2008, 09:15:14
Post #9





Grupa: Zarejestrowani
Postów: 209
Pomógł: 0
Dołączył: 9.12.2006

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


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

Ten post edytował kozioł 22.04.2008, 16:39:18
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:47