Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]import danych z .csv
Cromwell
post 30.11.2009, 16:11:26
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 1.09.2009

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


Importuję dane z pliku csv do bazy danych. Skrypt wygląda tak:

  1. //formularz
  2. echo '<form action="dodaj.php" method="get">
  3. <input type="hidden" name="add" value="dodaj" />
  4. <input type="submit" value="dodaj" />
  5. </form>';
  6.  
  7. // jesli add = dodaj, wykonaj skrypt
  8. $add = $_GET['add'];
  9.  
  10. if ($add == 'dodaj')
  11. {
  12.  
  13. //definiowanie atrybutow
  14. $fieldseparator = ";";
  15. $lineseparator = "\n";
  16. $csvfile = "firmy.csv";
  17.  
  18.  
  19. if(!file_exists($csvfile)) {
  20. echo "Plik nie istnieje. Upewnij się, że umieściłeś go w katalogu skryptu.\n";
  21. }
  22.  
  23. $file = fopen($csvfile,"r");
  24. if(!$file) {
  25. echo "Błąd podczas otwierania pliku.\n";
  26. }
  27.  
  28. $size = filesize($csvfile);
  29. if(!$size) {
  30. echo "Plik jest pusty.\n";
  31. }
  32.  
  33. $csvcontent = fread($file,$size);
  34.  
  35. fclose($file);
  36.  
  37. conn();
  38.  
  39. $lines = 0;
  40. $queries = "";
  41. $linearray = array();
  42.  
  43. foreach(split($lineseparator,$csvcontent) as $line) {
  44.  
  45. $lines++;
  46. $line = trim($line," \t");
  47. $line = str_replace("\r","",$line);
  48. $line = str_replace("'","\'",$line);
  49. $linearray = explode($fieldseparator,$line);
  50. $linemysql = implode("','",$linearray);
  51. $query = "insert into firmy values('$linemysql');";
  52. $queries .= $query . "\n";
  53. @mysql_query($query);
  54. }
  55.  
  56. echo "Znaleziono $lines rekordów w pliku CSV. Wszystkie zostały dodane do bazy poprawnie.\n";
  57. }
  58.  
  59. ?>


Skrypt działa bardzo dobrze.
Chciałbym żeby rekordy które wgrywam o jakimś ID zastępowały rekordy które są już w bazie z takim samym ID.

Ten post edytował Cromwell 30.11.2009, 16:12:11
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.07.2025 - 19:50