Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Import CSV do bazy danych
Forum PHP.pl > Forum > PHP
seweryn
Witam,

mam kod, który importuje kody kuponów zapisane w formacie CSV do odpowiedniej tabeli bazy danych.
Niestety jeżeli kod kuponu się powtórzy, to w bazie danych zapisuje się podwójnie (oznacza to, że klient może z niego skorzystać 2 razy, a powinien tylko raz).

Co należy poprawić, aby kody kuponów (coupon_code), które się powtórzą nadpisały te już istniejące?

  1. <?php
  2.  
  3. //connect to the database
  4. $connect = mysql_connect("localhost","user","password");
  5. mysql_select_db("bazadanych",$connect); //select the table
  6. //
  7.  
  8. if ($_FILES[csv][size] > 0) {
  9.  
  10. //get the csv file
  11. $file = $_FILES[csv][tmp_name];
  12. $handle = fopen($file,"r");
  13.  
  14. //loop through the csv file and insert into database
  15. do {
  16. if ($data[0]) {
  17. mysql_query("INSERT INTO fk_awocoupon_vm (coupon_code, num_of_uses, coupon_value_type, coupon_value, min_value, discount_type, function_type, startdate, expiration, published) VALUES
  18. (
  19. '".addslashes($data[0])."',
  20. '".addslashes($data[1])."',
  21. '".addslashes($data[2])."',
  22. '".addslashes($data[3])."',
  23. '".addslashes($data[4])."',
  24. '".addslashes($data[5])."',
  25. '".addslashes($data[6])."',
  26. '".addslashes($data[7])."',
  27. '".addslashes($data[8])."',
  28. '".addslashes($data[9])."'
  29. )
  30. ");
  31. }
  32. } while ($data = fgetcsv($handle,1000,";","'"));
  33. //
  34.  
  35. //redirect
  36. header('Location: import_kuponow.php?success=1'); die;
  37.  
  38. }
  39.  
  40. ?>
  41.  
  42. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  43. <html xmlns="http://www.w3.org/1999/xhtml">
  44. <head>
  45. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  46. <title>Import kuponow CSV</title>
  47. </head>
  48.  
  49. <body>
  50.  
  51. <?php if (!empty($_GET[success])) { echo "<b>Plik zostal zaimportowany.</b><br><br>"; } //generic success notice ?>
  52.  
  53. <form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  54. Wybierz plik: <br />
  55. <input name="csv" type="file" id="csv" />
  56. <input type="submit" name="Submit" value="Importuj" />
  57. </form>
  58.  
  59. </body>
  60. </html>


Z góry bardzo dziękuję.
Kofel
Na kolumnę coupon_code robisz sobie UNIQUE. W linku: http://dev.mysql.com/doc/refman/5.0/en/insert.html masz opisane co dalej.

INSERT INTO logs (`site_id`, `time`,`hits`) VALUES (1,"2004-08-09", 15) ON DUPLICATE KEY UPDATE hits=hits+15;

Więc dodając kupon już istniejący, będziesz mógł zrobić UPDATE dzięki zdarzeniu "ON DUPLICATE KEY"
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.