Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Import CSV, Praca na zaliczenie
Anja
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.06.2007

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


Witam wszystkich. Mam na imię Anka i mam problem z zadaniem na zaliczenie :/ Musze napisać skrypt, który bedzie importował plik CSV do bazy danych, z tym, że musi on sprawdzać czy imię i nazwisko osoby nie jest już w bazie, jeżeli jest to tylko wyedytować tą osobę.

A więc tak:

Mam plik CSV o takiej mniej-więcej strukturze:
Kod
#Imie i nazwisko;Wpłata/wypłata;Stan;Wartość
** Klasa I;;;
Andrzej Andrzejczak;2;1;2.60
Bogdan Bogdanek;1;1;2.60
** Klasa II;;;
* A;;;
Celina Celińska;1;1;233.70
Dariusz Darecki;0;1;155.15
Edward Edwarczyk;1;1;395.90
* B;;;
Filip Filipiak;1;1;299.99
Grzegorz Grzegorzewski;2;0;473.72
Halina Haliniak;1;1;286.99


Legenda:
Listę wszystkich uczniów przedzielają wiersze określające przynależność ucznia do danej klasy(kategorii) i symbolu klasy (podkategorii). Nazwy kategorii poprzedzone są dwoma znakami gwiazdki * a podkategorii jednym znakiem gwiazdki.
W pierwszym wierszu znajduje się legenda pliku poprzedzona znakiem komentarza #.
Kodowanie polskich znaków w formacie Win-1250.

/************************************************/

Oto co muszę zrobić:
1. skryptem przekonwertować treśc pliku z kodowania Win-1250 na UTF-8 lub ISO 8859-2
2. wgrać do bazy zawartośc pliku: czyli skrypt sprawdza czy dany uczeń jest w bazie, jesli jest to aktualizacja danych, jeśli nie ma daodanie do bazy i/lub utworzenie kategorii. Plik bedzie wgrywany z serwera. Czyli ma być okienko w formularzu, gdzie podaj sie adres pliku.

/************************************************/

Gdy wrócę wieczorem to pokarze mój kod, który robiłam... Jak narazie to on dodaje lub aktualizuje... Albo raczej Dodaje pisząc ze aktualizuje albo na odwrót.

=== EDIT ===
oto mój kod
  1. <?php
  2. //include "header.php";
  3. include "conf.php";
  4.  
  5. if(isset($_POST['submit']))
  6.  {
  7.  $filename=$_POST['filename'];
  8.  $handle = fopen("$filename", "r");
  9.  $licznik = 0;
  10.  while (($data = fgetcsv($handle, 10000, ";")) !== FALSE)
  11.  {
  12. if($data[0][0]=='#') continue;
  13. if($data[0][0]=='*') continue;
  14. if($data[0]!="$imie")
  15. {
  16.  $import="INSERT skladka (imie,wplata,stan,wartosc) values('$data[0]','$data[1]','$data[2]','$data[3]')";
  17.  mysql_query($import) or die(mysql_error());
  18.  echo "<span style="color:green">$licznik. Dodano: $data[0]</span><br />";  
  19.  }
  20.  else
  21.  {
  22.  $query="UPDATE skladka SET imie='$data[0]', wplata='$data[1]', stan='$data[2]', wartosc='$data[3]]' WHERE imie='$imie'";
  23.  mysql_query($query);
  24.  echo "<span style="color:red">$licznik. Zaktualizowano: $data[0]</span><br />";
  25.  }
  26.  $licznik++;
  27.  }
  28.  fclose($handle);
  29.  print "Dodano $licznik nazwisk";
  30.  }
  31.  else
  32.  {
  33. print "<form action='csv.php' method='post'>";
  34. print "Dodaj plik do importu:<br>";
  35. print "<input type='text' name='filename' size='20'><br>";
  36. print "<input type='submit' name='submit' value='submit'></form>";
  37.  }
  38. ?>


Tak jak pisałam... on dodaje, czasem aktualizuje i nie wiem od czego to zależy.. a już na serio nie wiem jak zrobić aby dodawał do odpowiednich kategorii (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował Anja 8.06.2007, 23:04:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sabistik
post
Post #2


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


Proszę o zapoznanie się z tematem: Temat: Tematyka i zasady panujące na forum Przedszkole a następnie o PW z poprawnym tematem.

Do tego czasu zamknięte.

Cytat
Gdy wrócę wieczorem to pokarze mój kod, który robiłam... Jak narazie to on dodaje lub aktualizuje... Albo raczej Dodaje pisząc ze aktualizuje albo na odwrót.

To lepiej pokaż bo tu nie robimy za nikogo prac na zaliczenie.

Otwieram.
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: 11.10.2025 - 08:21