2010-11-01 9 views
0

Ok donc j'ai une table de base de données appelée demandes avec cette structureCharger un fichier CSV en utilisant php dans MySQL et mettre à jour aussi bien

mysql> desc requests; 
+------------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+------------+--------------+------+-----+---------+----------------+ 
| id   | int(11)  | NO | PRI | NULL | auto_increment | 
| artist  | varchar(255) | YES |  | NULL |    | 
| song  | varchar(255) | YES |  | NULL |    | 
| showdate | date   | YES |  | NULL |    | 
| amount  | float  | YES |  | NULL |    | 
+------------+--------------+------+-----+---------+----------------+ 

Voici quelques exemples de données

+----+-----------+-------------------------+------------+--------+ 
| id | artist | song     | showdate | amount | 
+----+-----------+-------------------------+------------+--------+ 
| 6 | Metallica | Hello Cruel World  | 2010-09-15 | 10.00 | 
| 7 | someone | Some some    | 2010-09-18 | 15.00 | 
| 8 | another | Some other song   | 2010-11-10 | 45.09 | 
+----+-----------+-------------------------+------------+--------+ 

je besoin d'un moyen de être en mesure de donner à l'utilisateur un moyen de télécharger un csv avec la même structure et il met à jour ou insère en fonction de ce qui est dans le csv. J'ai trouvé beaucoup de scripts en ligne mais la plupart ont un csv codé en dur qui n'est pas ce dont j'ai besoin. J'ai besoin à l'utilisateur de pouvoir télécharger le csv ... Est-ce facile avec php ....

Voici un exemple csv

id artist   song   showdate amount 
11 NewBee   great stuff 2010-09-15 12.99 
10 anotherNewbee even better 2010-09-16 34.00 
6 NewArtist  New song  2010-09-25 78.99 

Comme vous pouvez le voir, je id 6, qui est déjà dans la base de données et doit être mis à jour .. Les deux autres seront insérés

Je ne demande pas à quelqu'un d'écrire le script entier, mais si je peux obtenir une direction sur le téléchargement, puis où aller à partir de là .. ..thanks

Répondre

2

Créez la procédure de stockage comme ci-dessous et testez-la. Il est fonctionne

CREATE proc csv 

(
@id int, 
@artist varchar(50), 
@songs varchar(100), 
@showdate datetime, 
@amount float 
) 
as 
set nocount on 

if exists (select id from dummy1 where [email protected]) -- Note that dummy1 as my table. 

begin 
update dummy1 set artist= @artist where [email protected] 
update dummy1 set [email protected] where [email protected] 
update dummy1 set [email protected] where [email protected] 
update dummy1 set [email protected] where [email protected] 
end 
else 
insert into dummy1 (artist,songs,showdate,amount)values(@artist,@songs,@showdate,@amount) 
Go 
1
  1. télécharger le fichier dans un répertoire en utilisant move_uploaded_file
  2. utilisation fgetcsv lire le téléchargé csv et traiter chaque ligne que vous le souhaitez.
  3. supprimer le fichier csv
Questions connexes