Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]upload pliku, gdzie robię błąd?
kozioł
post 28.04.2008, 10:14:09
Post #1





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

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


Witam ,

chciałem zrobić insert danych z pliku csv do tabeli z poziomu PHP ,
ale dowiedziałem się że nie mogę tak robic gdyż [temp_name] , jest zmienne , i musze najpierw plik csv przenieść na dysk potem go otworzyć pobrać z niego dane i dopiero zrobić insert.

Zatem robię trochę dla mnie głupią rzecz po uploaduję plik do lokalizacji na swoim dusku pliku który już tam jest .

mam taki kod aby przenieść uploadowany plik ze swojego dysku na swój dysk :-)

  1. <?php
  2. $uploaded = "E:/DANE/upload/". $_FILES['pliki']['name'];
  3.  if (is_uploaded_file($_FILES['pliki']['tmp_name'])) {
  4.  
  5.  
  6.  
  7. move_uploaded_file($_FILES['pliki']['tmp_name'],$uploaded);
  8. echo "Operacja przebiegła pomyślnie";
  9.  
  10. } else {
  11. echo 'Błąd przy przesyłaniu danych!';
  12. }
  13. ?>


i za każdym razem (oczywiście jak w formulazru wybiorę plik) , mam info że operacja porzebiegła pomyślnie ,ale pliku tam nie ma nie ważne co wpiszę w ścieżkę do uploadu

gdzie mam błąd?


dzięki za pomoc.

Ten post edytował kozioł 28.04.2008, 11:10:35
Go to the top of the page
+Quote Post
nospor
post 28.04.2008, 10:17:03
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie:
  1. <?php
  2. move_uploaded_file($_FILES['pliki']['tmp_name'],$uploaded);
  3. echo "Operacja przebiegła pomyślnie";
  4. ?>

a:
  1. <?php
  2. if (move_uploaded_file($_FILES['pliki']['tmp_name'],$uploaded))
  3. echo "Operacja przebiegła pomyślnie";
  4. else echo 'uzywaj ifow na przyszlosc a zobaczyc wlasciwy komunikat - w tym przypadku: NIE UDALO SIE :)';
  5. ?>

I wlacz raportowanie wszystkich bledow to zobaczysz czym ci pluje move_uploaded_file.

ps: i w tytulach tematu ma byc znacznik i tytul a nie ty tytul dajesz zawsze w opisie


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kozioł
post 28.04.2008, 10:35:52
Post #3





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

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


teraz mam tak:



  1. <?php
  2. $uploaded = "E:/DANE/upload/". $_FILES['pliki']['name'];
  3. if (move_uploaded_file($_FILES['pliki']['tmp_name'],$uploaded))  
  4. {
  5.  echo "Operacja przebiegła pomyślnie";
  6.  
  7.  
  8.  
  9. } else {
  10. echo 'Błąd przy przesyłaniu danych!';
  11. }
  12. ?>


z za kazdym razem echo 'Błąd przy przesyłaniu danych!';

tak się zastanawiam czy dobrze robię , bo podaję dysk do uploadu lokalnie na swojej maszynie , i nie wiem czasem czy serwer www , nie szuka tego katalogu po swojej stronie.
Go to the top of the page
+Quote Post
nospor
post 28.04.2008, 10:40:21
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no jesli twoj komp lokalny a serwer na ktorym pracujesz to dwa rozny kompy to tak, robisz blad smile.gif Przeciez serwer nie ma dostepu do twego kompa lokalnego. musisz serwerowi podac sciezke do ktorej ma dostep.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kozioł
post 28.04.2008, 10:58:55
Post #5





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

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


kurcze sciana.gif , to już nie wiem co robić ,

nie poradzę sobie chyba z tym ,

na serwerze mam swój katalog gdzie wrzucam skrypty php , i tam też są wykonywane.

czy można jakoś to inaczej rowiązać ?,

jak zwykle wielkie dzięki @nospor , za zainteresowanie moim problemem

PS. moment , udało mi się uploadować plik , jako lokalizację podałem właśnie ten katalog na serwerze gdzie mam sówj katalog do skryptów ,


teraz muszę pokombnować jak wydobyć z niego dane do insertu do tabeli a potem automatycznie go wykasować

Ten post edytował kozioł 28.04.2008, 11:02:18
Go to the top of the page
+Quote Post
mike
post 28.04.2008, 11:02:56
Post #6





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

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


~kozioł przy zakładaniu wątku masz do uzupełniania tytuł i opis.
Ty zawsze robisz po swojemu i dajesz tytuł jako opis a w tytule tylko znaczniki. To błąd.

Proszę natychmiast poprawić ten wątek i pamiętać o tym na przyszłość.
W przeciwnym wypadku wątek (i kolejne) idą do kosza.
Go to the top of the page
+Quote Post
kozioł
post 28.04.2008, 13:19:25
Post #7





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

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


ok ,

juz sobie z tym poradziłem ,to znaczy dane już wpisywane są z pliku csv do tabeli ,

ale mam inny problem , w pliku csv są dwie kolumny z danymi ,

pierwsza kolumna przenosi się normalnie a z drugiej dane zakończone są jakimś kwadracikiem , tego nie widać jak są wyświetlane na stronie ,

ale w tabeli sql widać , i przez to nie można się do nich normalnie odwołać.

myślałem że coś nie tak jest z tabelą , a niby wzsystko jest ok,

gdzie może lezeć przyczyna tego problemu?
Go to the top of the page
+Quote Post
nospor
post 28.04.2008, 13:20:37
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ten kwadracik to zapewne enter. Musisz przed wlozeniem do bazy przepuscic ten tekst przez trim()


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kozioł
post 28.04.2008, 14:02:03
Post #9





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

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


przed insertem do bazy mam tak

  1. <?php
  2. $line = trim($line,\t");
  3. ?>


ale to jest tabulator , a jak usunąc ten enter?
Go to the top of the page
+Quote Post
nospor
post 28.04.2008, 14:05:25
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




samo trim:
  1. <?php
  2. $line = trim($line);
  3. ?>


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kozioł
post 28.04.2008, 14:27:34
Post #11





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

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


guitar.gif ,


jeszcze tylko jednego brakuje mi do tego wszystkiego ,

jak zrobię insert to mam echo o ilości zapisanych danych(wierszy) ,

tylko mam tak że rozpisuje mi to na każdą linię , czyli

dopisano 1 rekordów dopisano 2 rekordów dopisano 3 rekordów dopisano 4 rekordów itd..
w kodzie mam tak
  1. <?php
  2. $lines = 0;
  3. $lines++;
  4. echo "dopisano $lines rekordów ";
  5. ?>


jak policzyć ilośc lini zapisancyh?

Ten post edytował kozioł 28.04.2008, 14:28:05
Go to the top of the page
+Quote Post
nospor
post 28.04.2008, 14:32:07
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ten kod masz w petli?
To daj $lines = 0; przed petle,
$lines++ w petli
a echo poza petle


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kozioł
post 28.04.2008, 14:58:23
Post #13





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

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


zrobiłem tak

  1. <?php
  2. $lines = 0;
  3.  
  4. $queries = "";
  5. $linearray = array();
  6. foreach(split($lineseparator,$csvcontent) as $line) {
  7. $queries .= $query . "\n";
  8.  
  9. unlink($uploaded); 
  10. $lines++;
  11. echo "dopisano $lines rekordów ";
  12. }
  13. ?>

ale nadal mam wyświetlane linie z pliku po kolei , a nie ich sumę

Ten post edytował kozioł 28.04.2008, 14:58:35
Go to the top of the page
+Quote Post
MMPrime
post 28.04.2008, 16:45:44
Post #14





Grupa: Zarejestrowani
Postów: 79
Pomógł: 12
Dołączył: 23.04.2008

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


Kod
echo "dopisano $lines rekordów ";

Daj poza pętlą foreach, czyli po }


--------------------
Go to the top of the page
+Quote Post
kozioł
post 29.04.2008, 07:24:20
Post #15





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

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


jak dam echo poza pętlę }

to nic mi się nie wyświetla
Go to the top of the page
+Quote Post
nospor
post 29.04.2008, 08:02:02
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. $lines = 0;
  3.  
  4. $queries = "";
  5. $linearray = array();
  6. foreach(split($lineseparator,$csvcontent) as $line) {
  7. $queries .= $query . "\n";
  8.  
  9. unlink($uploaded); 
  10. $lines++;
  11.  
  12. }
  13. echo "dopisano $lines rekordów ";
  14. ?>


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kozioł
post 29.04.2008, 10:56:47
Post #17





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

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


już tak próbowałem ,

jak dam echo poza petlę to nic mi się nie wyświetla sadsmiley02.gif
Go to the top of the page
+Quote Post
nospor
post 29.04.2008, 11:02:02
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




W petli ci sie wyswietla a poza nie? A wychodzi ci wogole z tej petli? Pokaz caly kod


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kozioł
post 29.04.2008, 11:36:23
Post #19





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

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


  1. <?php
  2. $fieldseparator = ";";
  3. $lineseparator = "\n";
  4.  
  5. $uploaded = "//xxx.xxx.xx.x/TEMP/". $_FILES['pliki']['name'];
  6. move_uploaded_file($_FILES['pliki']['tmp_name'],$uploaded);
  7.  
  8.  
  9.  
  10. $csvfile=$uploaded; 
  11. $save = 1;
  12.  
  13. if(!file_exists($csvfile)) {
  14. echo "nie znaleziono pliku.\n";
  15. }
  16.  
  17.  
  18. $file = fopen($csvfile,"r");
  19.  
  20. if(!$file) {
  21. echo "nie mogę otworzyc pliku.\n";
  22. }
  23.  
  24. $size = filesize($csvfile);
  25.  
  26. if(!$size) {
  27. echo "pusty plik.\n";
  28. }
  29.  
  30. $csvcontent = fread($file,$size);
  31.  
  32. fclose($file);
  33.  
  34. $lines = 0;
  35.  
  36.  
  37. $queries = "";
  38. $linearray = array();
  39.  
  40. foreach(split($lineseparator,$csvcontent) as $line) {
  41.  
  42.  
  43. $line = trim($line);
  44. $line = trim($line,\t");
  45.  
  46. $line = str_replace("r","",$line);
  47.  
  48.  
  49. $line = str_replace("'","'",$line);
  50.  
  51.  
  52. $linearray = explode($fieldseparator,$line);
  53.  
  54. $linemssql = implode("','",$linearray);
  55.  
  56. $db=mssql_connect('xxx.xx.xx.x','login','hasło')
  57.  or die ("Nie mozna polaczyc sie z baza, spróbuj ponownie");
  58.  
  59. mssql_select_db("bazy",$db) or die ("nie mogę poł&plusmn;czyć z baz&plusmn;");
  60. $query = "INSERT INTO baza (numerzam,numertow,rodzaj,wydajacy,datawyd,jednostka,hrs,UWAGI) VALUES ('$linemssql','$rodzaj','$wydajacy','$data','$odbiorca','$hrs','$uwagi' )";
  61.  
  62.  
  63. $queries .= $query . "\n";
  64. mssql_query($query)or die("Wykonanie zapytania nie powiodło się: ".mssql_error());
  65.  
  66.  
  67.  
  68.  
  69. unlink($uploaded); 
  70. $lines++;
  71.  
  72. }
  73. echo "dopisano $lines rekordów ";
  74.  
  75. ?>
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: 14.08.2025 - 03:26