<!--p
/** ~~~~~~~ CSV IMPORT TO DATABASE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* This script reads in a comma delimited text file (.csv) and creates
* a table in the database from it.
*
* The table will be emptied to start with if it is already in the database.
*
* Have not yet tried this with a .csv file that did -not- have column
* headers as the first row
*
* Requirements: the csv file needs to be the same name as the table,
* comma separated with the columns in the same order as the table,
* and in the same dir as this script
*
* It may be necessary to run this script repeatedly to correct minor data errors in the CSV.
*
* TO FIX: Doesn't carry on as intended when it hits a data error, perhaps because
* of 'or die' code below. Maybe doesn't need to be fixed.
*
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
include("../includes/connect-string.inc.php");
$table = array( 'districtmembers'); // assign the tables that you want to import to to the table array
$columnheadings = 1; // 1 if first row of files is column headings, 0 if not and first line should be read as a record
$emailaddress = "test@nosuchdomaincom"; // contains the email address you want the results sent to
$emailfrom = "test@nosuchdomaincom"; // contains the email address that will show in the from line
$localtime = gmdate('F j, Y, g:i:s a', time() + (-18000)); // current local time
$runtime = (date("d M Y H:i:s Z ")); // set to the date and time the script was run
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// perform the required operations for every table listed in the table array
foreach ($table as $tablename) {
$deleterecords = "TRUNCATE TABLE `$tablename`"; # empty the table of its current records
mysql_query($deleterecords) or die("Query failed: $deleterecords = " . mysql_error());
$pass = 0; # intialize counters for successful record imports
$fail = 0; # intialize counters for failed record imports
$file_handle = fopen ("$tablename.csv","r");
while (($row = fgetcsv($file_handle, 1000, ",")) !== false) {
if ($row[0] == "CLUBNAME") {continue;} // skip the first line which is just the column names
// ~~~~ clear the last element in the array if it is a null value, ~~~~~//
// ~~~~ such null values will be caused by a trailing comma on the line ~~~~~//
if ($row[count($row) - 1] == "") {
unset($row[count($row) - 1]);
} // close if
$insertrecord = "Insert Into `$tablename` Values (\"".implode('", "', $row)."\")";
mysql_query($insertrecord) or die("
Query failed: $insertrecord = " . mysql_error());
if(mysql_error()) {
$fail += 1; # increments if there was an error importing the record
} else {
$pass += 1; # increments if the record was successfully imported
}
} // end while
# adds a line to the email message we will send stating how many records were imported
# and how many records failed for each table
$message .= "Table $tablename was loaded with data from the .csv file.\n\n Success=$pass\n Failure=$fail \n";
} // close foreach
echo "
Table $table[0] was loaded with data from the file <span style="color:maroon;" mce_style="color: maroon--><strong>$tablename.csv</strong>.";
echo "
$localtime.";
echo "
<ul>
<li>Success: $pass
";
echo "</li>
<li>Failure: $fail</li>
</ul>
";
print "
".gmdate('F j, Y, g:ia', time() + (-18000))." EST";
/**
* Confirmation Email
*
* Some email code ideas from
* http://www.phpnoise.com/tutorials/12/4
*
*
*/
$to = "D7040 Webmaster ";
$from = "D7040 Webmaster ";
$subject = "D7070 DB Update: Table $tablename with $pass records";
$message = "
The <span style="color: #0a0000;"><strong>$tablename</strong></span> table in the district database was updated $localtime.
<ul>
<li>Success: $pass</li>
<li>Failure: $fail</li>
</ul>
<em>This is an automated message.</em>
";
$headers = "From: $from\r\n";
$headers .= "Content-type: text/html\r\n";
/**
* Notification in browser of success/failure if notification email.
*
*/
$success = mail($to, $subject, $message, $headers);
if ($success)
echo "
The confirmation email to <strong>$to</strong> from <strong>$from</strong> was successfully sent";
else
echo "
An error occurred when sending the confirmation email to $to from $from";
?> |
<!--p
/** ~~~~~~~ CSV IMPORT TO DATABASE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* This script reads in a comma delimited text file (.csv) and creates
* a table in the database from it.
*
* The table will be emptied to start with if it is already in the database.
*
* Have not yet tried this with a .csv file that did -not- have column
* headers as the first row
*
* Requirements: the csv file needs to be the same name as the table,
* comma separated with the columns in the same order as the table,
* and in the same dir as this script
*
* It may be necessary to run this script repeatedly to correct minor data errors in the CSV.
*
* TO FIX: Doesn't carry on as intended when it hits a data error, perhaps because
* of 'or die' code below. Maybe doesn't need to be fixed.
*
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
include("../includes/connect-string.inc.php");
$table = array( 'districtmembers'); // assign the tables that you want to import to to the table array
$columnheadings = 1; // 1 if first row of files is column headings, 0 if not and first line should be read as a record
$emailaddress = "test@nosuchdomaincom"; // contains the email address you want the results sent to
$emailfrom = "test@nosuchdomaincom"; // contains the email address that will show in the from line
$localtime = gmdate('F j, Y, g:i:s a', time() + (-18000)); // current local time
$runtime = (date("d M Y H:i:s Z ")); // set to the date and time the script was run
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// perform the required operations for every table listed in the table array
foreach ($table as $tablename) {
$deleterecords = "TRUNCATE TABLE `$tablename`"; # empty the table of its current records
mysql_query($deleterecords) or die("Query failed: $deleterecords = " . mysql_error());
$pass = 0; # intialize counters for successful record imports
$fail = 0; # intialize counters for failed record imports
$file_handle = fopen ("$tablename.csv","r");
while (($row = fgetcsv($file_handle, 1000, ",")) !== false) {
if ($row[0] == "CLUBNAME") {continue;} // skip the first line which is just the column names
// ~~~~ clear the last element in the array if it is a null value, ~~~~~//
// ~~~~ such null values will be caused by a trailing comma on the line ~~~~~//
if ($row[count($row) - 1] == "") {
unset($row[count($row) - 1]);
} // close if
$insertrecord = "Insert Into `$tablename` Values (\"".implode('", "', $row)."\")";
mysql_query($insertrecord) or die("
Query failed: $insertrecord = " . mysql_error());
if(mysql_error()) {
$fail += 1; # increments if there was an error importing the record
} else {
$pass += 1; # increments if the record was successfully imported
}
} // end while
# adds a line to the email message we will send stating how many records were imported
# and how many records failed for each table
$message .= "Table $tablename was loaded with data from the .csv file.\n\n Success=$pass\n Failure=$fail \n";
} // close foreach
echo "
Table $table[0] was loaded with data from the file <span style="color:maroon;" mce_style="color: maroon--><strong>$tablename.csv</strong>.";
echo "
$localtime.";
echo "
<ul>
<li>Success: $pass
";
echo "</li>
<li>Failure: $fail</li>
</ul>
";
print "
".gmdate('F j, Y, g:ia', time() + (-18000))." EST";
/**
* Confirmation Email
*
* Some email code ideas from
* http://www.phpnoise.com/tutorials/12/4
*
*
*/
$to = "D7040 Webmaster ";
$from = "D7040 Webmaster ";
$subject = "D7070 DB Update: Table $tablename with $pass records";
$message = "
The <span style="color: #0a0000;"><strong>$tablename</strong></span> table in the district database was updated $localtime.
<ul>
<li>Success: $pass</li>
<li>Failure: $fail</li>
</ul>
<em>This is an automated message.</em>
";
$headers = "From: $from\r\n";
$headers .= "Content-type: text/html\r\n";
/**
* Notification in browser of success/failure if notification email.
*
*/
$success = mail($to, $subject, $message, $headers);
if ($success)
echo "
The confirmation email to <strong>$to</strong> from <strong>$from</strong> was successfully sent";
else
echo "
An error occurred when sending the confirmation email to $to from $from";
?>