tell csv import script to ignore blank rows?
Posted on
16th Feb 2014 07:03 pm by
admin
Hi i have the below script but i get an error if a row is blank ie a return in the csv file at the end i need to somehow tell it to skip the rows that have nothing on them:
Code: <?php
// define table name and csv file location and name
$supp_id = "15";
$pricecode = "6";
$csvupload = "../ccd/Catalogue_ZZMILGAT.csv";
// create DB connection
$host = "localhost";
$user = "user";
$pass = "pass";
$mydb = "db";
$table = "table";
$db = mssql_connect($host,$user,$pass);
mssql_select_db($mydb);
// delete all old data
$sql2 = "DELETE FROM ".$table." WHERE supp_id = ".$supp_id."";
mssql_query($sql2) or die("Failed to insert to db ");
// Define DB mapping (Fill in rest of the mapping in order of appearance in CSV)
$fields = array(
"manufacturer",
"ignore",
"manf_part_no",
"supp_part_no",
"description",
"rrp",
"cost_price",
"avail_qty");
// Open the CSV file
$handle = fopen($csvupload, "r") or die("Unable to open $csvupload for reading");
// Get each row's values to an array
$i = 1;
// define tab delimited or comma
while (($data = fgetcsv($handle, 512, ",")) !== FALSE) {
// First row's headers and not included, otherwise row field count must match wanted field count
if(count($data)==count($fields) && $i!=1){
$rows[] = $data;
}
elseif(count($data)!=count($fields)) {
die("Erroneus CSV file: incorrect field count on row $i");
}
$i++;
}
// Close file handle
fclose($handle);
// Create SQL
if(count($rows)==0) die("No rows found in user file");
// Remove last comma
foreach($rows as $i => $row){
$sql = "INSERT INTO ".$table." (";
foreach($fields as $field)
if($field!="ignore")
$sql .= "$field,";
$sql = substr($sql,0,-1).",supp_id, date_added, PriceCode) VALUES ";
$sql .= "(";
foreach($row as $j => $value){
if($fields[$j]!="ignore"){
if(empty($value))
$value = "0";
// Quote strings, try to remove existing quotes
elseif(!is_numeric($value))
$value = str_replace("'","",$value);
$value = str_replace(""","",$value);
$sql .= "'$value',";
}
}
$sql = substr($sql,0,-1).",'".$supp_id."', getdate(),'".$pricecode."')"; // Remove last comma
//echo "SQL became: $sql";
mssql_query($sql) or die("Failed to insert to db ");
}
?>
No comments posted yet
Your Answer:
Login to answer
110
17
Other forums
Locking mysql tables with php
Hi
BACKGROUND:
I have multiple instances of the same php script running in a WAMP environ
PHP Logging Error
When running the script on website it doesn't copy both input boxes, Only the user and not the passw
sapgui f4 help last search
I know this has to be simople. One user (maybe more) does not have the "last search saved" from the
Selecting an "empty" date formated field
How do you select an "empty" date field? I've tried the few ways I can think.
SQL> select
Insert Failing.
Hey,
I am making a Sign up page for a website, but the insert query into the Database does not se
How to show the difference between two data field in a database with php.
Hello php gurus,
how r u all... i'm not so well facing a typical problem please help me...<
Data Function is Its Not working IN IE8
This is my first time to use formums. I hope i can get solution for this problem.
view plaincopy to
Taxonomy? Classification? Categorisation?
Not sure if there is a way around this classification problem
I have a supplier who produces
array & querys help/advice.
Ok so here goes , I have a mysql database and basically here's what I need to do.
// foreach
Help building / using array
First - this is a cross-posting, if this is wrong I apologise! What started out as a MySQL query que