Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Import i sumowanie istniejących CSV
banki
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 23.11.2007

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


Witam wszystkich,

mam problem z importem pliku CSV do bazy danych. Oczywiście zwykłe importowanie działa, ale nie zadowala mnie wynik tego importu.

Załóżmy że mam plik CSV wyglądający tak:
3504,72.00,011179239474,U23947,"nazwa 1"
3506,72.00,011179238910,U23891,"nazwa 2"
3508,72.00,011179238828,U23882,"nazwa 3"
3506,22.00,011179238910,U23891,"nazwa 2"

Jak widać 2 i 4 wiersz jest taki sam, różni się jedynie drugą kolumną. W moim kodzie importuje się jednak tylko jeden wiersz, ten, który jest wyżej. W tym wypadku 4 wiersz jest pomijany. Zwracane jest coś takiego:
3504,72.00,011179239474,U23947,"nazwa 1"
3506,72.00,011179238910,U23891,"nazwa 2"
3508,72.00,011179238828,U23882,"nazwa 3"

Efekt jaki chcę osiągnąć to:
3504,72.00,011179239474,U23947,"nazwa 1"
3506,94.00,011179238910,U23891,"nazwa 2"
3508,72.00,011179238828,U23882,"nazwa 3"

Czyli wartość np. z 2 kolumny się sumowała. 1 kolumna jest unikalna i niepowtarzalna, więc rekordy, które mają tą samą liczbę w kolumnie 1 powinny sumować wynik z kolumny 2. Nie wiem czy jasno wytłumaczyłem.

Do tej pory używałem do importu takiego kodu:
  1. <?php
  2. include 'dbConfig.php';
  3. if(isset($_POST['importSubmit'])){
  4. $csvMimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain');
  5. if(!empty($_FILES['file']['name']) && in_array($_FILES['file']['type'],$csvMimes)){
  6. if(is_uploaded_file($_FILES['file']['tmp_name'])){
  7.  
  8. $csvFile = fopen($_FILES['file']['tmp_name'], 'r');
  9. fgetcsv($csvFile);
  10. while(($line = fgetcsv($csvFile)) !== FALSE){
  11. $db->query("INSERT INTO produkty (numer, ilosc, ean, kod1, nazwa) VALUES ('".$line[0]."','".$line[1]."','".$line[2]."','".$line[3]."','".$line[4]."','".$line[5]."')");
  12. }
  13. fclose($csvFile);
  14. $qstring = '?status=sukces';
  15. }else{
  16. $qstring = '?status=error';
  17. }
  18. }else{
  19. $qstring = '?status=nieprawidlowy_plik';
  20. }
  21. }
  22. header("Location: index.php".$qstring);
  23. ?>



Z góry dzięki za jakiekolwiek podpowiedzi.

Ten post edytował banki 26.06.2018, 22:56:57
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 27.09.2025 - 02:35