wiggst3r Posted July 24, 2008 Share Posted July 24, 2008 Hi I have a script that takes data from a database and outputs the rows into a CSV file. The only problem I have is that it removes the leading '0' from the telephone number if the telephone number in the database is in the format 01234567890 (returns: 1234567890), but if the number is in the format 01234 567890(returns 01234 567890) it outputs the leading '0'. The field in the database is a varchar(255) This is the code I have to create the CSV <?php require_once('functions.php'); $users_result = get_users_result($page = 0);//get all $fields = mysql_num_fields($users_result); $csv_output = ''; $data = ''; for ($i = 0; $i < $fields; $i++) { $csv_output .= mysql_field_name($users_result, $i) . "\t"; } while($row = mysql_fetch_row($users_result)) { $line = ''; foreach($row as $value) { if ((!isset($value)) OR ($value == "")) { $value = "\t"; } else { $value = str_replace('"', '""', $value); $value = '"' . $value . '"' . "\t"; } $line .= $value; } $data .= trim($line)."\n"; } $data = str_replace("\r","",$data); header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=subscribers.xls"); header("Pragma: no-cache"); header("Expires: 0"); print $csv_output."\n".$data; exit; ?> and the function get_users_result: function get_users_result($page) { /*if you pass in a page, it will limit the number of records. Pass in 0 to bypas this and get all records*/ $per_page = PAGINATION_NUMBER_PER_PAGE; if($page > 1) { $shown_already = $per_page*($page-1); $limit_start = $shown_already; $limit_sql = " LIMIT $limit_start, $per_page "; } elseif(!$page) { $limit_sql = ''; } else { $limit_sql= " LIMIT 0, $per_page "; } $sql="SELECT name, email, organisation, telephone, message, subscribe FROM contacts ORDER BY id $limit_sql "; $result = mysql_query($sql); return $result; } Any help appreciated. Thanks Quote Link to comment Share on other sites More sharing options...
JonnyThunder Posted July 24, 2008 Share Posted July 24, 2008 If you check your database, can you see what you expect - or is the zeros missing? If they are missing, perhaps you're storing as an integer at the time you write the data, into a text field (hence, the leading zero will be removed). You could also try changing the field type to Text. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.