Jump to content


CodeIgniter export ratings to CSV


1 reply to this topic

#1 FDisk

    Advanced Member

  • Members
  • PipPipPip
  • 75 posts

Posted 01 December 2011 - 12:01 PM

Model:
// insert method to your model
function getReports( $sDateStart, $sDateEnd ) {

		$csv_terminated = "\n";
		$csv_separator  = ";";
		$csv_enclosed   = '"';
		$csv_escaped    = "\"";
		$schema_insert  = "";
		$out            = '';

		if ( !is_int( $sDateStart ) ) {

			$sDateStart = strtotime( $sDateStart );
		}
		if ( !is_int( $sDateEnd ) ) {

			$sDateEnd = strtotime( $sDateEnd );
		}

		$aResults = $this->db
			->select('FROM_UNIXTIME(time) as date, internal_id as cc_name, fullname as client_name, qualification, politeness')
			->from( 'wl_support.support_ratings' )
			->where( 'time >=', $sDateStart )
			->where( 'time <=', $sDateEnd )
			->get();

		$aFields = $aResults->list_fields();

		foreach ( $aFields as $sField ) {

			$l = $csv_enclosed . str_replace( $csv_enclosed, $csv_escaped . $csv_enclosed, stripslashes( $sField ) ) . $csv_enclosed;
			$schema_insert .= $l;
			$schema_insert .= $csv_separator;
		}
		$out .= $schema_insert . $csv_terminated;

		// Format the data
		foreach ( $aResults->result_array() as $aResult ) {
			$schema_insert = '';
			foreach ( $aFields as $sField ) {

				if ( $aResult[$sField] == '0' || $aResult[$sField] != '' ) {

					if ( $csv_enclosed == '' ) {

						$schema_insert .= $aResult[$sField];
					}
					else {

						$schema_insert .= $csv_enclosed . str_replace( $csv_enclosed, $csv_escaped . $csv_enclosed, $aResult[$sField] ) . $csv_enclosed . $csv_separator;
					}
				}
				else {

					$schema_insert .= '';
				}
			}

			$out .= $schema_insert;
			$out .= $csv_terminated;
		}

		return $out;

	}
?>
Controller:
	public function ratings($sPrevStart = null, $sPrevEnd = null) {

		// Load your model - rename the "your_model_name"
		$this->load->model('your_model_name','chat');

		// If undefined - get previews month report
		if ( !isset($sPrevStart ) ) {

			$sPrevStart = date( 'Y-m-01', strtotime( '-1 month' ) );
		}
		if ( !isset( $sPrevEnd ) ) {

			$sPrevEnd = date('Y-m-01');
		}

		$output = $this->chat->getReports( $sPrevStart . ' 00:00:00', $sPrevEnd . ' 00:00:00' );

		$filename = $sPrevStart . '_' . $sPrevEnd . ' chat_ratings.csv';

		header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
		header( "Content-Length: " . strlen( $output ) );
		header( "Content-type: text/x-csv" );
		//header( "Content-type: text/csv" );
		//header( "Content-type: application/csv" );
		header( 'Content-Disposition: attachment; filename="' . $filename . '"' );
		echo $output;

		return;
	}


#2 FDisk

    Advanced Member

  • Members
  • PipPipPip
  • 75 posts

Posted 03 January 2012 - 11:55 AM

$aFields = $aResults->list_fields();
may throw an error if the $aResults are empty





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users