Extension talk:UploadCSV

Excellent! How far away do you think this extension is before ready? I was about to write exactly this same functionality but thought I better check what's available ;-) I was going to use it to importing spreadsheet information with time information added using Extension:When so that DPL queries could be used to select by account and time period etc. --Nad 11:40, 1 May 2007 (UTC)
 * Could the delimeter used be a global variable instead of fixed to semicolon? --Nad 11:46, 1 May 2007 (UTC)
 * Hi Nad, actually it is working, so I will supply a link with the source code these days. --GunterS 18:00, 2 May 2007 (UTC)
 * Excellent! thanks a lot ;-) --Nad 21:49, 2 May 2007 (UTC)

List of changes I've made
I'm testing it at www.wikifs.org/Special:UploadCSV, here's a list of the changes I've made during the process of getting it to function and also some extra features:
 * (diff) Need to use $wgRequest->getFileTempname to access uploaded data
 * (diff) Form needs enctype="multipart/form-data" for data to be uploaded
 * (diff) File reads were reading 4096 bytes, changed from fgets to fscanf to read one text-line at a time (not quite working yet)
 * (diff) Changed the template text-input into a dropdown list of all the templates
 * (diff) Allow separator to be set in form, also allows escaping separator in content (e.g. \;).
 * I noticed the header file-read was also getting 4096 bytes, so changed to read a single line
 * I also temporarily changed the form here, but it's chanegd back again now
 * (diff) Removed the update of the client-side form info from inside main row-processing loop
 * (diff) Made loop process from start-line to end-line and then update the form ready for another block of same size
 * (diff) The tmp file needs to be moved if we want to continue processing it without re-uploading (currently the moved files are not deleted)
 * (diff) Moved upload button into second column of table
 * (diff) Simplified main work loop: LoadTemplate seems redundant.
 * (diff) Changed back to fgets, omitting second parameter reads a single line (since PHP4.3)
 * --Nad

Problems

 * Uploaded files are never deleted currently - maybe add an expiry time?

Error: File not found.
Hi GunterS
 * When I used this extension I got a massage "Error: File not found.". But I had checked some things as followed.
 * Setting Localsetting.php with

$wgEnableUploads = true; $wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'mpg', 'mm', 'doc', 'txt', 'csv' );
 * The name of template( To confirm the template name such as "classmate" and "template:classmate").
 * The location of .csv file (such as C:\classmate.csv).
 * changing the interface of Mediawiki from Zh-tw to En(English).
 * But it still didn't work. Are there anythings that I hadn't tryed? Please give me a hand.

Roc michael 15:38, 22 June 2007 (UTC)
 * 1) Win XP
 * 2) MediaWiki: 1.9.3
 * 3) The AppServ Open Project - 2.5.7 for Windows
 * 4) * Apache Web Server Version 2.2.3
 * 5) * PHP Script Language Version 5.1.6
 * 6) * MySQL Database Version 5.0.24a
 * I had fixed a number of bugs etc shown in the diff's above, but I don't think the code in the downloadable zip has been updated as Gunter hasn't been around for a while... maybe on holiday or something? but the local source Extension:UploadCSV/UploadCSV.php is up to date and functional but still very beta. --Nad 20:57, 22 June 2007 (UTC)
 * Thanks Nad. when I used the code written in Extension:UploadCSV/UploadCSV.php I got an error.
 * When I finished the uploading, the filed besides the "Upload file" bottom in the "Article creation and update with csv-file" page would show the follow massage.

D:\AppServ\www\testwiki/images/php5D.tmp
 * As you know, I use Windows system, so I change the code in line 104

$curUploadFile = "$wgUploadDirectory/".basename($tmp);
 * to

$curUploadFile = "$wgUploadDirectory\".basename($tmp);
 * Then I got the error like followed.

Parse error: parse error, unexpected T_STRING in D:\AppServ\www\testwiki\extensions\UploadCSV\UploadCSV.php on line 111
 * Please do me a favor.Roc michael
 * I think the slash should stay as it was because they're ok both ways, you need to double up all backslashes since they have special meaning in PHP, but even doubled up it will probably give the same error as when using the forward slash. What is the exact error and line number that's occuring with the unmodified code? --Nad 00:27, 23 June 2007 (UTC)
 * Thanks Nad. When I pressed the Upload file button with no any change code, the temporary file "such like php5D.tmp" generated in the correct location(D:\AppServ\www\testwiki\images), but there was no any new wiki pages to be generated and the Status still stay in "start".
 * The contents of upload file named classmate.csv are followed:

pagetitle;name;lastname Classmate_1;Michael;Chang Classmate_2;Mark_1;Wu Classmate_3;Mark_2;Wu Classmate_4;Mark_3;Wu Classmate_5;Mark_4;Wu Classmate_6;Mark_5;Wu Classmate_7;Mark_6;Wu
 * and the contents of Template:classmate in my wiki are followed:


 * Lastname:
 * Name:
 * Some times the webpage showed the massage like followed:

Finished, 3 articles have been created or updated.
 * But there weren't any new pages created in my wiki.
 * Could you tell me what's wrong ,please! Roc michael

It looks like you're using it in the right way, and it's working on the wikifs.org which I see you've had a look at, so it could be a windows-specific problem. I'll have a look at it again soon and see if I can see what's wrong. I'm writing another extension which will work very well with this one called SimpleDatabase which allows you to render lists of structured articles as a spreadsheet table which you can filter by date or transaction type etc --Nad 00:14, 24 June 2007 (UTC)
 * The one running on wikifs was not the current version, I updated it and had the same problem as you on your windows one. I found this minor bug which fixed it. I've updated the code on this wiki and on organicdesign, so give it a try now. Remember this extension is still very early in development so don't use it for anything important yet ;-) --Nad 01:14, 24 June 2007 (UTC)