Location: PHPKode > scripts > Form2CSVTable > form2csvtable/form2csvtable.php
<?php
// Form2CSVTable
// Version: 2.2 (21/08/2007)
// Author: Daniel Brooke Peig (hide@address.com)
// Home-Page: http://www.danbp.org
// License: GPL 1.0
//
//
//----------ENGLISH-------------------------------------------------------------------------------------------------------------------------------------	
//
// Description: This application will convert all data submited by an HTML form to a CSV table located in the same folder as the script. The generated CSV file follows the RFC4180 standarts.
//
// Requirements: Read/Write permissions of the script folder or destination file (safer).
//
// Instructions:
// - Use the POST action on the HTML form to be submitted.
//
// - Your FORM must have the following HIDDEN fields:
//            table_name : The value from here will be used as the filename of the destination table (any extensions will be ignored)
//            redirect: The URL of the page where the user will be sent after the script is finished.
//
// - (Optional) Edit the "field_delimiter" setting to adjust how the fields will be separated in the CSV table. The default value is "," (comma) and should work in most of the cases.
//
// - (Optional) Edit the "strip_lines" setting to allow line breaks in the table cells.
//
// - Edit the "reserved_names" list on this PHP script and add all the posted vars you don't want to be exported to the CSV file. The default list already has the common names.
//
// IMPORTANT: If you are having trouble while opening the CSV files on Excel, verify the "field_delimiter" setting.
//
//
//----------PORTUGUÊS----------------------------------------------------------------------------------------------------------------------------------	
//
// Descrição: Este programa converterá todos os dados enviados através de um formulário HTML em um arquivo CSV localizado na mesma pasta do script. O arquivo CSV gerado atende a norma RFC4180.
//
// Requisitos: Permissões de Leitura e Escrita na pasta ou no arquivo CSV (apenas no CSV é mais seguro)
//
// Instruções:
// - Use a ação do tipo POST no formulário HTML.
//
// - Seu formulário precisa possuir os seguintes campos OCULTOS (Hidden):
//            table_name : O nome do arquivo da tabela de destino (quaisquer extensões serão ignoradas e substituídas por CSV)
//            redirect: A URL/endereço da página para onde o usuário será enviado após o processamento do formulário.
//
// - (Opcional)  Edite o campo "field_delimiter" para definir como as colunas serão separadas no arquivo CSV. A configuração padrão é "," (vírgula)  e deve funcionar na maioria dos casos.
//
// - (Opcional) Edite o campo "strip_lines" para permitir que as células da tabela tenham quebras de linha.
//
// - Edite a "reserved names list" abaixo e adicione o nome dos campos/variáveis do formulário que você não quer que sejam enviadas à tabela. A lista padrão já tem os nomes mais comuns.
//
// IMPORTANTE: Se você estiver tendo problemas em abrir a tabela no Excel ou em outros progamas de planilha, verifique a configuração do "field_delimiter".
//
//----------------------------------------------------------------------------------------------------------------------------------------------------------
//
// RESERVED NAMES LIST - Add here all the var names you don't want to be exported to the CSV file.
// Note: Case sensitive.
//
// LISTA DE NOMES RESERVADOS- Adicione aqui a lista de variáveis que você não quer que sejam exportadas para o arquivo CSV.
// Nota: Sensível à caixa alta.
//
$reserved_names = array("table_name", 
						"redirect",
						"submit",
						"enviar",
						"post",
						"reset",
						"limpar",
						"clean",
						"Submit",
						"Enviar");
//
//----------------------------------------------------------------------------------------------------------------------------------------------------------
//
// FIELD DELIMITER- Sets the default field delimiter in the CSV table (default: ",").
//  If you are having trouble opening the tables in Excel (latin languages version) or other programs, replace it with ";" (semi-colon).
//
// DELIMITADOR DE CÉLULA - Configura o caractere que será utilizado para separar os campos na tabela CSV. (padrão: ",").
// Se você estiver tendo problemas em abrir a tabela no Excel (principalmente em computadores configurados para o idioma português), substitua por ";" (ponto e vírgula).
//
$field_delimiter = ",";
//
//----------------------------------------------------------------------------------------------------------------------------------------------------------	
//
// STRIP LINE BREAKS- If set the line breaks will be replaced with empty spaces (default: TRUE);
// TRUE = Replace, FALSE = Don't replace the line breaks.
//
// REMOVER QUEBRAS DE LINHA - Caso seja ativado, as quebras de linha serão substituídas por espaços em branco (padrão: TRUE).
// TRUE = Substituir, FALSE = Não substitir quebras de linha.
//
$strip_lines = TRUE;
//
//
//----------------------------------------------------------------------------------------------------------------------------------------------------------	




























































//----------------------------------------------------------------------------------------------------------------------------------------------------------							
// There is nothing to change bellow

//Main variables initialization
$error = "";
$message = "";

// Verify table_name
if (!isset($_REQUEST["table_name"]))
{
$message.= "The submitted form must have the <em>table_name</em> field. <BR>";
$error = "no_table_name";
}

//Verify redirect
if (!isset($_REQUEST["redirect"]))
{
$message.= "The submitted form must have the <em>redirect</em> field.<BR>";
$error = "no_redirect";
}

if ((error!= "no_table_name") && (error!= "no_redirect"))
{
// Secondary variable initialization
$primary_table_name = explode(".",strip_tags($_REQUEST["table_name"]));
$output_table_name = $primary_table_name[0];
$redirect_url = strip_tags($_REQUEST["redirect"]);

// Clean up undesired variables and create output array
foreach($_POST as $post_key => $post_value)
{
$pop_out = FALSE;
foreach($reserved_names as $key => $item_to_delete) if ($post_key == $item_to_delete) $pop_out = TRUE;
if($pop_out == FALSE) $fields[$post_key]=$post_value;
}

// Adjusts the field values to the appropriate format
foreach($fields as $key => $field_value)
{
$fields[$key] = trim($field_value); //Removes trailing white spaces and sets the first instace of the field
$fields[$key] = strip_tags ($fields[$key]); //Strips all HTML and PHP tags (for security reasons)
if ($strip_lines == TRUE) $fields[$key] = str_replace(array("\r\n", "\r", "\n")," ",$fields[$key]); //Strips all line breaks
$fields[$key] = str_replace('\"','""',$fields[$key]); //Adjusts the double quotes
}

// Checks if the file exists. If not, add the column header.
if (!file_exists($output_table_name.".csv"))
{
foreach($fields as $key => $field_value) $output_string .= "\"".$key."\"".$field_delimiter;
$output_string.="\n";
}

// Creates the output string (line)
foreach($fields as $key => $resultado) $output_string .= "\"". $resultado."\"".$field_delimiter;
$output_string.="\n";

// Create the file (if not exists) or opens it
if(($file = fopen (($output_table_name.".csv"),"a")) === FALSE){
$message.= "Failed to open ". $output_table_name .".csv file for writing! Verify the folder permissions.<BR>";
$error="open_error";
}

// Writes the contents to the file //
if (fwrite($file, $output_string) === FALSE) {
$message.= "Failed to write content in ". $output_table_name .".csv file!<BR>";
$error="write_error";
}

// Close the file
fclose($file);

// Redirects the user to the place he belongs
if ((error!= "write_error") && (error!= "open_error")) $meta_redirect_tag = "<meta http-equiv=\"Refresh\" content=\"0;URL=".$redirect_url."\">";

}//End

// Developed by Daniel Brooke Peig (http://www.danbp.org)
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Wait...</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?=$meta_redirect_tag?>
</head>
<body>
<?=$message?>
</body>
</html>
Return current item: Form2CSVTable